python矩阵最优化_第10课 Python金融学基础——资产优化问题

本文介绍了如何使用Python解决资产优化问题,以最大化投资组合的夏普比率。通过加载和预处理股票数据,计算日收益率、波动率、夏普比率,然后采用蒙特卡罗模拟法和数学优化方法寻找最佳投资权重,从而确定最优的资产配置策略。同时,展示了如何绘制有效边界,以展示不同风险下的最优收益路径。
摘要由CSDN通过智能技术生成

在上一节课当中主要讲了几个重要的概念,包括股票的日回报率,日回报率的均值,累积回报率,波动(也就是标准差),进而以日回报率的均值和波动来计算夏普比率,并说明夏普比率可以用来衡量每份风险背后所具有的收益,以此来定量衡量我们投资决策的真实收益大小。

在这节课,我们要解决第二个问题,给定一定的股票,比如说我给你四只股票的一系列的时间序列数据,以及给你限定10000元的投资,那么如何根据所给的股票数据来划分每只股票各投资多少占比以求得最大收益,也就是我要计算出股票购买所占资本的权重,这个权重可以实现总体的夏普比率最大化。

总体大纲:

流程

一、加载数据及预处理

1.1 计算累积收益率,对数收益率和算术收益率

import pandas as pd

import matplotlib.pyplot as plt

import numpy as np

AAPL=pd.read_csv('AAPL_CLOSE',index_col='Date',parse_dates=True)

AMZN=pd.read_csv('AMZN_CLOSE',index_col='Date',parse_dates=True)

CISCO=pd.read_csv('CISCO_CLOSE',index_col='Date',parse_dates=True)

IBM=pd.read_csv('IBM_CLOSE',index_col='Date',parse_dates=True)

AAPL.head()

输出结果

接下来我们把这四只股票的收盘价都合在一张dataframe里面

stock=pd.concat([AAPL, AMZN, CISCO, IBM],axis=1)

stock.columns=['AAPL', 'AMZN', 'CISCO', 'IBM']

stock.head()

输出结果

然后我们计算一下日收益率的平均值

stock.pct_change(1).mean()

输出结果

我们接下来看一下日收益率的偏相关性所引起的偏方差。关于这里的偏相关性我是这么理解的,因为这是股票市场,并且这几只股票都是科技股票,它们的市场是趋同的,因此在这里应该是认为彼此的价格变化是有相互影响的,因此在计算波动的时候,要考虑权重转变后其他股票对单只股票的影响。偏方差函数是cov()

stock.pct_change(1).cov()

在这里以第一行为例子,AAPL是苹果股票的代号,它除了有自身波动的影响,即第一列。也有其他三只股票的影响,也就是其他三列,这部分的相关性导致的波动即为偏方差。

我们绘制一下股票的累积收益率的变化情况。

normed_ret=stock/stock.iloc[0]

normed_ret.plot(kind='line',figsize=(12,8),grid=True)

plt.legend(loc='best')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值