python tus股票数据分析_用TuShare验证股市中的“春节效应”

本文通过Python和Tushare库分析2000年至2020年中国股市是否存在“春节效应”,即农历年后股市上涨的概率。结果显示,上证和深证指数在春节后60天的平均涨跌幅,并计算了上涨年份和概率。

在中国股民的印象中,农历年后股市一般上涨的概率较大,所以很多投资者会在农历年前买入股票,以待年后股市上涨收取红包,这叫做股市中的“春节效应”。那么实际上存不存在这种“春节效应”呢?我们用数据说话!

我用Python语言,结合自己比较喜欢用的Tushare财经金融库,编写了一个小程序,验证了春节行情的存在。程序实现结果如下:

大家可以复制代码,任意修改数据,比如查看:“2010-2020”年,春节后“30天”、“90天”的指数表现情况

import tushare as ts #导入tushare金融财经库

from datetime import timedelta,datetime

pro = ts.pro_api('*****自己的TOKEN接口代码*****') #自己TOKEN代码获取方式如下:

"""

此程序,用的Tushare的Pro数据,需要填写自己的TOKEN接口代码,获取方式如下(注册、获取 TOKEN码都是免费的,2分钟时间即可完成下述步骤。):

3.把你的TOKEN代码,替换到下面代码中。

"""

pro = ts.pro_api()

yearlist=range(2000,2021) #定义要验证行情的起始年份

#此函数求某日期前后n天的日期

def get_date(date, time_interval):

start_date = datetime.strptime(date, '%Y%m%d')

now_date = timedelta (days=time_interval)

a = start_date + now_date

return a.strftime('%Y%m%d')

#此函数返回股市某年农历年的第一个交易日

def dygjyr(year):

df = pro.trade_cal(exchange='', start_date=str(year)+'0101', end_date=str(year)+'0331')

js=0

lb=[]

for i in df.values:

if i[1][4:6] in ["01","02","03"] and i[2]==0:

js += 1

lb.append(i[1])

else:

if i[2]==1 and len(lb)>3:

return i[1]

lb=[]

js=0

qsrlb=[dygjyr(i) for i in yearlist]

zzrlb=[get_date(i, 60) for i in qsrlb] #这里是看农历年后60日的行情表现,也可根据自己所需把60改为其它数据。

zhlb=list(zip(qsrlb,zzrlb))

sh,sz,cyb=[],[],[]

for i in zhlb:

df1 = pro.index_daily(ts_code='000001.sh -&nbsp', start_date=i[0], end_date=i[1]) #获取上证指数春节后涨跌幅

df1zf=round((df1.close.values[0]/df1.close.values[-1]-1)*100,2)

sh.append(df1zf)

df2 = pro.index_daily(ts_code='399001.SZ', start_date=i[0], end_date=i[1]) ##获取深证成指春节后涨跌幅

df2zf=round((df2.close.values[0]/df2.close.values[-1]-1)*100,2)

sz.append(df2zf)

#此函数统计涨跌年份数量

def zdtj(lb):

xds= len([i for i in lb if i<0])

szs= len([i for i in lb if i>0])

return szs,xds

print("------------股市春节效应-2000-2020年春节后两个月涨幅------------")

print("上证指数春节后表现:\n","上涨年数:",zdtj(sh)[0]," 下跌年数:",zdtj(sh)[1]," 平均涨幅%:",round(sum(sh)/len(sh),2),"上涨概率%:",round(zdtj(sh)[0]*100/len(sh),2))

print("深证指数春节后表现:\n","上涨年数:",zdtj(sz)[0]," 下跌年数:",zdtj(sz)[1]," 平均涨幅%:",round(sum(sz)/len(sz),2),"上涨概率%:",round(zdtj(sz)[0]*100/len(sz),2))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值