导航:首页 > 主力排名 > r语言股票投资组合最优化

r语言股票投资组合最优化

发布时间:2022-07-14 12:37:32

‘壹’ 如何用python实现Markowitz投资组合优化

多股票策略回测时常常遇到问题。
仓位如何分配?
你以为基金经理都是一拍脑袋就等分仓位了吗?
或者玩点玄乎的斐波拉契数列?
OMG,谁说的黄金比例,让我看到你的脑袋(不削才怪)!!

其实,这个问题,好多好多年前马科维茨(Markowitz)我喜爱的小马哥就给出答案——投资组合理论。

根据这个理论,我们可以对多资产的组合配置进行三方面的优化。
1.找到有效前沿。在既定的收益率下使组合的方差最小。
2.找到sharpe最优的组合(收益-风险均衡点)

3.找到风险最小的组合

跟着我,一步两步,轻松实现。
该理论基于用均值和方差来表述组合的优劣的前提。将选取几只股票,用蒙特卡洛模拟初步探究组合的有效前沿。
通过最大Sharpe和最小方差两种优化来找到最优的资产组合配置权重参数。
最后,刻画出可能的分布,两种最优以及组合的有效前沿。

注:
文中的数据API来自量化平台聚宽,在此表示感谢。
原文见【组合管理】——投资组合理论(有效前沿)(包含正态检验部分)

0.导入需要的包
import pandas as pd
import numpy as np
import statsmodels.api as sm #统计运算
import scipy.stats as scs #科学计算
import matplotlib.pyplot as plt #绘图

1.选取几只感兴趣的股票
000413 东旭光电,000063 中兴通讯,002007 华兰生物,000001 平安银行,000002 万科A
并比较一下数据(2015-01-01至2015-12-31)
In[1]:
stock_set = ['000413.XSHE','000063.XSHE','002007.XSHE','000001.XSHE','000002.XSHE']
noa = len(stock_set)
df = get_price(stock_set, start_date = '2015-01-01', end_date ='2015-12-31', 'daily', ['close'])
data = df['close']
#规范化后时序数据
(data/data.ix[0]*100).plot(figsize = (8,5))
Out[1]:

2.计算不同证券的均值、协方差
每年252个交易日,用每日收益得到年化收益。计算投资资产的协方差是构建资产组合过程的核心部分。运用pandas内置方法生产协方差矩阵。
In [2]:
returns = np.log(data / data.shift(1))
returns.mean()*252
Out[2]:

000413.XSHE 0.184516
000063.XSHE 0.176790
002007.XSHE 0.309077
000001.XSHE -0.102059
000002.XSHE 0.547441

In [3]:
returns.cov()*252
Out[3]:

3.给不同资产随机分配初始权重
由于A股不允许建立空头头寸,所有的权重系数均在0-1之间
In [4]:
weights = np.random.random(noa)
weights /= np.sum(weights)
weights
Out[4]:

array([ 0.37505798, 0.21652754, 0.31590981, 0.06087709, 0.03162758])

4.计算预期组合年化收益、组合方差和组合标准差
In [5]:
np.sum(returns.mean()*weights)*252
Out[5]:

0.21622558669017816

In [6]:
np.dot(weights.T, np.dot(returns.cov()*252,weights))
Out[6]:

0.23595133640121463

In [7]:
np.sqrt(np.dot(weights.T, np.dot(returns.cov()* 252,weights)))
Out[7]:

0.4857482232609962

5.用蒙特卡洛模拟产生大量随机组合
进行到此,我们最想知道的是给定的一个股票池(证券组合)如何找到风险和收益平衡的位置。
下面通过一次蒙特卡洛模拟,产生大量随机的权重向量,并记录随机组合的预期收益和方差。
In [8]:
port_returns = []
port_variance = []
for p in range(4000):
weights = np.random.random(noa)
weights /=np.sum(weights)
port_returns.append(np.sum(returns.mean()*252*weights))
port_variance.append(np.sqrt(np.dot(weights.T, np.dot(returns.cov()*252, weights))))
port_returns = np.array(port_returns)
port_variance = np.array(port_variance)
#无风险利率设定为4%
risk_free = 0.04
plt.figure(figsize = (8,4))
plt.scatter(port_variance, port_returns, c=(port_returns-risk_free)/port_variance, marker = 'o')
plt.grid(True)
plt.xlabel('excepted volatility')
plt.ylabel('expected return')
plt.colorbar(label = 'Sharpe ratio')
Out[8]:

