大家好,我是上海大俠
看了半個小時的研報和視頻,對具體實現過程含糊其辭,表述不清,模糊重點,甚至還有多處寫錯
本著知識開源的想法,我將我的探索過程公開,以期給同樣在這條路上摸索的朋友節省一點走彎路的力氣
廢話先不多講,我是個喜歡在本地數據上運行代碼的男人,因為這樣可以避免數據量超限的問題
先看一下數據格式
標的資產收盤價
我們這次對000905.SH也就是中證500做LLT指標的低延遲趨勢線
很眼熟的公式對吧?
我們把這個公式轉換成人話
這里要特別說明幾個重點
z^(-t)可以看作是t階延遲算子
LLT(T)指的是時間戳為T的LLT指標
而price(T)指的是時間戳為T的過去回看d天的平均價格
LLT指標的初始兩期就設為[0,0]即可
我們來看一下效果
d=20 2012-02~2014-03
看起來還挺平滑的
d設的越小,延遲越高,曲線越平滑
d=40 2012-02~2014-03
最后附小屎山【山(×)堆(√)】
'''
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
if __name__ == '__main__':
PriceDf = pd.read_excel('日收盤價.xlsx', index_col = 'date')
PriceDf = PriceDf.sort_index(ascending = True)
Asset = PriceDf.columns[1]
AssetSeries = PriceDf[Asset]
LLT = [0,0]
d = 40
alpha = 2/d+1
for i in range(len(AssetSeries)-2-d):
pricet_2 = np.mean(AssetSeries[i:i+d])
pricet_1 = np.mean(AssetSeries[i+1:i+1+d])
pricet = np.mean(AssetSeries[i+2:i+2+d])
LLTt_2 = LLT[i]
LLTt_1 = LLT[i+1]
LLTt = (alpha-(alpha**2)/4)*pricet + (alpha**2)/2*pricet_1 - (alpha-3/4*(alpha**2))*pricet_2+ 2*(1-alpha)*LLTt_1 - ((1-alpha)**2)**LLTt_2
LLT.append(LLTt)
#print(i)
LLTSeries = pd.Series(LLT,index = AssetSeries.index[d:])
plt.plot(LLTSeries[1800:2200])
plt.plot(AssetSeries[1800+d:2200+d])
'''