1.获取数据
本文以20个股票为例子,构建等权重投资组合。(本人的tushareID:498867)
首先是获取数据:
# 导入tushare
import tushare as ts
import pandas as pd
dff=pd.DataFrame()
# 初始化pro接口
pro = ts.pro_api('你的token')
name=[
'600418.SH',
'603355.SH',
'002429.SZ',
'002945.SZ',
'002423.SZ',
'300376.SZ',
'603719.SH',
'000656.SZ',
'002500.SZ',
'600985.SH',
'600392.SH',
'002085.SZ',
'601106.SH',
'600188.SH',
'002958.SZ',
'601611.SH',
'688321.SH',
'300724.SZ',
'603267.SH',
'600466.SH'] #你自己定义你的20个股票代码
for i in name:
# 导入tushare
# 拉取数据
try:
df = pro.daily(**{
"ts_code": i,
"trade_date": "",
"start_date": "20200101",
"end_date": "20220101",
"offset": "",
"limit": ""
}, fields=[
"ts_code",
"trade_date",
"open",
"high",
"low",
"close",
"pre_close",
"change",
"pct_chg",
"vol",
"amount"
])
dff[i]=df['close'].values
except:
pass
这里我们可以输出dff看一下
已经看到20个股票的收盘价格已经出来了。
# 把日期加为1列
dff['trade_date']=df['trade_date'].values
dff=dff.sort_values('trade_date')
# 设置一下以日期为索引
dff=dff.set_index('trade_date')
# 把数据存到excel
dff.to_excel("xxx\中证500部分股票近两年数据.xlsx")
2.构建等权重投资组合
年化标准差=日收益标准差*sqrt (243)(每年按照243个交易日计算)
年化收益率=(投资内收益/本金)/(投资天数/365)×100%
# 计算等权重的收益率、标准差、
import pandas as pd
import numpy as np
df4 = pd.read_excel(
io='xxx\中证500部分股票2020数据.xlsx',
usecols=['trade_date','600418.SH', '603355.SH', '002429.SZ', '002945.SZ', '002423.SZ',
'300376.SZ', '000656.SZ', '600985.SH', '600392.SH', '002085.SZ',
'601106.SH', '600188.SH', '002958.SZ', '601611.SH', '688321.SH',
'300724.SZ', '603267.SH', '002152.SZ', '603056.SH', '600968.SH']
)
df4=df4.set_index('trade_date')
df4.loc['returnlog']=np.log(df4.loc['20201231']/df4.loc['20200102'])
df4.loc['std']=df4.loc['20200102':'20201231'].std()*np.sqrt(243)
df4.loc['return']=df4.loc['20201231']/df4.loc['20200102']-1
df4
这样就可以得到每个股票的年回报,如下图
接下来进行等权计算即可