构建市场抄底指数

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()   

想了解指数回测情况及更多细节,欢迎关注公众号 小杨养基

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ourwechat-271828

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值