三分钟入门量化(三):计算收益率

hello,我是毛豆。本系列用最精简的代码和案例带你快速入门量化,只讲最干的干货,想要学习量化又不知道该如何上手的小伙伴赶紧看过来!

前期回顾:

三分钟入门量化(一):行情数据获取&绘制k线图

三分钟入门量化(二):Tushare Pro数据接口介绍

本期内容将介绍如何计算单期/多期收益率、以及连续复利收益率。毛豆在每周末都会更新这个系列,建议大家收藏起来方便学习。

一、单期收益率

我们以剑桥科技为例,计算其单期收益率(日收益率)。

首先导入相关的包,并认证Tushare Pro账号。

import tushare as ts
import numpy as np
import matplotlib.pyplot as plt

pro = ts.pro_api('your token')

获取剑桥科技今年以来的行情数据,不清楚如何调用数据接口的可以看我的上一期帖子。

df = pro.daily(ts_code='603083.SH', start_date='20230101', end_date='20230512')
df.head()

返回如下:

只用取每天的收盘价就可以了。为了方便计算收益率,我们通过shift()函数将收盘价滞后一期,并合并到数据框df_close。第一天的数据由于没有前项,值会变为NaN。

日收益率=(当日收盘价-昨日收盘价)/昨日收盘价

df_close=df[['ts_code','trade_date','close']]
df_close['lagclose']=df_close['close'].shift(1)
#日收益率
df_close['ret1']=(df_close['close']-df_close['lagclose'])/df_close['lagclose']
df_close.head()

返回如下:

ret1即为当日收益率。

用一行代码绘制股价走势图:

plt.plot(df_close['close'].tolist()[::-1])

返回如下:

绘制收益率曲线图:

plt.plot(df_close['ret1'].tolist()[::-1])

返回如下:

二、多期收益率

多期收益率的计算方式和单期收益率是类似的,例如:

5期收益率(周收益率)=(当日收盘价-5日前收盘价)/5日前收盘价

20期收益率(月收益率)=(当日收盘价-20日前收盘价)/20日前收盘价

k期收益率=(当日收盘价-k日前收盘价)/k日前收盘价

在操作时,我们只需要通过shift()函数将收盘价滞后k期即可。

#5期收益率
df_close['lagclose5']=df_close['close'].shift(-5)
df_close['ret5']=(df_close['close']-df_close['lagclose5'])/df_close['lagclose5']
#20期收益率
df_close['lagclose20']=df_close['close'].shift(-20)
df_close['ret20']=(df_close['close']-df_close['lagclose20'])/df_close['lagclose20']
df_close.head()

返回如下:

ret5为5期收益率(周收益率)、ret20为20期收益率(月收益率)。

同样绘制收益率曲线图:​​​​​​​

plt.plot(df_close['ret1'].tolist()[::-1])
plt.plot(df_close['ret5'].tolist()[::-1])
plt.plot(df_close['ret20'].tolist()[::-1])
plt.legend(['ret1','ret5','ret20'])

返回如下:

三、连续复利收益率

什么是复利?举个例子,投入股市初始资金10000元,如果每天都有涨停板,那么10个交易日后,我们就有10000*(1+10%)^10=25937元(复利),而不是10000*(1+10*10%)=20000元(单利)。这里面就有“利生利”的效果。

连续复利的计算方式为:FV=PV*e^(r*t)

FV表示未来的价值,PV表示现在的价值,e为自然对数的底数,r为年利率,t为投资时间。

因此单期连续复利收益率计算如下:

comporet=np.log(df_close['close']/df_close['lagclose'])
comporet.head()

​​​​​​​​​​​​​​返回如下:

5期连续复利收益率计算如下:

comporet5=np.log(df_close['close']/df_close['lagclose5'])
comporet5.head()

返回如下:

以上是今天的全部干货内容,毛豆会在每周末更新这个系列,也会在每个交易日继续和大家分享旋风冲锋量化策略的实盘情况,欢迎大家点赞关注。

回测:旋风冲锋策略说明

实盘:四月策略数据公示&常见问题说明

猜你喜欢

转载自blog.csdn.net/weixin_37475278/article/details/130809584