日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

蒙特卡洛模拟分析市场风险

發(fā)布時間:2023/12/31 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蒙特卡洛模拟分析市场风险 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

摘要

1:本文討論將蒙特卡洛模擬的理念運用在市場風(fēng)險分析上;

2:筆者希望搭建出一套交易體系,原則是只做干貨的分享。后續(xù)將更新更多模塊及內(nèi)容,但工作學(xué)習(xí)之余的閑暇時間有限,更新速度慢還請諒解;

3:文中假設(shè)與觀點是基于筆者對模型及數(shù)據(jù)的一孔之見,若有不同見解歡迎隨時留言交流;

4:本文所涉及數(shù)據(jù)均通過公開渠道獲取,本文所涉內(nèi)容與項目相關(guān)方不存在利益沖突

5:模型實現(xiàn)基于python3.8;


目錄

1. 蒙特卡洛模擬

2. 項目背景和目標(biāo)

3. 數(shù)據(jù)分析

4. 模型推導(dǎo)

4.1 足球參與人數(shù)模擬

4.2?腦震蕩數(shù)據(jù)模擬

4.2.1 原方案:線性擬合假設(shè)

4.2.2 新方案:正態(tài)分布假設(shè)

5. 代碼實現(xiàn)

6. 結(jié)果展示及討論

7. 本文所用到的腦震蕩數(shù)據(jù)集


1. 蒙特卡洛模擬

????????筆者去年寫過一篇蒙特卡洛模擬預(yù)測股價的文章,也有不少讀者發(fā)出質(zhì)疑,畢竟用蒙特卡洛模擬無規(guī)律的布朗運動,得到的不還是一堆無規(guī)律的結(jié)果,云云。其實筆者只是舉個例子,更重要的是介紹蒙特卡洛模擬的理念。畢竟模型需要假設(shè)分布,而無規(guī)律的布朗運動正好是用來描述股價的方式之一。哪天您要是讀到筆者的文章獲得了什么靈感可以洞悉市場規(guī)律,筆者給您的忠告是:請千萬不要告訴任何人,拿著模型去賺錢吧。

????????蒙特卡洛模擬的理念和方式本文就不再贅述了,網(wǎng)上有很多文章,之前筆者也寫過,附傳送門:

(16條消息) 淺談股價預(yù)測模型(一):捉摸不定,最為致命_Simon Cao的博客-CSDN博客_股價預(yù)測模型https://blog.csdn.net/simon1223z/article/details/120495434?spm=1001.2014.3001.5501

2. 項目背景和目標(biāo)

????????為了彌補下之前股價模型假設(shè)的遺憾,筆者出一期關(guān)于市場預(yù)測的內(nèi)容,正好最近筆者的項目與之相關(guān),在得到項目方允許的情況下,筆者利用公開數(shù)據(jù)及部分模型僅作展示,更重要的還是理念的講解。

????????該項目是關(guān)于澳大利亞大健康領(lǐng)域,數(shù)據(jù)方面筆者挑選了損傷數(shù)據(jù)中的運動腦震(Concussion)數(shù)據(jù)。任務(wù)目標(biāo)是模擬出這該損傷未來五年的市場數(shù)據(jù),并且判斷出第五年的市場下行風(fēng)險。

????????由于當(dāng)?shù)刂菡托l(wèi)生局比較懶(官網(wǎng)稱目前正在推進國家級運動損傷數(shù)據(jù)庫的建設(shè),等它建好我們就該喝西北風(fēng)去了),相關(guān)數(shù)據(jù)十分匱乏,給項目推進造成不小的阻礙。并且,進行大范圍的市場調(diào)查也非常吃力。在這種數(shù)據(jù)匱乏的時候筆者選擇使用蒙特卡洛模擬,其精妙之處在于可以進行一堆高大上的假設(shè)和推導(dǎo)(前提是合理公允),其過程看上去無比復(fù)雜,充分展現(xiàn)筆者的專業(yè)性。但其結(jié)果卻是通俗易懂的分布展示,即使客戶沒學(xué)過統(tǒng)計,您也可以用幾分鐘的時間向他展示通俗易懂的分布,充分體現(xiàn)客戶關(guān)懷。像這種又能體現(xiàn)專(裝)業(yè)(13),又客戶友好型的解決方案那不得用爆哇?

