簡體   English   中英

關於熊貓移動平均線的問題

[英]Questions on pandas moving average

我是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)

首先:您需要計算price pct_change以計算returns volatility

我的解決方案

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'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM