我是一名Python和pandas的初学者,我在制作波动率调整移动平均线方面遇到了困难,所以需要您的帮助。
波动率调整移动平均线是一种移动平均线,其移动平均期不是静态的,而是根据波动率动态调整的。
以下是我的代码:
- 从雅虎金融获取股票数据(月收盘价)
- 计算月波动率X某个常数 -> 使用动态移动平均周期的变量
- 计算动态移动平均线
我尝试过这段代码,但是失败了。我不知道问题出在哪里。如果您知道问题所在或有更好的代码建议,请让我知道。
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import pandas_datareader.data as web
def price(stock, start):
price = web.DataReader(name=stock, data_source='yahoo', start=start)['Adj Close']
price = price / price[0]
a = price.resample('M').last().to_frame()
a.columns = ['price']
return a
a = price('SPY','2000-01-01')
a['volperiod'] = round(a.rolling(12).std()*100)*2
for i in range(len(a.index)):
k = a['price'].rolling(int(a['volperiod'][i])).mean()
a['ma'][i] = k[i]
print(a)
apply
,所以x.name
将包含该行索引中的“日期”。然后,我查找a
索引中该“日期”的位置,并将其标记为“end”。在这种情况下,“+1”会更正确。稍后我会跟进附加评论。 - piRSquaredx.price
is the price column for x.v.price
is the price column forv
- piRSquared