? ? ? ? 廢話不多說,馬上開整。

3. 數(shù)據(jù)分析

????????在項目一開始時所有人直接定位腦震蕩和軟組織損傷,因為澳洲醫(yī)療條件完備,近幾年來所有運動損傷中就腦震蕩是所有運動損傷中增長最大的,除此之外其它運動損傷數(shù)據(jù)近幾年都有遞減的趨勢。而且,這兩種損傷醫(yī)院和政府也更關(guān)切,可以說是投其所好了。但筆者提出幾個不一樣的觀查點:

????????首先是在所有運動損傷中,腦震蕩數(shù)字增長的確很大,如圖一數(shù)據(jù):

圖一:運動腦震蕩統(tǒng)計

????????數(shù)據(jù)來源:

AFL 2021: Concussion is most common injury in Australian rules community footy and it’s getting worse (theage.com.au)https://www.theage.com.au/interactive/2021/sports-injuries/

????????雖然其絕對的數(shù)額很低,只有幾百人,但在澳洲引發(fā)的關(guān)注度很高,甚至連醫(yī)院的數(shù)據(jù)集都要給腦震蕩單開好幾張統(tǒng)計表。

那么:

????????為什么其它的運動損傷都在遞減, 就腦震蕩眾人皆跌它獨漲呢?因為澳洲人喜歡踢足球。

????????為什么喜歡踢足球腦震蕩數(shù)字會漲呢?因為為人腦在顱腔內(nèi)像塊豆腐一樣很脆弱,研究表明頭球,沖撞等因素都是腦震蕩的元兇,感興趣的可以了解一下腦震蕩,有很多相關(guān)的文章和研究。

????????為什么關(guān)注度這么高呢?因為球迷們喜歡的球星得了腦震蕩,害得退賽了球迷那不得瘋狂diss它。

????????好家伙,一波為什么三連直接把筆者調(diào)查好長時間的結(jié)果全說完了,令人唏噓不已。。畢竟這不是重點,來看看數(shù)據(jù)吧:

?圖二:澳大利亞足球運動參與人數(shù)與年化增速

????????數(shù)據(jù)來源:

National Participation Reports | Football Australiahttps://www.footballaustralia.com.au/national-participation-reports

????????可以看到,澳洲踢足球的疫情前大概2百萬人,也就是說大概十個澳洲人里有一個是踢球的。(不知道我們國家是多少,反正筆者是純粹不踢球的人)。

? ? ? ? 從增速上看,即使排除疫情這兩年的異常數(shù)據(jù),增速也是一直在下滑的。原因無非是澳洲人口總量的限制,總有一個天花板在。因此,以足球數(shù)據(jù)反推腦震蕩數(shù)據(jù),將來想預(yù)期腦震蕩市場一直這樣高增長下去非常不現(xiàn)實。況且隨著社會的發(fā)展,醫(yī)療條件只會越來越進步, 更好的醫(yī)療條件只會讓腦震蕩案例進一步下降。

4. 模型推導(dǎo)

????????在上面分析和數(shù)據(jù)基礎(chǔ)上,筆者對未來五年的腦震蕩案例數(shù)據(jù)進行模型推演。

4.1 足球參與人數(shù)模擬

????????由于腦震蕩數(shù)據(jù)與足球參與人數(shù)相關(guān)性很強, 首先是未來的足球參與人數(shù)滿足方程[1]:

?? ?[1]

其中:

i: 年份?

g: 復(fù)合增長率(年化)

p:參與人數(shù)

????????就是很簡單的復(fù)合增速算數(shù)值的公式,C站插公式有點迷,上面的是i次根號才對,看上去像乘。

????????關(guān)鍵就在于這個g,筆者通過時間序列回歸擬合過去增速并且加入隨機游走項得到, 刨去2021, 2020及2016幾年的異常數(shù)據(jù),經(jīng)過擬合可得腦震蕩年化復(fù)合增速滿足方程[2]:

? [2]

其中:g為年化復(fù)合增速,x為年份

????????經(jīng)假設(shè)檢驗,該式在99%置信水平下有效,?。

? ? ? ? 結(jié)合方程[2],在[1]式基礎(chǔ)上加入隨機游走項有公式[3]:

? [3]

????????其中:服從該隨機游走過程, N服從均值為0, 方差為的正態(tài)分布

4.2?腦震蕩數(shù)據(jù)模擬

????????筆者一開始的方案是照前面足球運動參與人數(shù)的方式估計腦震蕩數(shù)據(jù),但是后面模擬發(fā)現(xiàn)效果并不理想。

4.2.1 原方案:線性擬合假設(shè)

取2014-2018年腦震蕩數(shù)據(jù)與足球參與人數(shù)可得腦震蕩比率:

year no.concussion rate?
10.051778
20.047775
30.041499
40.035621
50.035373

回歸擬合可得方程[4]:

? [4]

其中:

c:腦震蕩比例

x: 年份

????????經(jīng)假設(shè)檢驗,該式在99%置信水平下有效,?。

????????由于腦震蕩比例降低,市場趨于穩(wěn)定,其數(shù)據(jù)的波動率其實也有隨著降低的趨勢, 因此這里筆者假設(shè)腦震蕩的標(biāo)準(zhǔn)差比例隨著腦震蕩比率的下降而降低。其實這樣假設(shè)是有點問題的,因為線性擬合的其中一個假設(shè)是獨立同分布,如果假設(shè)方差隨時間變化而遞減則產(chǎn)生異方差,而且是那種條件異方差,但蒙特卡洛模擬好就好在假設(shè)靈活,而且是對未來的估計。筆者認(rèn)為這么用符合實際情況,依舊是公允的。結(jié)合之前的方程[3]加入比例隨機游走過程得總方程[5]:

? [5]

變量有點多,重新列一下,?服從該隨機游走過程, 其中:

i: 年份?

g: 復(fù)合增長率(年化)

p:參與人數(shù)

N服從均值為0, 方差為的正態(tài)分布

C服從均值為0, 方差為?的正態(tài)分布

? ? ? ? 除了假設(shè)外,從公式看這個方案效果依舊不是很理想,因為它是線性時間序列數(shù)據(jù)擬合,樣本點也非常少,這導(dǎo)致在模擬很多期帶入公式后產(chǎn)生負值,而這個比率是不可能為負的,于是這個方案在項目上就被放棄了,不過筆者在下面代碼實現(xiàn)中還是把它運行出來,畢竟也是花了幾行代碼實現(xiàn)出來的,在文章里發(fā)光發(fā)熱一下。

4.2.2 新方案:正態(tài)分布假設(shè)

????????假設(shè)腦震蕩比率服從正態(tài)分布, 直接在分布里面取數(shù)然后乘到之前足球人數(shù)里, 于是有總方程[6]:

? [6]

?????????這個方案簡潔明了,筆者就不在下面代碼中實現(xiàn)了

5. 代碼實現(xiàn)

????????將上述過程以代碼實現(xiàn):

import pandas as pd import numpy as np import random import matplotlib.pyplot as plt import seaborn as snsdef player_simulation(years, beg, sigma, player_sim): # just for football playeryears_data = []for i in range(0, years):if player_sim is True: # football player number simulationg = 0.217433 - 0.01738 * (1 + i) + random.normalvariate(0, sigma/(i+1))compunded_g = (1 + g) ** (1 + i)years_data.append(beg * compunded_g)else: # 原腦震蕩比例線性擬合模擬方案 concussion number simulationproportion = 0.055899 - 0.0045 * (1 + i) + random.normalvariate(0, sigma/(i+1))years_data.append(proportion/100)return years_datadf = pd.read_excel("file.xlsx", sheet_name="name") # 導(dǎo)入本地數(shù)據(jù)集 player_data = df[df.columns[1]] # 運動員數(shù)據(jù) growth = [] for i in range(len(player_data)-1): growth.append((1 + (player_data[i+1]-player_data[0])/player_data[0])**(1/(i+1)) - 1) # compunded g: (1+g)^(1/year no.) - 1 std_player_g, mean_player_g = np.std(growth[:5]), np.mean(growth[:5]) # 后面兩年COVID異常數(shù)據(jù)不要 concussion_rate_data = pd.read_excel("file.xlsx", sheet_name="name") # 導(dǎo)入本地數(shù)據(jù)集 concussion_ratio = concussion_rate_data["concussion_rate_in_football_players"].values[5:8] # 筆者只用16-18年數(shù)據(jù), 其它drop掉 std_c_r, mean_c_r = np.std(concussion_ratio), np.mean(concussion_ratio)players_simu = [] # 腦震蕩運動員數(shù)量模擬結(jié)果 for times in range(200000):player_simu = player_simulation(5, player_data[len(player_data)-1], std_player_g, player_sim = True)c_simu = player_simulation(5, concussion_ratio[len(concussion_ratio)-1], std_c_r, player_sim = False)players_simu.append(np.multiply(player_simu, c_simu))print("No.{} simulation\r".format(times), end="") print("simulation success")

