現(xiàn)代投資組合理論(2)-蒙特卡洛方法

所謂蒙特卡洛模擬,就是隨機(jī)產(chǎn)生大量的資產(chǎn)分配方案候醒,然后再計(jì)算各種分配方案下能颁,所得到的波動率、夏普率倒淫,再根據(jù)最優(yōu)的夏普率伙菊,反查資產(chǎn)分配方案。

主要操作我們在上一節(jié)已經(jīng)介紹過敌土,這一步主要做的事情是不斷地重復(fù)镜硕。我們先把代碼給出來,再進(jìn)行解釋:

num_ports = 5000

w = np.zeros((num_ports, len(stocks)))
vol_arr = np.zeros(num_ports)
sharpe_arr = np.zeros(num_ports)
port_return_arr = np.zeros((num_ports, len(returns)))
cov_arr = np.zeros(num_ports)

for i in range(num_ports):
    weights = np.array(np.random.random(len(stocks)))
    weights = weights/np.sum(weights)  
                      
    w[i,:] = weights
    
    weighted_returns = weights * returns
    port_return_i = weighted_returns.sum(axis=1)
    port_return_arr[i,:] = port_return_i

    cov = np.cov(port_return_i)
    cov_arr[i] = cov
    vol_arr[i] = np.sqrt(np.dot(weights.T, np.dot(cov, weights)))
    sharpe_arr[i] = sharpe_ratio(port_return_i)

我們主要定義了這樣四個(gè)數(shù)組:

  1. 權(quán)重矩陣 all_weights返干。我們打算重復(fù) 5000 次采樣兴枯,由于資產(chǎn)組合共有 4 個(gè)標(biāo)的,所以矩欠,它是一個(gè) 5000 * 4 的矩陣财剖。每一行對應(yīng)一次資產(chǎn)組合分配。
  2. 夏普率數(shù)組癌淮。它是一個(gè) size 為 5000 的數(shù)組躺坟,記錄了每一次計(jì)算出來的 sharepe 率。
  3. 波動率數(shù)組乳蓄。它也是一個(gè) size 為 5000 的數(shù)組瞳氓,記錄了每一次計(jì)算郵來的波動率。
  4. port_return_arr,在示例中匣摘,它是一個(gè) 5000 * 241 大小的矩陣店诗,每一行記錄了組合在過去一年中每一天的收益。

當(dāng)上述代碼運(yùn)行完成之后音榜,我們就得到了 5000 組夏普值庞瘸。根據(jù)夏普值的定義,我們直接找到夏普值最大的那一組赠叼,就是風(fēng)險(xiǎn)最小擦囊、收益最高的資產(chǎn)組合。

最佳投資組合

我們使用 np.argmax 來尋找夏普最大時(shí)的位置嘴办,此點(diǎn)即為最佳投資組合:

# 檢查最高的 SHARPE
pos = np.argmax(sharpe_arr)
print(pos, sharpe_arr[pos])
print("stocks", stocks)
print("Portfolio Allocation:", all_weights[pos])

這樣我們得到資產(chǎn)分配方案類似如下:

標(biāo)的 1 標(biāo)的 2 標(biāo)的 3 標(biāo)的 4
比例 35.3% 0.3% 0.8% 64%

我們將上述試驗(yàn)結(jié)果繪制成圖形瞬场,來看看是否符合有效前沿理論:

import matplotlib.pyplot as plt

annual_return = np.prod((1 + port_return_arr), axis=1) - 1
plt.scatter(vol_arr, annual_return, c=sharpe_arr, cmap='RdYlBu')
plt.colorbar(label='Sharpe Ratio')

plt.scatter(vol_arr[pos], annual_return[pos], c='red',s=80)

我們以波動率為 x 軸,年化回報(bào)為 y 軸涧郊。在每一個(gè) x 上贯被,都存在若干組年化回報(bào)數(shù)據(jù),有正有負(fù)妆艘。顯然彤灶,對于同一個(gè) x,正好是那些處在有效前沿上的組合批旺,正好是收益最大或者虧損最大的組合幌陕。

按照 MPT 理論,只有那些在 y 軸上方汽煮,且處于有效前沿上的才是值得關(guān)注的組合搏熄,然后根據(jù)我們的風(fēng)險(xiǎn)承受能力,來選擇這條線上對應(yīng)的組合暇赤。

我們把夏普率最高的那組方案心例,用紅色的點(diǎn)標(biāo)注出來◆嶙浚可以看出契邀,它略微偏離了有效前沿,為什么失暴?

[圖片上傳失敗...(image-87f80c-1702050684040)]

這里的原因是坯门,我們使用了年化收益作為 y 軸,但這個(gè)小紅點(diǎn)是用的 sharpe 最大的點(diǎn)逗扒。同一個(gè) sharpe 率古戴,對應(yīng)的收益率不只一個(gè),而是一個(gè)分布矩肩;即使在波動率和 sharpe 率都確定的情況下现恼,年化收益率也仍然不只一個(gè),仍然是一個(gè)分布。關(guān)于夏普率與收益率的關(guān)系叉袍,特別是與最大回撤的關(guān)系始锚,我們在第 21 課講過。這是一個(gè)很重要的問題喳逛。

