導航:首頁 > 主力排名 > 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語言股票投資組合最優化相關的資料

熱點內容
股票凈資產與股價關系 瀏覽:424
銀行股票上漲會怎樣 瀏覽:902
股票開戶在哪裡有影響嗎 瀏覽:739
中國股票入 瀏覽:281
etf券商股票 瀏覽:208
超生醫療的股票行情 瀏覽:704
華泰股份股票最新行情 瀏覽:108
合隆香港有限公司股票 瀏覽:934
近期值得長期持有的股票 瀏覽:463
股票3個漲停板後陰跌到原點 瀏覽:615
股票交易資金流向 瀏覽:332
安卓公式股票軟體 瀏覽:580
通達信的股票軟體可以分屏顯示出來 瀏覽:975
恆力員工股票能不能買 瀏覽:497
順鑫農業股票歷史資金流向 瀏覽:281
中國農業銀行股票發行價是多少錢 瀏覽:123
股票mfl指標怎麼看 瀏覽:985
什麼軟體股票期貨都可以交易 瀏覽:460
股票可以競價過漲停價嗎 瀏覽:234
海浪信息股票今天上午收盤價 瀏覽:667