????????將模擬數(shù)據(jù)展示出來,可以選擇動態(tài)展示(plot動態(tài)畫線,將plt.show()去掉,在for循環(huán)中加入下面兩句就可以動態(tài)展示)。

plt.draw() plt.pause(0.001)

????????但模擬上萬次的線要畫很長時間,屬于給別人展示時候的耍酷功能, 如果模擬幾十上百萬次估計睡一覺明天起來看還在畫線呢。

????????也可以一次性展示出來, 快,但是幾十萬次模擬也要幾十秒才能刷出來。

selector = input("Draw simulation lines? (y/n):") # 要不要展示作圖過程 fig1 = plt.figure(1) if (selector == "Y") or (selector == "y"):for i in range(len(players_simu)):plt.plot([2022,2023,2024,2025,2026], players_simu[i])plt.xticks([2022,2023,2024,2025,2026])plt.xlabel("years")plt.ylabel("Number")plt.draw()plt.pause(0.001)plt.close(fig1) elif (selector == "N") or (selector == "n"):for i in range(len(players_simu)):plt.plot([2022, 2023, 2024, 2025, 2026], players_simu[i])plt.xticks([2022, 2023, 2024, 2025, 2026])plt.xlabel("years")plt.ylabel("E(No.)")plt.show() else:print("Error instruction, input y or n, please run again")

????????最后一年的分布也可以導(dǎo)出:

last_y = [] for i in range(len(players_simu)):last_y.append(players_simu[i][-1]) sns.distplot(last_y) plt.xlabel("E(No.)") plt.show()

6. 結(jié)果展示及討論

圖三:蒙特卡洛模擬(20萬次)

圖四:蒙特卡洛模擬第五年分布情況(20萬次)

????????可以看到,腦震蕩在未來5年中呈現(xiàn)先揚后抑的走勢。由于疫情好轉(zhuǎn),可以說未來幾年內(nèi)市場還是比較安全的。但在市場到達頂點之前就要提前考慮第二增長曲線,提早進行部署。從最后一年的分布來看,市場雖然會經(jīng)歷下滑,但總量上依舊維持在一個歷史較高的水平。值得注意的是有10%的情況下,市場將下滑至低于848例腦震蕩患者。

? ? ? ? 可以看到,這一通分析還是很有價值的,只是損傷數(shù)據(jù)豈止腦震蕩那么簡單,很多數(shù)據(jù)也很不完善,實務(wù)中仍然有一堆問題要解決不過模擬方法大同小異。

? ? ? ? 市場分析對基本面分析依舊意義重大,市場是水,公司是船,水漲自然船高,無水自然擱淺,而蒙特卡洛模擬用簡單的分布告訴我們未來的水位究竟會如何變化,其實在筆者看來數(shù)據(jù)缺少是可以克服的困難,因此不算是困難,此外,代碼不是困難,建模不是困難,分析也不是困難,真正困難的是合理公允的假設(shè),這是技術(shù)活中的技術(shù)活。

7. 本文所用到的腦震蕩數(shù)據(jù)集

????????由于數(shù)據(jù)及其少,筆者簡單po這里了, 鏈接在前文放了,這里就不放了:

????????澳洲足球運動參與人數(shù):

yearNo. of football players in AU
2014990759
20151188911
20161301244
20171631041
20181851683
20191957552
20201181931
20211421804

?足球運動腦震蕩人數(shù):

YearConcussion No.
2011346
2012334
2013417
2014513
2015568
2016540
2017581
2018655

您若不棄,我們風(fēng)雨共濟!

總結(jié)

以上是生活随笔為你收集整理的蒙特卡洛模拟分析市场风险的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。