第89章 组合优化(1/2)
鹏城的雨季来得猝不及防。
窗外雨点敲打着玻璃,书房里却只有键盘敲击声和偶尔的鼠标点击。林晨盯着屏幕上密密麻麻的Python代码和金融数据图表,眉头时而紧锁,时而舒展。
过去一周,他的智能投资系统在加入了期权策略模块后,确实如回测显示的那样,开始产生稳定的现金流。备兑开仓策略在震荡市中表现稳健,每月能贡献几千元的权利金收入。这笔钱虽然不多,却像及时雨,刚好覆盖了每月的房贷利息部分。
但林晨很快发现了新问题。
“单一策略的风险太集中了”。他对着屏幕自言自语,手指无意识地敲着桌面。
系统现在同时运行着四个策略模块:A股的均值回归策略、商品期货的趋势跟踪、黄金的避险对冲,以及新加入的期权备兑开仓。每个模块都独立运行,各自根据市场信号买卖。回测时表现都不错,但实盘运行两周后,林晨发现了一个致命缺陷——当某个市场出现极端行情时,多个策略可能会同时触发止损。
上周三就是例子。美联储意外鹰派表态,全球市场剧烈波动。他的A股策略和商品策略几乎同时发出卖出信号,导致账户单日回撤达到3%。虽然期权策略的权利金收入弥补了部分损失,但这种“各自为战”的模式显然不够聪明。
“得让这些策略学会配合”。林晨打开浏览器,开始搜索“投资组合优化”。
现代投资组合理论(MPT)——这个由哈里·马科威茨在1952年提出的理论,林晨在大学金融选修课上听过,但当时只觉得是纸上谈兵。如今亲自管理真金白银时,他才意识到这套理论的价值。
“不要把鸡蛋放在同一个篮子里”,这句俗语背后的数学原理,就是马科威茨用均值-方差模型描绘的“有效前沿”。
林晨泡了杯浓茶,下载了几篇经典论文和教科书PDF。接下来的三天,他像回到了考研时期,从早到晚啃着那些充满数学公式的金融工程教材。
“预期收益率……协方差矩阵……夏普比率……”他在笔记本上写写画画,“原来如此,不仅要看单个策略的收益,还要看它们之间的相关性”。
第四天下午,林晨终于搞懂了核心思想:通过数学优化,找到在给定风险水平下收益最高的资产配置比例,或者在给定收益目标下风险最小的组合。
理论懂了,下一步是实践。
他打开JupyterNotebook,新建了一个Python文件。首先要计算各个策略的历史收益率和它们之间的相关系数矩阵。
iportpandasaspd
iportnupyasnp
frodatetiiportdateti,tidelta
#加载四个策略的历史日收益率数据
stock_returns=pd.read_csv(stock_strategy_returns.csv,dex_l=0,parse_dates=True)
future_returns=pd.read_csv(future_strategy_returns.csv,dex_l=0,parse_dates=True)
gold_returns=pd.read_csv(gold_strategy_returns.csv,dex_l=0,parse_dates=True)
optiourns=pd.read_csv(option_strategy_returns.csv,dex_l=0,parse_dates=True)
#对齐时间序列
all_returns=pd.cat([stock_returns,future_returns,gold_returns,optiourns],axis=1,jo=ner)
all_returns.ns=[股票策略期货策略黄金策略期权策略]
#计算相关系数矩阵
rretion_atrix=all_returns.rr
prt(策略间相关系数矩阵:)
prt(rretion_atrix)
运行结果让林晨眼睛一亮。
策略间相关系数矩阵:
股票策略期货策略黄金策略期权策略
股票策略1.0000000.-0.0.0
期货策略0.1.0000000.00.
黄金策略-0.0.01.000000-0.0
期权策略0.00.-0.01.000000
“黄金策略和股票策略呈弱负相关,这正是我想要的”!林晨兴奋地搓了搓手。负相关意味着当股票下跌时,黄金往往上涨,两个策略可以相互对冲。
接下来要构建有效前沿。林晨搜索了开源金融库,找到了cvxopt这个凸优化工具包。安装配置花了些时间,但一旦跑通,那个经典的抛物线形有效前沿曲线出现在屏幕上时,他忍不住握拳轻呼了一声。
本章未完,点击下一页继续阅读。