关注股票市场的估计都知道一个梗:周四周五是法定砸盘日。这个说法到底靠不靠谱,从统计角度上看是什么情况?今天我们用程序来做个简单的统计,看看上证指数在一周内每个交易日的涨跌情况。
思路是这样的,先获取指数K线数据,计算每天的涨跌幅。然后我们从周一到周五每个交易日建立一个数组,将每天的涨跌幅数据扔到各自对应的数组里。下一步我们用循环分析这个5个数组,找出每个数组其中涨幅>0,=0,<0分别各对应多少次。用涨幅为正的次数/涨幅为负的次数,这个比值当然在1以上越大越好,说明上涨概率高,1以下越低,说明下跌概率越高。
接下来我们写个程序实现它,数据样本我们取2年也就是500个交易日,分析标的是上证指数:
import spider
import pandas as pd
import numpy as np
# 样本周期,我们取上证指数500个交易日,也就是两年的数据
days = 500
df = spider.get_k_bars('sh000001',240,days+1,2,{'qfq_day':'None'})
# 将时间序列转换为datetime格式
df['day'] = pd.to_datetime(df['day'])
# 每周各个交易日涨跌数据
weekday_1 = []
weekday_2 = []
weekday_3 = []
weekday_4 = []
weekday_5 = []
week = [weekday_1,weekday_2,weekday_3,weekday_4,weekday_5]
# 遍历K线数据,计算涨跌幅,并将涨跌幅扔进对应数组
for index,row in df.iterrows():
if index != 0:
date = row['day'].date().weekday()+1
change = round(((row['close']-df.loc[index-1,'close'])/df.loc[index-1,'close'])*100,2)
cmd = f'weekday_{date}.append(change)'
eval(cmd)
# 定义一个函数,用于计算数组中>0,=0,<0各有多少次,以及存储对应的涨跌幅,后面要进行中位数计算
def cal_list(weeklist:list)->tuple:
up = 0
mid = 0
down = 0
up_list = []
down_list = []
for item in weeklist:
if item > 0:
up += 1
up_list.append(item)
elif item == 0:
mid += 1
elif item <0:
down += 1
down_list.append(item)
return (up,mid,down,up_list,down_list)
start_day = df.loc[0,'day'].date()
end_day = df.loc[df.shape[0]-1,'day'].date()
print('---------------------------------------------------------------------------')
print (f'上证指数 {start_day} — {end_day} ({days}个交易日)星期涨跌次数对比:')
print('---------------------------------------------------------------------------')
# 遍历各个交易日涨跌幅数组,计算概率并打印
for index,day in enumerate(week):
result = cal_list(day)
ratio = round(result[0]/result[2],2)
print (f'星期 {index+1} : 上涨次数:{result[0]} , 涨幅中位数:{round(np.median(result[3]),2)}% , 平盘次数:{result[1]} , 下跌次数:{result[2]} , 跌幅中位数:{round(np.median(result[4]),2)}% , 上涨/下跌 次数比率:{ratio}')
print('---------------------------------------------------------------------------')
来看下统计结果,符合预期,周四周五下跌的概率果然高,同理可以统计其他指数或者个股的情况,我看了一下,细节不一样,但总体来讲效果是一样的,即周四周五确实从概率上下跌的概率要高一些。基于此,从轮动策略上看,开仓时间定在周五比较合适,我之前一直是周一买,周五卖,这个我回头要修改策略。
文章评论