6.投资组合优化1——sharpe最大
建立statistics函数来记录重要的投资组合统计数据(收益,方差和夏普比)
通过对约束最优问题的求解,得到最优解。其中约束是权重总和为1。
In [9]:
def statistics(weights):
weights = np.array(weights)
port_returns = np.sum(returns.mean()*weights)*252
port_variance = np.sqrt(np.dot(weights.T, np.dot(returns.cov()*252,weights)))
return np.array([port_returns, port_variance, port_returns/port_variance])
#最优化投资组合的推导是一个约束最优化问题
import scipy.optimize as sco
#最小化夏普指数的负值
def min_sharpe(weights):
return -statistics(weights)[2]
#约束是所有参数(权重)的总和为1。这可以用minimize函数的约定表达如下
cons = ({'type':'eq', 'fun':lambda x: np.sum(x)-1})
#我们还将参数值(权重)限制在0和1之间。这些值以多个元组组成的一个元组形式提供给最小化函数
bnds = tuple((0,1) for x in range(noa))
#优化函数调用中忽略的唯一输入是起始参数列表(对权重的初始猜测)。我们简单的使用平均分布。
opts = sco.minimize(min_sharpe, noa*[1./noa,], method = 'SLSQP', bounds = bnds, constraints = cons)
opts
Out[9]:
status: 0
success: True
njev: 4
nfev: 28
fun: -1.1623048291871221
x: array([ -3.60840218e-16, 2.24626781e-16, 1.63619563e-01, -2.27085639e-16, 8.36380437e-01])
message: 'Optimization terminated successfully.'
jac: array([ 1.81575805e-01, 5.40387481e-01, 8.18073750e-05, 1.03137662e+00, -1.60038471e-05, 0.00000000e+00])
nit: 4

得到的最优组合权重向量为:
In [10]:
opts['x'].round(3)
Out[10]:
array([-0. , 0. , 0.164, -0. , 0.836])

sharpe最大的组合3个统计数据分别为:
In [11]:
#预期收益率、预期波动率、最优夏普指数
statistics(opts['x']).round(3)
Out[11]:

array([ 0.508, 0.437, 1.162])

7.投资组合优化2——方差最小
接下来,我们通过方差最小来选出最优投资组合。
In [12]:
#但是我们定义一个函数对 方差进行最小化
def min_variance(weights):
return statistics(weights)[1]
optv = sco.minimize(min_variance, noa*[1./noa,],method = 'SLSQP', bounds = bnds, constraints = cons)
optv
Out[12]:
status: 0
success: True
njev: 7
nfev: 50
fun: 0.38542969450547221
x: array([ 1.14787640e-01, 3.28089742e-17, 2.09584008e-01, 3.53487044e-01, 3.22141307e-01])
message: 'Optimization terminated successfully.'
jac: array([ 0.3851725 , 0.43591119, 0.3861807 , 0.3849672 , 0.38553924, 0. ])
nit: 7

方差最小的最优组合权重向量及组合的统计数据分别为:
In [13]:
optv['x'].round(3)
Out[13]:
array([ 0.115, 0. , 0.21 , 0.353, 0.322])

In [14]:
#得到的预期收益率、波动率和夏普指数
statistics(optv['x']).round(3)
Out[14]:
array([ 0.226, 0.385, 0.587])

8.组合的有效前沿
有效前沿有既定的目标收益率下方差最小的投资组合构成。
在最优化时采用两个约束,1.给定目标收益率,2.投资组合权重和为1。
In [15]:
def min_variance(weights):
return statistics(weights)[1]
#在不同目标收益率水平(target_returns)循环时,最小化的一个约束条件会变化。
target_returns = np.linspace(0.0,0.5,50)
target_variance = []
for tar in target_returns:
cons = ({'type':'eq','fun':lambda x:statistics(x)[0]-tar},{'type':'eq','fun':lambda x:np.sum(x)-1})
res = sco.minimize(min_variance, noa*[1./noa,],method = 'SLSQP', bounds = bnds, constraints = cons)
target_variance.append(res['fun'])
target_variance = np.array(target_variance)

下面是最优化结果的展示。
叉号:构成的曲线是有效前沿(目标收益率下最优的投资组合)
红星:sharpe最大的投资组合
黄星:方差最小的投资组合
In [16]:
plt.figure(figsize = (8,4))
#圆圈:蒙特卡洛随机产生的组合分布
plt.scatter(port_variance, port_returns, c = port_returns/port_variance,marker = 'o')
#叉号:有效前沿
plt.scatter(target_variance,target_returns, c = target_returns/target_variance, marker = 'x')
#红星:标记最高sharpe组合
plt.plot(statistics(opts['x'])[1], statistics(opts['x'])[0], 'r*', markersize = 15.0)
#黄星:标记最小方差组合
plt.plot(statistics(optv['x'])[1], statistics(optv['x'])[0], 'y*', markersize = 15.0)
plt.grid(True)
plt.xlabel('expected volatility')
plt.ylabel('expected return')
plt.colorbar(label = 'Sharpe ratio')
Out[16]:

