【金融、量化系列】计算股票历史期望收益率(年化)、收益率标准差(年化)、夏普比率、以及股票之间月收益率的相关系数,并以夏普比率、相关系数为条件筛选股票

本文通过akshare库获取股票数据,运用CAPM计算股票期望收益率和风险指标,筛选出过去3年夏普比率大于0.2且过去1年夏普比率大于0.1的股票,再依据最小相关系数原则组建高效分散的投资组合。

使用akshare获取股票数据,利用月度数据计算每只上证50成分股的股票历史期望收益率(年化)、收益率标准差(年化)、夏普比率、以及股票之间月收益率的相关系数,并以夏普比率、相关系数为条件筛选股票。挑选5只股票组成篮子,篮子股票必须满足下列三个条件: A)过去3年的夏普比率大于0.2; B)过去1年的夏普比率大于0.1; C)这5只股票彼此之间的相关系数之和最小。

 

目录

1 获取数据

2 根据CAPM计算股票的历史期望收益率

获取三年间每个月的无风险利率rf,选取当月末十年期国债收益率为准,若非交易日则另选一天:

获取市场平均月收益率:

 计算成分股的β(beta_list):

计算期望收益率 E(ri​)=rf+β(E(rm​)−rf​):

 画历史预期收益率曲线图:

3 计算收益率标准差(年化),夏普比率,相关系数

计算收益率标准差:

 计算夏普比率(简单认为无风险收益率为0.03):

 计算相关系数并画:

4 以夏普比率、相关系数为条件筛选五只股票

挑选5只股票组成篮子,篮子股票必须满足下列三个条件: A)过去3年的夏普比率大于0.2; B)过去1年的夏普比率大于0.1; C)这5只股票彼此之间的相关系数之和最小。


1 获取数据

import akshare as ak
SH50_codes = [600000,600028,600030,600031,600036,600048,600050,600104,600196,600276,600309,600436,600438,600519,600547,600570,600585,
            600588,600690,600745,600809,600837,600887,600893,600900,601012,601066,601088,601138,601166,601211,601288,601318,601336,
            601398,601601,601628,601633,601668,601688,601728,601857,601888,601899,601919,601995,603259,603288,603501,603986]
SH50_codes = list(map(str,SH50_codes))
SH50_quotations_dic = {}
for i in SH50_codes:
    SH50_quotations_dic[i] = ak.stock_zh_a_hist(symbol=i, period='monthly', start_date="20190101", end_date='20211231', adjust="")
SH50_quotations_dic['600000']

数据预览: 

日期 开盘 收盘 最高 最低 成交量 成交额 振幅 涨跌幅 涨跌额 换手率 年化期望收益率
0 2019-01-31 9.74 10.73 10.73 9.58 4404194 4.490181e+09 11.73 9.49 0.93 1.57 73.959513
1 2019-02-28 10.82 11.74 12.15 10.62 5315299 6.002415e+09 14.26 9.41 1.01 1.89 93.274971
2 2019-03-29 11.81 11.28 12.38 10.90 9530781 1.102880e+10 12.61 -3.92 -0.46 3.39 31.214703
3 2019-04-30 11.36 11.97 12.20 11.28 12043355 1.408016e+10 8.16 6.12 0.69 4.29 34.030901
4 2019-05-31 11.75 11.13 11.94 10.95 9505417 1.080917e+10 8.27 -7.02 -0.84 3.38 -63.805606
5 2019-06-28 11.17 11.68 12.32 11.13 8190692 9.600306e+09 10.69 4.94 0.55 2.91 65.973455
6 2019-07-31 11.86 11.87 12.00 11.22 6938976 8.059537e+09 6.68 1.63 0.19 2.47 -4.536585
7 2019-08-30 11.76 11.28 11.85 10.97 6956391 7.886875e+09 7.41 -4.97 -0.59 2.48 -11.354091
8 2019-09-30 11.30 11.84 12.18 11.24 6776832 8.007390e+09 8.33 4.96 0.56 2.41 8.588689
9 2019-10-31 11.80 12.51 13.33 11.80 10874626 1.386751e+10 12.92 5.66 0.67 3.87 18.232174
10 2019-11-29 12.50 11.91 13.19 11.89 8104901 1.004877e+10 10.39 -4.80 -0.60 2.88 -17.046202
11 2019-12-31 11.96 12.37 12.55 11.70 6476828 7.865092e+09 7.14 3.86 0.46 2.30 52.115898
12 2020-01-23 12.47 11.35 12.69 11.32 5716296 6.964347e+09 11.08 -8.25 -1.02 2.03 -36.791364
13 2020-02-28 10.22 10.85 11.39 10.22 8176614 8.916090e+09 10.31 -4.41 -0.50 2.91 -32.755988
14 2020-03-31 10.95 10.15 11.32 9.82 8748286 9.265608e+09 13.82 -6.45 -0.70 3.11 -40.461173
15 2020-04-30 10.11 10.63 10.79 9.98 4444344 4.553876e+09 7.98 4.73 0.48 1.58 57.243722
16 2020-05-29 10.44 10.57 10.57 10.13 3801628 3.948919e+09 4.14 -0.56 -0.06 1.35 -16.287209
17 2020-06-30 10.63 10.58 10.87 10.35 4611493 4.880872e+09 4.92
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值