如果我們把 y 軸換成 sharpe 值瞧捌,則會得到更接近的效前沿理論的一張圖:

[圖片上傳失敗...(image-86d599-1702050684040)]

從走勢圖來看,我們這樣求出來的資產(chǎn)組合確實(shí)是最優(yōu)的润文。但是姐呐,如果我們將它與文章開頭的那個(gè)圖相比,我們會得出什么結(jié)論典蝌?

  1. 這把牌不行曙砂。如果你愿意承擔(dān)較大風(fēng)險(xiǎn),這把牌也不能給你想要的收益骏掀。浪得不夠狠鸠澈。

  2. 資產(chǎn)組合并沒有形成直觀的有效前沿,原因主要是投資組合整體的收益率受組合內(nèi)資產(chǎn)的收益率限制砖织,即min(組合內(nèi)資產(chǎn)收益率)≤資產(chǎn)組合收益率≤max(組合內(nèi)資產(chǎn)收益率)款侵,因此并不是能實(shí)現(xiàn)所有收益率末荐。

因此我們得到結(jié)論:你得重新選標(biāo)的侧纯。

另外,如果你現(xiàn)在就急于用MPT來進(jìn)行投資甲脏。眶熬。。你還得再學(xué)點(diǎn)啥块请。

歷史當(dāng)然總是在重復(fù)自己娜氏,一切歷史都是當(dāng)代史。但是仍然有很多東西要討論墩新。

首先贸弥,我們應(yīng)該放多少支標(biāo)的到這個(gè)組合里來?我們的示例中只使用了4支海渊,如果我們對滬深300或者中證1000來做指增绵疲,會不會更好一點(diǎn)?

其次臣疑,上述兩幅圖是針對同一資產(chǎn)組合盔憨,不同時(shí)間段情況所形成,很明顯收益及風(fēng)險(xiǎn)都有較大差異讯沈。如果我們在不同的時(shí)間點(diǎn)來優(yōu)化投資組合郁岩,我們得到的倉位顯然會有所不同。因此我們提出問題:我們應(yīng)該多久計(jì)算一次并執(zhí)行調(diào)倉?會不會有這樣一種情況问慎,每次調(diào)倉是在用過去的最優(yōu)解萍摊,而它很快就變成了次優(yōu)或者最劣解?也就是如叼,這個(gè)組合它的動量周期是多久记餐?

顯然,任何一個(gè)有價(jià)值的方案薇正,往往都不是一篇短文能cover的片酝,我們會在后續(xù)的文章中不斷深入探討這個(gè)問題。

好挖腰,我們先放下這些問題雕沿,先來看一個(gè)技術(shù)問題:

執(zhí)行上述循環(huán)5000次,我們花了大約 5.2 秒猴仑。

這是只有4支標(biāo)的的情況审轮。很顯然,隨著標(biāo)的數(shù)的增加辽俗,我們需要暴力搜索的空間也隨之變大疾渣。這種方法,在標(biāo)的數(shù)增加到50支崖飘、100支時(shí)榴捡,是否還可行呢?

下一篇朱浴,我們就來探討這個(gè)問題吊圾。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市翰蠢,隨后出現(xiàn)的幾起案子项乒,更是在濱河造成了極大的恐慌,老刑警劉巖梁沧,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件檀何,死亡現(xiàn)場離奇詭異,居然都是意外死亡廷支,警方通過查閱死者的電腦和手機(jī)频鉴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酥泞,“玉大人砚殿,你說我怎么就攤上這事≈ザ冢” “怎么了似炎?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵辛萍,是天一觀的道長。 經(jīng)常有香客問我羡藐,道長贩毕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任仆嗦,我火速辦了婚禮辉阶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瘩扼。我一直安慰自己谆甜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布集绰。 她就那樣靜靜地躺著规辱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪栽燕。 梳的紋絲不亂的頭發(fā)上罕袋,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機(jī)與錄音碍岔,去河邊找鬼浴讯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蔼啦,可吹牛的內(nèi)容都是我干的榆纽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼询吴,長吁一口氣:“原來是場噩夢啊……” “哼掠河!你這毒婦竟也來了亮元?” 一聲冷哼從身側(cè)響起猛计,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎爆捞,沒想到半個(gè)月后奉瘤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡煮甥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年盗温,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片成肘。...
    茶點(diǎn)故事閱讀 40,030評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡卖局,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出双霍,到底是詐尸還是另有隱情砚偶,我是刑警寧澤批销,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站染坯,受9級特大地震影響均芽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜单鹿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧划址,春花似錦呢岗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至澄惊,卻和暖如春唆途,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背掸驱。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工肛搬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人毕贼。 一個(gè)月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓温赔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鬼癣。 傳聞我的和親對象是個(gè)殘疾皇子陶贼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容