‘贰’ 本人持资1000万人民币,按照股票投资的基本原理和组合投资方法,跪求一种最佳的股票投资组合及理由。

楼主资金大,投资务必审慎,以下提供的仅供参考

中国最具长期投资价值股票组合

1. 招商银行:中国管理水平优秀和竞争实力最强的商业银行。该公司坚持体制创新,不断完善公司治理结构,零售业务全国领先,股权激励计划已经建立。该公司上市以来2002-2006年期末,主营业务收入增长4.23倍,净利润增长13.75倍. 2006年12月31日人均持有流通股37101股,筹码高度集中。该公司上市以来业绩持续稳定高增长,无业绩低于上年记录。

2. 中国平安:公司经营区域覆盖全国,是以保险业务为核心,以统一的品牌向客户提供包括保险、银行、证券、信托等多元化金融服务的全国领先的综合性金融服务集团。从保险深度和保险密度来看,中国与美国、欧洲以及亚洲某些较为发达的市场相比,渗透率仍然较低,显示了中国保险市场有较大的增长潜力。该公司2003-2006年以来,保险业务收入增长28%,净利润增长1.84倍。该公司上市以来业绩持续稳定增长,无业绩低于上年记录。

3. 兴业银行:兴业银行是我国首批股份制商业银行之一,是一家全国性商业银行。2004年,兴业银行在国内率先成功引进恒生银行,国际金融公司(IFC)、新加坡政府直接投资公司(GIC)等三家境外战略投资者,加快零售业务的发展是兴业业务发展模式和盈利模式战略转型的重要内容。

4. 贵州茅台:贵州茅台作为我国酱香型白酒典型代表,同时也是我国白酒行业第一个原产地域保护产品,以及国内唯一获绿色食品及有机食品称号白酒,是世界名酒中唯一纯天然发酵产品,构成持久核心竞争力。公司产品具有高毛利率和自主定
价权。该公司上市以来2000-2006年期末,主营业务收入增长3.39倍,净利润增长5.02倍。2006年12月31日人均持有流通股12825股,筹码高度集中。该公司上市以来业绩持续稳定高增长,无业绩低于上年记录。

5. 张裕A: 公司是我国乃至亚洲最大的葡萄酒生产基地,拥有上百年红酒生产历史。目前公司4种系列酒类产品年综合生产能力达12万吨,拥有遍布全国29个省、自治区和直辖市的销售网络,1363名销售人员和3886余家经销商。公司拥有领先主要竞争对手2-3年的销售网络与营销模式。公司产品具有自主定价权,目前公司主要向高档葡萄酒发展。是国内奢侈品生产的潜力型公司。该公司上市以来2000-2006年期末,主营业务利润率不断提高,主营业务收入增长1.47倍,净利润增长5.02倍。2006年12月31日人均持有流通股21073股,筹码高度集中。该公司上市以来业绩持续稳定高增长。

6. 万科: 中国房地产龙头企业,良好的法人治理结构,以王石为代表的优秀的富有竞争力的管理团队,造就了该股业绩持续高速增长。"万科"商标被国家工商行政管理总局认定为全国驰名商标,成为中国房地产界第一个,也是中国房地产界唯一国家认定的驰名商标。该公司上市以来1991-2006年期末,主营业务收入增长41.22倍,净利润增长80.98倍。2006年12月31日人均持有流通股25381股筹码高度集中。该公司上市以来业绩持续稳定高增长。

7. 双汇发展:国内最大的肉类加工企业,靠规模扩张保持较高盈利能力。控股股东双汇集团在我国肉类加工企业中第一个实现销售超百亿元。双汇集团整体产权公开挂牌转让,双汇发展实际控制人面临变更。代表美国高盛集团及鼎晖中国成长基金Ⅱ参与投标的香港罗特克斯有限公司中标 。该公司上市以来1997-2006年期末,主营业务收入增长5.99倍,净利润增长8.07倍。2006年12月31日人均持有流通股35764股,筹码高度集中。该公司上市以来持续稳定增长,无业绩低于上年记录。

