用python计算有效前沿_【投资组合理论】Python绘制上证50成分股有效前沿和CML

马科维茨有效前沿是经典的资产配置模型,对于给定收益率,有效前沿上的投资组合风险最小。

初学时,感觉绘制有效前沿是个极其有难度的事情,基本不可能完成。后来学了Python的一些数值计算方法,才感觉用程序绘制有效前沿其实是能完成的。

本文选择了上证50成分股进行有效前沿绘制,并用shibor代替无风险利率绘制CML。

一.公共函数

1.引入所用到的库

2.定义根据股票代码获取股票价格的函数

用到的财经数据库还是tushare,根据股票列表逐个获取行情,并将行情拼接成一个df返回。

3.定义计算投资组合收益率、风险、夏普比率的函数

因为数据是日行情,所以算出收益率和风险后要进行年化。其中计算期望收益率标准差的部分,用到的是协方差矩阵与权重的矩阵运算,从这我感受到了矩阵之美,感兴趣的可以自己进行数学推导。

二.蒙特卡洛方法生成资产组合

1.定义生成投资组合的方法

该函数有四个返回值,分别是各投资组合的各股票的权重列表,是各投资组合的收益率列表,各投资组合的波动率列表,各投资组合的夏普比率列表,其中第一个是二维数组,后三个是一维数组。

2.定义用到的变量

无风险利率本来想用一年的shibor的均值,无奈tushare的api返回空值,只好自己查了下s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值