python 组合优化 回撤最小_【揭秘专业投资者的武器】经典组合优化模型 在行业资产配置中的应用示例...

组合优化的目的在于给予高收益,低风险的标的更多的权重,来提高组合整体表现。策略里面大部分情况下都会默认平均持仓的方法,由于没有考虑各个标的风险的不同,标的之间的相关性,并未较好的解决鸡蛋在一个篮子里的问题,若是稍加关注一下对组合权重的处理,就会考虑到各标的间的涨跌是否本身就有较强关联这样的问题,这个时候就是需要研究各标的历史价格的协方差、波动率等统计量。对组合中各标的权重进行适当优化调整,对组合收...
摘要由CSDN通过智能技术生成

组合优化的目的在于给予高收益,低风险的标的更多的权重,来提高组合整体表现。策略里面大部分情况下都会默认平均持仓的方法,由于没有考虑各个标的风险的不同,标的之间的相关性,并未较好的解决鸡蛋在一个篮子里的问题,若是稍加关注一下对组合权重的处理,就会考虑到各标的间的涨跌是否本身就有较强关联这样的问题,这个时候就是需要研究各标的历史价格的协方差、波动率等统计量。

对组合中各标的权重进行适当优化调整,对组合收益会有不小的提升。接下来我们将研究几种不同组合优化方法对组合收益的影响,偏重于优化目标方法设置,标的选择均是权益类资产,用于全A股测试,同时考虑到研究的实际意义,我们设置行业资产配置这样的组合情境(同样也可以做不同板块配置优化),基于申万一级行业数据,采用了较为常见的最小方差、最大夏普、风险平价这样的模型,应用在行业配置中,来探究组合优化模型效果。

1、行业指数数据准备:

接下来将28个申万一级行业指数进行研究,给予不同权重配置,首先,获取了行业指数数据,构造收益序列效果如下图所示:

08b05ce0d596c72a04d00d75c1365631.gif

2019-1-4 16:57:17 上传

下载附件 (333.06 KB)

可以看到,各行业之间涨跌存在一定的差异,但在极端行情如2015年6月之前的牛市和之后的熊市都有着一致的表现。

下面获取行业间相关性矩阵,并以热力图进行展示&#

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Markowitz有效边界是一种投资组合理论,用于优化投资组合的风险和收益。Python可以使用scipy、numpy、pandas等库来实现Markowitz有效边界和投资组合优化。 下面是一个简单的Markowitz有效边界和投资组合优化Python代码示例: ```python import pandas as pd import numpy as np from scipy.optimize import minimize # 定义投资组合收益和风险 def portfolio_return(weights, returns): return weights.T @ returns def portfolio_risk(weights, cov_matrix): return np.sqrt(weights.T @ cov_matrix @ weights) # 定义优化器 def optimize_portfolio(returns): cov_matrix = returns.cov() num_assets = len(returns.columns) args = (returns,) constraints = ({'type': 'eq', 'fun': lambda x: np.sum(x) - 1}) bounds = tuple((0, 1) for asset in range(num_assets)) initial_guess = num_assets * [1. / num_assets,] result = minimize(portfolio_risk, initial_guess, args=args, method='SLSQP', bounds=bounds, constraints=constraints) return result.x # 读取数据 data = pd.read_csv('data.csv') returns = data.set_index('Date').pct_change() returns = returns.dropna() # 优化投资组合 weights = optimize_portfolio(returns) # 计算投资组合收益和风险 portfolio_return = portfolio_return(weights, returns.mean()) portfolio_risk = portfolio_risk(weights, returns.cov()) # 输出结果 print(f'Portfolio return: {portfolio_return:.2f}') print(f'Portfolio risk: {portfolio_risk:.2f}') print(f'Portfolio weights: {weights}') ``` 在这个示例,我们首先定义了计算投资组合收益和风险的函数,然后使用scipy的优化器minimize来优化投资组合,最后计算投资组合的收益和风险,并输出结果。 需要注意的是,在实际应用,我们需要使用更多的数据和更复杂的模型来实现更精确的投资组合优化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值