8. 伊利股份:国内乳业行业龙头。公司是国内唯一在液体乳、冷饮和奶粉三大类产品中均名列三甲的企业。作为中国乳业龙头,公司通过进一步整合资源、强化品牌建设、完善产业基地布局等举措,积极提升企业核心竞争能力。“伊利”品牌作为中国驰名商标,产品畅销全国各地市场。公司已经实施股权激励机制。该公司上市以来1996-2005年期末,主营业务收入增长57.22倍,净利润增长17.18倍。2006年9月30日人均持有流通股15563股筹码高度集中。该公司上市以来持续稳定增长,无业绩低于上年记录。

9. 金地集团:中国房地产龙头企业之一,06年公司获得“2006中国房地产上市公司综合实力TOP10”第四名、“2006中国房地产上市公司财富创造能力(EVA)TOP10”该公司上市以来1996-2005年期末,主营业务收入增长5.13倍,净利润增长4.29倍。2006年12月31日人均持有流通股35362股,筹码高度集中。该公司上市以来持续稳定增长,无业绩低于上年记录。

10.瑞贝卡: 发制品行业第一股:公司已发展成为国内最大、世界一流的发制品企业,许昌是国内最成熟的人发流通市场,原材料优势明显,河南地区相对较低的人力成本也有利于提升公司竞争力,其工艺发条、女装假发、化纤发、男装发块、教习头等五大系列万余种产品销往北美、西欧、非洲等30多个国家和地区。随着国内市场的逐步开发将成为公司未来发展新的增长点。该公司上市以来2003-2006年期末,主营业务收入增长2.00倍,净利润增长1.95倍。2006年12月31日人均持股10882股,筹码高度集中。该公司上市以来业绩持续稳定高增长,无业绩低于上年记录。

11.盐湖钾肥:公司亚洲最大钾肥生产企业,钾肥资源、毛利率高:资源丰富,公司坐拥国内最大的察尔汗盐湖钾肥资源,氯化钾储量占全国已探明储量的97%,垄断了我国的钾肥资源。由于国内氯化钾产量缺口较大,每年三分之二的需求依赖进口,公司预测未来一段时间内公司产品市场价格仍将维持相对高位。察尔汗盐湖共5856平方公里,其中NaCl储量约555亿吨、锂储量800余万吨、镁储量40余亿吨,钾储量1.45亿吨,总经济价值超过17万亿元。因此,具有广阔的持续开采前景,有望实现资源的综合利用。该公司上市以来1996-2006年期末,主营业务收入增长18.61倍,净利润增长20.06倍。2006年12月31日人均持股20639股,筹码高度集中。该公司上市以来业绩持续稳定高增长,无业绩低于上年记录。

‘叁’ 如何设计最优股票投资组合方案 (任选5只,回报率不低于5%,风险尽可能低)

你可以去咨询一下大智慧的“策略投资指数”,它提供的是一揽子股票买卖,很多设计好的模型,不需要你去把我个股的买卖点和持股天数,这个指数类似大盘一样,只是你面包含的个股很少,一般都是20只左右,你可以一键下单,踢出你不想要的,然后确定,购买的时候你可以看到你选择的这个指数建议持股天数,和投资的收益率,以及成功率和失败率多少,因为有了建议持股天数,你就可以不用在意买卖点了,只要你购买后,等到了持股天数结束直接卖掉就可以了,还可以实现闪电式下单,在大智慧软件里面的快捷方式是“GW+回车”

‘肆’ 谁能给一篇有关股票投资组合的案例分析

你好.
上海大宗农产品中远期交易(现货交易)是继股票、期货后新崛起的一个交易品种,投资小,门槛低,风险可控,市场前景大,这是中国最牛的职业!响应党的号召,投资农业的最好方式,让我们的钱包尽快鼓起来!
上海大宗农产品中远期交易特点
一、 资金安全:资金自由划进划出,银行转账跟股票一样便利(第三方监管),客户资金统一由建行、工行、农行托管
二、 杠杆比例小:杠杆只有1:5,所以杠杆风险低,客户不容易爆仓
三、 最低保证金小:做一标准手上海农产品交易的保证金只需50元人民币,
四、 交易时间长:6小时交易制,周一到周五上午9:30----11.30
下午13:30----15:30 晚上19:00----21:00
五、 交易机制:多空双向交易 T+0交易制度

‘伍’ r语言中怎么求投资组合收益与风险

加载quantmod、TTR包和PerformanceAnalytics包进行计算
library(quantmod)
library(PerformanceAnalytics)
library(TTR)
rate=periodReturn(close,period="daily",type="arithmetic")
head(rate)

