csdn 标题不允许出现绝望,本文原名为市场绝望指数,意思为在绝望时刻抄底。
市场绝望指数主要用股票涨跌幅的标准差与换手率的标准差的相关系数来衡量,当30个交易日中75%的交易日相关系数低于0.25时为市场绝望时刻。
from WindPy import *
import pandas as pd
import numpy as np
from datetime import datetime
import re
import matplotlib.pyplot as plt
w.start()
e,df=w.wsd("000001.SH", "pct_chg,turn", "2015-04-01", "2022-04-30", "Fill=Previous", usedf=True)
#日期参数,可调30,60,90
distant=30
plt.rcParams['savefig.dpi'] = 200 #图片像素
plt.rcParams['figure.dpi'] = 200 #分辨率
plt.plot(df.index,df['PCT_CHG'],'r')
plt.plot(df.index,df['TURN'],'b')
#生成标准差序列
df_vol=pd.DataFrame(columns=['pct_std', 'turn_std'])
for i in range(distant,len(df.index)):
df_vol.loc[df.index[i]] = [np.std(df.ix[i-distant:i,0]),np.std(df.ix[i-distant:i,1])]
#生成相关系数序列
df_vol_a=pd.DataFrame(columns=['corr'])
for i in range(distant,len(df_vol.index)):
df_vol_a.loc[df_vol.index[i]] = [df_vol.ix[i-distant:i].corr().ix[1,0]]
#回溯分析
#30天75%交易日corr<0.25
df_mark=pd.DataFrame(columns=['mark_day'])
for i in range(distant,len(df_vol_a.index)):
if np.percentile(abs(df_vol_a.ix[i-30:i]),75)<0.5:
#print(df_vol_a.index[i-1])
df_mark.loc[df_vol_a.index[i-1]] = [df_vol_a.index[i-1]]
else:
pass
e,df_price=w.wsd("000001.SH", "close", "2015-04-02", "2022-05-01", "Fill=Previous", usedf=True)
plt.plot(df_price.index,df_price['CLOSE'],'b',label='收盘价')
plt.vlines(df_mark['mark_day'], 2500,6000, colors = "c", linestyles = "dashed",label='绝望时刻')
plt.legend()
plt.show()
想了解指数回测情况及更多细节,欢迎关注公众号 小杨养基