gpt4 book ai didi

python - 关于 Pandas 移动平均线的问题

转载 作者:太空宇宙 更新时间:2023-11-04 05:21:57 31 4
gpt4 key购买 nike

我是 python 和 pandas 的初学者。我在制作波动调整移动平均线时遇到困难,所以我需要你的帮助。

波动率调整移动平均线是移动平均线的一种,其移动平均线的周期不是一成不变的,而是根据波动率动态调整的。

我想编码的是,

  1. 从雅虎财经获取股票数据(月结)
  2. 计算每月波动率 X 某个常数 --> 使用动态移动平均周期变量
  3. 计算动态移动平均线

我试过这段代码,但失败了。我不知道是什么问题。如果您知道问题所在或有任何更好的代码建议,请告诉我。

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)

最佳答案

首先:您需要计算价格pct_change,以计算 yield 波动率

我的解决方案

def price(stock, start):
price = web.DataReader(name=stock, data_source='yahoo', start=start)['Adj Close']
return price.div(price.iat[0]).resample('M').last().to_frame('price')

a = price('SPY','2000-01-01')

v = a.pct_change().rolling(12).std().dropna().mul(200).astype(int)

def dyna_mean(x):
end = a.index.get_loc(x.name)
start = end - x.price
return a.price.iloc[start:end].mean()

pd.concat([a.price, v.price, v.apply(dyna_mean, axis=1)],
axis=1, keys=['price', 'vol', 'mean'])

关于python - 关于 Pandas 移动平均线的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39992985/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com