‘陆’ 某公司持有甲乙丙三终股票构成的证券组合,三种股票的系数分别是2.0、1.3和0.7,他们的投资额分别是60万、

不知道有没有算错哈
(1)用CAPM:
R=无风险利率+系数*(市场收益-无风险利率)
算出每个股票的收益:


R=0.05+
2(0.1-0.05)=0.15
乙:
R=0.05+1.3(0.1-.0.05)
=
0.115
丙:R=0.05+0.7(0.1-0.05)=0.085
组合的收益率就是按权重来算吧
(6/10)
*0.15
+(3/10)*0.115+(1/10)*0.085=0.133
(2)预期收益率只是把权重换一下(1/10)
*0.15
+(3/10)*0.115+(6/10)*0.085=0.1005
风险收益率是什么?

‘柒’ 学习R 语言对金融分析人士有何意义

学习 R 语言对金融分析人士有何意义?

总之,多学一点东西总是没错的。至于,学了之后会有哪些好处呢,我们就来看看专业人士有什么看法。



总之,学习了还是有很多好处的,学到的东西是你的了,不是吗?

‘捌’ 根据马科维茨的证券投资组合理论,投资者应如何决定其最优的资产组合

1.根据马科维茨模型定义,我们得到最小风险组合中各组成资产的精确权重,如下图所示。在这个投资组合中,10 只股票样本中的资产仍然存在比重分配差异。值得注意的是,收益率最高的贵州茅台和恒瑞医药的分配比例并不高,分别占总投资组合的 0.64% 和 8.91%。获得最大权重分配的是中国银行和农业银行,分别占 28.67% 和 23.84%,其收益率分别是 -0.27% 和 -6.69%。最小风险组合的平均收益为 2.95%,风险水平为 13% 。该投资组合的夏普比率为 0.211。
2.资产配置“太祖”:马科维茨平均方差模型(1990年诺贝尔经济学奖)最早的模型只考虑了三个维度的变量:资产的预期收益,预期波动率,以及资产之间的相关性。我们知道,一个理性的投资者总是希望资产的回报越高越好,风险越小越好。也就是说,我们总是希望在风险确定的情况下使预期收益率最大化,或者在预期收益率确定的情况下使风险最小化。基于这一思想,马科维茨和威廉·夏普分别获得了诺贝尔经济学奖。事实上,这种逻辑很容易在数学上实现。我们用资产回报率除以风险的比率来衡量资产的表现。Sharp ratio, treno ratio和sotino ratio都采用了这种方法。对于一篮子股票或一篮子大型资产,我们只需要给这些资产赋予不同的权重,建立一个资产组合,计算资产组合的收益、风险和收益风险比指数,然后重复前面的步骤(例如10000次),给资产赋予不同的权重,计算资产组合的回报风险比,最后,我们比较这10000次的回报风险比的大小,其中回报风险比最大的资产组合就是我们寻找的最优组合。
3.例如,经典的股票债券模型就是由此衍生出来的60%股票+ 40%债券的经典组合。虽然这种组合分散了一些风险,但由于资产只有两种类型,降低风险是远远不够的。特别是随着炫目的金融投资产品的发展,传统的股票债券模式已经不够好。

‘玖’ 股票投资组合收益率按等权和加权(流通市值为权重)分别算其风险(标准差),哪个标准差大

组合收益率的风险当然要用加权的啊,除非你的投资没有轻重,通通一样。标差大小不一定啊,当你权重的亏得多加权法大,权轻的亏得多等权的大。
股市指数干吗要加权啊,就这道理。

阅读全文

与r语言股票投资组合最优化相关的资料

热点内容
股票app开户 浏览:487
ETF买的是股票还是基金 浏览:426
中国股票交易美元人民币 浏览:983
买股票开源证券可买入0 浏览:681
北矿科技的股票成交额是什么意思 浏览:788
大数据云计算相关股票 浏览:441
香港股票行情今日走势图 浏览:711
机构软件买股票是骗局 浏览:323
华为中国企业股票 浏览:664
光伏股票最新 浏览:928
2007年工商银行股票最高是多少钱 浏览:961
股票回测app 浏览:164
ST股票退市整理期散户怎么办 浏览:573
深股股价最低的股票 浏览:333
胡立阳投资股票100招 浏览:206
周六能转进股票账户钱吗 浏览:121
公司银行贷款和发行股票利弊 浏览:746
联通股票证券投资分析报告 浏览:151
西南证券的股票趋势 浏览:530
股票中国一重分析预测 浏览:55