首页 > 其他分享 >股票组合投资的风险平价策略

股票组合投资的风险平价策略

时间:2023-06-09 14:24:48浏览次数:27  
标签:策略 组合 cov TRC StockPrices 平价 weights np sum

导入每只股票的净值数据:

import pandas as pd
import numpy as np
from scipy.optimize import minimize
StockPrices = pd.DataFrame()
StockPrices = pd.read_excel('zuhe.xlsx',index_col=[0])
StockPrices.index.name = '日期'
StockPrices.head()

提取每只股票的名称:

codes=StockPrices.columns.tolist()
codes

计算股票的每日收益率:

StockReturns = StockPrices.pct_change().dropna()
StockReturns

计算他们的协方差:

R_cov = StockReturns.cov()
cov= np.array(R_cov)

构建风险平价组合:

def risk_budget_objective(weights,cov):
    weights = np.array(weights) 
    sigma = np.sqrt(np.dot(weights, np.dot(cov, weights))) 
    MRC = np.dot(cov,weights)/sigma  
    TRC = weights * MRC
    delta_TRC = [sum((i - TRC)**2) for i in TRC]
    return sum(delta_TRC)

def total_weight_constraint(x):
    return np.sum(x)-1.0
     
x0 = np.ones(cov.shape[0]) / cov.shape[0]
bnds = tuple((0,None) for x in x0)
cons = ({'type': 'eq', 'fun': total_weight_constraint})
options={'disp':False, 'maxiter':1000, 'ftol':1e-20} 

solution = minimize(risk_budget_objective, x0,args=(cov), bounds=bnds, constraints=cons, method='SLSQP', options=options)
final_weights = solution.x 
for i in range(len(final_weights)):
    print(f'{final_weights[i]:.1%}投资于{R_cov.columns[i]}')

 

标签:策略,组合,cov,TRC,StockPrices,平价,weights,np,sum
From: https://www.cnblogs.com/leon507/p/17469105.html

相关文章

  • 使用流策略来控制流
     2.使用流策略来控制流同样在SW2中aclnumber2005ACL编号2005rule5denysource10.10.122.120  仅仅拒绝一个iptrafficclassifierc1  配置流分类if-machacl2005 调用acl20052005年iF—Machacltrafficbehaviorb1 配置流行为deny  流行为拒绝tra......
  • 策略模式
    一提到策略模式,有人就觉得,它的作用是避免if-else分支判断逻辑。实际上,这种认识是很片面的。策略模式主要的作用还是解耦策略的定义、创建和使用,控制代码的复杂度,让每个部分都不至于过于复杂、代码量过多。除此之外,对于复杂代码来说,策略模式还能让其满足开闭原则,添加新策略的时候......
  • 将奇数数组与偶数数组合并为一个数组
    将奇数数组与偶数数组合并为一个数组#include<stdio.h>intmain(){inta[10];inti[10]={0,2,4,6,8};intj[10]={1,3,5,7,9};intb,c,d,e;d=e=5;c=0;for(b=0;b<d;b++){a[c]=i[b];c++;}for(b=0;b<e;b++......
  • 组合
    常用公式\[\binom{n}{m}=\frac{A_{n}^{m}}{A_{m}^{m}}=\frac{\frac{n!}{(n-m)!}}{m!}=\frac{n!}{m!(n-m)!}=\binom{n-1}{m-1}+\binom{n-1}{m}=\binom{n}{n-m}\]\[展开式:\binom{n+m}{k}=\sum_{i=0}^{k}\binom{n}{i}\cdot\binom{m}{k-i}\]组合数与二次项系数组合系数\(\tbi......
  • Java中枚举类的特殊用法-使用枚举实现单例模式和策略模式
    上面针对枚举类实现单例模式和策略模式有所涉及,下面补充。Java中使用枚举类实现单例模式为什么可以这样做?枚举类不能new,因此保证单例枚举类不能被继承类不加载时,不会实例化使用枚举类创建的单例还有一个好处,就是即使使用反射,也无法打破它的单例性质新建枚举类publicenumSingleEn......
  • 八、删除与淘汰策略
    删除策略定时删除:在设置键的过期时间的同时,创建一个定时器timer).让定时器在键的过期时间来临时,立即执行对键的删除操作定期删除:每隔一段时间程序就对数据库进行一次检查,删除里面的过期键。惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期......
  • 网格交易策略
    网格交易是一种非常稳定的仓位管理策略,理论上胜率可以达到100%。策略思想:以相对下跌的价格为基准划定若干挡位,随后将每天的价格与前一天进行比较,根据挡位变化进行补仓或减仓。【投资标的】处于震荡市(价格整体在一个区间内反复波动)价格波动幅度足够大(交易有成本,波动幅度太小,获得的......
  • mysql安全策略
    基于8.x版本安装插件mysql>installpluginCONNECTION_CONTROLsoname'connection_control.so';QueryOK,0rowsaffected(0.01sec)mysql>installpluginCONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTSsoname'connection_control.so';QueryOK,......
  • 最大为N的数字组合
    给定一个按 非递减顺序 排列的数字数组 digits 。你可以用任意次数 digits[i] 来写的数字。例如,如果 digits=['1','3','5'],我们可以写数字,如 '13', '551',和 '1351315'。返回可以生成的小于或等于给定整数n的正整数的个数1.数位dpclassSolution{public:......
  • 武汉星起航:亚马逊卖家的选品思维分享—打造成功的产品组合
    在亚马逊这样竞争激烈的电商平台上,卖家的选品决策至关重要。一个成功的产品组合能够为卖家带来销售增长和市场优势。以下是武汉星起航整理的亚马逊卖家应该具备的选品思维,以帮助他们做出明智的选品决策:深入市场研究:在选择产品之前,卖家应该进行深入的市场研究。了解目标市场的趋势、......