大家好,我是上海大侠
看了半个小时的研报和视频,对具体实现过程含糊其辞,表述不清,模糊重点,甚至还有多处写错
本着知识开源的想法,我将我的探索过程公开,以期给同样在这条路上摸索的朋友节省一点走弯路的力气
废话先不多讲,我是个喜欢在本地数据上运行代码的男人,因为这样可以避免数据量超限的问题
先看一下数据格式
我们这次对000905.SH也就是中证500做LLT指标的低延迟趋势线
我们把这个公式转换成人话
这里要特别说明几个重点
z^(-t)可以看作是t阶延迟算子
LLT(T)指的是时间戳为T的LLT指标
而price(T)指的是时间戳为T的过去回看d天的平均价格
LLT指标的初始两期就设为[0,0]即可
我们来看一下效果
看起来还挺平滑的
d设的越小,延迟越高,曲线越平滑
最后附小屎山【山(×)堆(√)】
'''
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])
'''