在上一节课当中主要讲了几个重要的概念,包括股票的日回报率,日回报率的均值,累积回报率,波动(也就是标准差),进而以日回报率的均值和波动来计算夏普比率,并说明夏普比率可以用来衡量每份风险背后所具有的收益,以此来定量衡量我们投资决策的真实收益大小。
在这节课,我们要解决第二个问题,给定一定的股票,比如说我给你四只股票的一系列的时间序列数据,以及给你限定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')