python構建股票投資組合
『壹』 如何用Python和機器學習炒股賺錢
相信很多人都想過讓人工智慧來幫你賺錢,但到底該如何做呢?瑞士日內瓦的一位金融數據顧問 Gaëtan Rickter 近日發表文章介紹了他利用 Python 和機器學習來幫助炒股的經驗,其最終成果的收益率跑贏了長期處於牛市的標准普爾 500 指數。雖然這篇文章並沒有將他的方法完全徹底公開,但已公開的內容或許能給我們帶來如何用人工智慧炒股的啟迪。
我終於跑贏了標准普爾 500 指數 10 個百分點!聽起來可能不是很多,但是當我們處理的是大量流動性很高的資本時,對沖基金的利潤就相當可觀。更激進的做法還能得到更高的回報。
這一切都始於我閱讀了 Gur Huberman 的一篇題為《Contagious Speculation and a Cure for Cancer: A Non-Event that Made Stock Prices Soar》的論文。該研究描述了一件發生在 1998 年的涉及到一家上市公司 EntreMed(當時股票代碼是 ENMD)的事件:
「星期天《紐約時報》上發表的一篇關於癌症治療新葯開發潛力的文章導致 EntreMed 的股價從周五收盤時的 12.063 飆升至 85,在周一收盤時接近 52。在接下來的三周,它的收盤價都在 30 以上。這股投資熱情也讓其它生物科技股得到了溢價。但是,這個癌症研究方面的可能突破在至少五個月前就已經被 Nature 期刊和各種流行的報紙報道過了,其中甚至包括《泰晤士報》!因此,僅僅是熱情的公眾關注就能引發股價的持續上漲,即便實際上並沒有出現真正的新信息。」
在研究者給出的許多有見地的觀察中,其中有一個總結很突出:
「(股價)運動可能會集中於有一些共同之處的股票上,但這些共同之處不一定要是經濟基礎。」
我就想,能不能基於通常所用的指標之外的其它指標來劃分股票。我開始在資料庫裡面挖掘,幾周之後我發現了一個,其包含了一個分數,描述了股票和元素周期表中的元素之間的「已知和隱藏關系」的強度。
我有計算基因組學的背景,這讓我想起了基因和它們的細胞信號網路之間的關系是如何地不為人所知。但是,當我們分析數據時,我們又會開始看到我們之前可能無法預測的新關系和相關性。
如果你使用機器學習,就可能在具有已知和隱藏關系的上市公司的寄生、共生和共情關系之上搶佔先機,這是很有趣而且可以盈利的。最後,一個人的盈利能力似乎完全關乎他在生成這些類別的數據時想出特徵標簽(即概念(concept))的強大組合的能力。
我在這類模型上的下一次迭代應該會包含一個用於自動生成特徵組合或獨特列表的單獨演算法。也許會基於近乎實時的事件,這可能會影響那些具有隻有配備了無監督學習演算法的人類才能預測的隱藏關系的股票組。
『貳』 如何用python實現Markowitz投資組合優化
m投資組合模型的一個很有力的替代是Index model,或者我們說的single factor model,因為markowitz是需要計算全部股票的協方差和方差的,如果證券的數量很多,計算量會非常大(這些在investment的參考書裡面有),我下面就把原話打給你 first,the model requires a huge number of estimates to fill the covariance matrix.second ,the model does not provide any guideline to the forecasting to the security risk premiums that are essential to construct the efficient frontier of risky assets.第一個是硬傷,單單計算NYSE的股票就要4.5百萬的估計量,而同等條件下index model才需要9002個估計量,這就是為什麼markowitz模型很多人不願意用的願意,而優點也很直接,如果你的估算值是准確的,那麼m模型的結果比其他都准確
『叄』 如何構建投資組合
全民投基熱情不減,持有人散戶化程度越來越高。近期大盤高位震盪,在基金高收益背後也蘊含著高風險。不要把雞蛋放在同一個籃子里,控制風險是資本市場投資的首當其沖的考慮。散戶投資基金最好作配置組合,有效地分散風險。
構建基金核心組合
理性投資是成功理財第一步。在震盪市場里,從300多隻基金中選擇出能夠獲得收益的基金越來越難。有效地進行挑選配置組合不僅能分散風險,也可能獲得不錯收益。理財專家表示,在建立基金配置組合時,最好有一個核心組合。這個核心組合是對投資者最終投資目標的實現起決定性作用的。他表示這一核心組合可以佔到整個基金投資組合的60-80%。
核心基金最好是業績穩定、特點鮮明的基金。特別是專門投資某一行業、如服務、資源等基金。
另外,作投資組合並不是購買的基金多了就是在做組合,理財專家表示,構建基金核心組合才是最重要的。目前牛市情況下,偏股性基金肯定是核心組合中主要的投資品種,而為了分散風險,也不妨在核心組合之外,買點債券或者貨幣型基金。
在選擇基金核心組合的時候,最好在偏股型基金中選擇不同的投資標的基金。投資者在投資前應該對基金的股票倉位、十大重倉股等有所研究。特別同時炒股的基民,可以重倉配置自己看好行業的基金。最好選擇2-3家優秀的基金公司的3-5隻基金產品,新老基金搭配著進行也不錯。
一次性投資與定投相組合
除了要構建基金核心組合外,投資基金在方式還需要注意一次性投資和定投相結合的方式。
理財專家建議,進行投資組合時,基金的數量太少,容易造成投資組合的劇烈波動,影響收益的穩定性,無法有效地分散風險;基金的數量太多,則無法提高分散風險的效率,基金組合的安全性並不會因基金數量的增加而增加。
就目前我國的市場情況而言,老基民推薦基金組合里基金數量最好在5隻之內。而這些基金有的適合做一次性投資,有的可以做定投,需要區別對待。
在投資配置比例上,和股票市場關聯度高的基金可以配置在總資金的80%以上。如股票基金配置40%,而指數基金配置20%,偏股型基金配置20%,而債券基金可以配置在總資產的10-20%。
數據顯示,上漲行情中,基金定投收益較高。而目前大盤高位震盪的行情下,指數型基金定投就比一次性投入的風險小很多。而在股市長期看好的情況下,股票型基金在大盤一個大跌日一次性買入將獲得不菲收益。在投資數量在5隻基金的基礎上,有理財專家表示可以選取一兩只指數型基金做定投。而股票型基金,關注其風格和倉位變化,可以分批買入。
『肆』 怎樣用 Python 寫一個股票自動交易的程序
方法一
前期的數據抓取和分析可能python都寫好了,所以差這交易指令介面最後一步。對於股票的散戶,正規的法子是華寶,國信,興業這樣願意給介面的券商,但貌似開戶費很高才給這權利,而且只有lts,ctp這樣的c++介面,沒python版就需要你自己封裝。
方法二
是wind這樣的軟體也有直接的介面,支持部分券商,但也貴,幾萬一年是要的。
方法三
滑鼠鍵盤模擬法,很復雜的,就是模擬鍵盤滑鼠去操作一些軟體,比如券商版交易軟體和大智慧之類的。
方法四
就是找到這些軟體的關於交易指令的底層代碼並更改,不過T+1的規則下,預測准確率的重要性高於交易的及時性,花功夫做數據分析就好,交易就人工完成吧
『伍』 簡述投資基金經理構造股票投資組合的一般流程
一、要有自己的投資理念。
許多投資人盲目地跟著市場、他人買賣基金,哪只基金漲幅居前就追買哪只,完全沒有把資金的安全邊際放在第一位。建議入市之前,好好學一學基金理財知識,權衡自己的風險承受能力,同時了解國家的經濟動向或趨勢,然後把握投資策略。
二、明確目標持續性投資。
各類股票基金各有其特色,各有其特點。如果你正處於生命的積累階段,要投資未來購房、孩子上學費用,那麼,你就首選成長型股票基金為主;如果你正處於生命周期的分配階段,既要供孩子上學,又要自己養老,那麼,你就選收入型股票基金(價值型基金)為主。總之,一定要清楚自己持有基金組合所期望達到的目標,堅持持續性地投資。
三、投資一定要有核心組合。
你的投資組合的核心部分應當有哪些主流基金組成?我非常認同股票投資的「核心——衛星」策略,在投資基金時也同樣適用。你應從股票基金中(主動型、偏股票型、平衡型)選擇適合自己的、業績穩定的優秀基金公司的基金構成核心組合。年輕的可占你基金組合資金的80%,年老的可佔40%——50%,另用10%投資防守型基金(債券基金和貨幣基金),用10%投資在市場中業績表現出色的為你的衛星基金,獲得較高收益。
四、投資指數基金
「不投資指數基金是你的錯。」借用巴菲特的話來指導自己的投資技巧。今年的市場也證明了他的經驗。因而,在每種組合投資中,應擁有1——2隻股票市場的指數基金。如嘉實300和中小板ETF,這種擁有整個市場法不失為明智的方法。
五、不要將同類型基金做組合。
盡管各基金的名稱不同,但注意「不管切得多薄,香腸片也還是香腸。」將同類型基金做組合是無效的。如果持有同類基金只數過多,會使你的組合失衡,不知不覺中讓你放大了市場風險,阻礙了你的投資目標的實現。有效的基金組合應是不同類型如股票型(主動型、偏股型和平衡型)、債券型、貨幣型等不同類型。
六、投資的期望值不要過高。
市場經歷了2005年的股改,助推了基金翻番的業績,在很大程度上可以說是對股改前市場的補漲。這樣的業績在成熟市場是不可遇見的。投資者應降低對市場的投資收益。針對我們的新興市場,把預期收益調整約為30%左右就行了。
『陸』 股票投資組合如何建立
股票投資組合,是指投資者在進行股票投資時,根據各種股票的風險程度、獲利能力等方面的因素,按照一定的規律和原則進行股票的選擇、搭配以降低投資風險的一種方法。其理論依據就是股市內各類股票的漲跌一般不是同步的,總是有漲有跌,此起彼伏。因此,當在一種股票上的投資可能因其價格的暫時跌落而不能盈利時,還可以在另外一些有漲勢的股票上獲得一定的收益,從而可以達到迴避風險的目的。應當明確的是,這一種方法只適用於資金投入量較大的投資者。
一、分散風險
股票與其他任何金融產品一樣,都是有風險的。所謂風險就是指預期投資收益的不確定性。我們常常會用籃子裝雞蛋的例子來說明分散風險的重要性。如果我們把雞蛋放在一個籃子里,萬一這個籃子不小心掉在地上,那麼所有的雞蛋都可能被摔碎;而如果我們把雞蛋分散在不同的籃子里,那麼一個籃子掉了不會影響其他籃子里的雞蛋。資產組合理論表明,證券組合的風險隨著組合所包含的證券數量的增加而降低,資產間關聯性低的多元化證券組合可以有效地降低個別風險。
我們一般用股票投資收益的方差或者股票的p值來衡量一隻股票或股票組合的風險。通常股票投資組合的方差是由組合中各股票的方差和股票之間的協方差兩部分組成,組合的期望收益率是各股票的期望收益率的加權平均。除去各股票完全正相關的情況,組合資產的標准差將小於各股票標准差的加權平均。當組合中的股票數目N增加時,單只股票的投資比例減少,方差項對組合資產風險的影響下降;當N趨向無窮大時,方差項將檔近0,組合資產的風險僅由各股票之間的協方差所決定。也就是說,通過組合投資,能夠減少直至消除各股票自身特徵所產生的風險(非系統性風險),而只承擔影響所有股票收益率的因素所產生的風險(系統性風險)。
二、實現收益最大化
股票投資組合管理的目標之一就是在投資者可接受的風險水平內,通過多樣化的股票投資使投資者獲得最大收益。從市場經驗來看,單只股票受行業政策和基本面的影響較大,相應的收益波動往往也很大。在公司業績快速增長時期可能給投資者帶來可觀的收益,但是如果因投資者未觀察到的信息而導致股票價格大幅下跌,則可能給投資者造成很大的損失。因此,在給定的風險水平下,通過多樣化的股票選擇,可以在一定程度上減輕股票價格的過度波動,從而在一個較長的時期內獲得最大收益。
股票的投資組合時的基本原則
1.在風險水平基本相同的情況下,投資者應當選擇相對利潤率較高的股票。
2,在利潤率水平基本相同的情況下,投資者應當選擇相對風險較高的股票。
3.在選擇股票組合時,應當使股票可能造成的損失盡可能減小到最低限度。我們可以用數學公式表示為:式中:
n表示所選股票的總個數
i表示所選股票中的第i種股票
Fi表示第i種股票的風險概率
Gi表示第i種股票在發生風險時可能造成的損失
當然,在考慮減小損失的同時,也應當考慮要使股票帶來的利潤盡可能地大,用數學公式表示即為:式中:
n表示所選股票的總個數
i表示所選股票中的第i種股票
Hi表示第i種股票的獲利概率
Li表示第i種股票在市場條件有利時可能獲得的利潤
股票投資組合應當注意的幾個問題[1]
1.在購買股票時,應注意不要購買同一公司或企業的股票,即使該企業經營有方、業績優良時也要將資金留出一部分投入到其他種類的股票上去。這樣做可以使投資者不會因某一種股票的突然性暴跌而造成慘重的損失。
2.股票投資組合時,應選擇兩個或兩個以上不同行業的股票進行投資,即不要只購買同一行業或同一板塊中的不同股票。這樣做可以使投資者避免在碰到行業性不景氣,所有同行業股票全部跌落時,可能產生的風險。
3.投資時要注意盡量不購買同一地區的股票。同樣,這類股票同漲同跌的可能性較大一些。因此,如果購買同一地區的股票就無法起到躲避風險的作用。
4.購買股票時,應當購買具有不同題材的股票。這樣可以使投資者避免在某一種題材股遇到利空消息時所產生的風險。
5.對購進股票的時間上要注意合理安排,不要集中在同一時期將所有的投資全部投入股市中,要留有一定的後續力量。有時,投資者認為某一股票已跌至極限而放心買入,卻不想該股票的價格繼續下跌,而此時投資者手中若留有一部分資金,還可以進行低價補進,以攤平成本的操作;否則,只有無可奈何地等待該股票漲潮期的到來,這就可能使投入的資金積壓很長一段時間,從而減緩了資金的周轉速度。
股票投資組合的幾種方式
1.保守型投資組合。採用這種類型的投資組合方式,其資金的分配情況應當是,將80%或全部的資金用於購買不同的具有中、長期投資價值的股票,而只將約20%或20%以下的少量資金用於對短線股票的炒作。這種投資組合方式需要投資者選擇那些有較高股息的股票作為投資對象,這可以使投資者在經濟呈現穩定增長的情形下,從那些經營情況良好、投資回報安全穩定的公司的股票中,獲取較為滿意的投資回報。
但是,採用這種保守型的投資組合方式,也要求投資者時刻注意公司的經營情況的變化和國家有關的政策動向,因為任何一種股票都絕對不可能永葆青春,常勝不衰,它完全有可能在國家方針政策轉向、產業結構調整、市場環境變化等因素的影響下由盛轉衰,由盈轉虧。所以,保守型投資組合雖然可以較大限度地降低投資風險,但也並不是說就能夠完全消除風險。
2.投機型投資組合。這種投資組合方式正好與保守型投資組合方式相反;是將大部分或全部的資金都用於投機性股票炒作的一種資金組合方式。採用這種方式的盈利情況,基本上取決於投資者對各種股票漲跌形勢的准確判斷。如果投資者有較強的分析判斷能力、充裕的時間以及敏銳的洞察力,則採用這種投資組合方式往往能夠獲得比其他形式的資金組合方式更為可觀的利潤和收益,但同時它也比其他的資金組合方式有著更大的風險性。
3.隨機應變型投資組合。這是投資者根據市場的具體情況來決定採用何種投資組合方式的一種投資方法。這種方法認為,在股市不太活躍的情況下,應採用保守型投資組合,即將資金投入到長線昅中,以獲取較為穩定的收入;而在股市十分活躍的情況下,應採用投機型投資組合,以便能從各種股票的跌漲差價中獲取更大的收益。這一投資組合方式因能夠較好地適應股市的變化,而被多數投資者所採用,採用這一方法的關鍵一點,是投資者要有能力對股市的大勢有一個比較准確的形勢判斷。
4.市場分散型投資組合。這是投資者根據不同的市場情況採用不同投資組合方式的一種投資方法。這種方法認為,在有新股上市時,即將資金投入到一級市場上進行炒作;在大勢上漲時,即將資金投入到二級市場上進行炒作;在無新股上市、大勢下跌的情況下,即將資金投入到一級半市場上進行炒作。這樣,分散市場投資的組合型式,已被實踐證明是可行的,而且已被好多投資者所採用
『柒』 如何用python實現Markowitz投資組合優化
看這個文章
https://zhuanlan.hu.com/p/20604930?refer=quantstory
用python實現Markowitz投資組合優化
『捌』 如何用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]:
『玖』 如何構建投資組合,如何建立投資組合
關於證券投資,很多人都有一個基本的風險意識,那就是「不能將雞蛋放在一個籃子里」。簡單的說,就是持倉必須要適當的分散化,以此來抵禦不可預測的系統風險和非系統風險。
既然意識到了分散投資的必要性,那就要面臨如何構建投資組合這一現實問題。雖然不同風格的投資者有不同的經驗和偏好,但是在我看來,「安全」應該是任何一個優秀投資組合的首要特徵。
構建投資組合的基本原則
1、組合內部具備穩定的現金流收入(安全邊際)
2、保住本金,永遠只用利潤去冒險(風險控制)
3、「本金低風險+利潤高風險」,迴避中等風險(標的選擇)
如何構建投資組合?
(1)定投指數基金,目標10%;
(2)找一家你信得過的資產管理機構,同樣不要預期太高,扣除各種費用和提成後,大部分專業投資機構能給你帶來的平均回報水平,也就是略高於指數的回報率;而且要從幾萬家資產管理機構中挑選出優勝者,難度不小於選擇股票;
(3)自己建立一個投資組合,長期收益率目標是15%,需要申明下,這是個很高的目標了,除了要具備正確的投資理念,付出很艱苦的努力外,還需要一點點運氣。
『拾』 如何構建股票最佳投資組合
幾步走
1.板塊,選定國家政策風口導向板塊,現階段如混改
2.基本面,分析財務數據,經營情況,縮小股票池范圍
3.就是技術分析了,個人建議採用MACD+KDJ的綜合分析法。
通過這幾步,相信選出來的潛力不會太差,
有興趣多多交流