- Python機(jī)器學(xué)習(xí)之金融風(fēng)險(xiǎn)管理
- (土)阿卜杜拉·卡拉桑
- 826字
- 2025-05-19 16:26:05
1.2 收益
所有金融投資都是為了獲得利潤(rùn),即收益(Return),又稱回報(bào)。更嚴(yán)謹(jǐn)?shù)卣f(shuō),收益是指在一段時(shí)期內(nèi)投資所獲得的利潤(rùn)。
風(fēng)險(xiǎn)和收益之間存在這樣一種權(quán)衡:假設(shè)的風(fēng)險(xiǎn)越高,實(shí)現(xiàn)的收益就越大。由于在這方面很難得出最佳解決方案,所以這種權(quán)衡是金融學(xué)中最具爭(zhēng)議的問(wèn)題之一。然而,Markowitz(1952)對(duì)這個(gè)問(wèn)題提出了一個(gè)直觀的、令人興奮的解決方案。他定義風(fēng)險(xiǎn)的方式精致、清晰,從而改變了金融研究的格局,因?yàn)樵诖酥皩?duì)風(fēng)險(xiǎn)的定義是模糊不清的。Markowitz用標(biāo)準(zhǔn)差來(lái)量化風(fēng)險(xiǎn)。這個(gè)直觀的定義使研究人員能夠在金融領(lǐng)域中運(yùn)用數(shù)學(xué)和統(tǒng)計(jì)學(xué)。該標(biāo)準(zhǔn)差定義如下(Hull,2012):

其中,R和分別指的是年收益率和預(yù)期收益(又稱期望收益)。本書將在多處使用符號(hào)
來(lái)表示預(yù)期收益。涉及投資組合方差時(shí),引入?yún)f(xié)方差,公式變?yōu)椋?/p>

其中,w表示權(quán)重,表示方差,Cov表示協(xié)方差。
取得方差平方根后,得到投資組合標(biāo)準(zhǔn)差為:

換句話說(shuō),投資組合預(yù)期收益是個(gè)體收益的加權(quán)平均值,表示為:

接下來(lái),將通過(guò)可視化來(lái)探索風(fēng)險(xiǎn)和收益的關(guān)系。我們將使用Python構(gòu)建一個(gè)假定的投資組合以計(jì)算必要的統(tǒng)計(jì)值:
In [1]: import statsmodels.api as sm import numpy as np import plotly.graph_objs as go import matplotlib.pyplot as plt import plotly import warnings warnings.filterwarnings('ignore') In [2]: n_assets = 5? n_simulation = 500 ? In [3]: returns = np.random.randn(n_assets, n_simulation) ? In [4]: rand = np.random.rand(n_assets) ? weights = rand/sum(rand) ? def port_return(returns): rets = np.mean(returns, axis=1) cov = np.cov(rets.T, aweights=weights, ddof=1) portfolio_returns = np.dot(weights, rets.T) portfolio_std_dev = np.sqrt(np.dot(weights, np.dot(cov, weights))) return portfolio_returns, portfolio_std_dev ? In [5]: portfolio_returns, portfolio_std_dev = port_return(returns) ? In [6]: print(portfolio_returns) print(portfolio_std_dev) ? 0.012968706503879782 0.023769932556585847 In [7]: portfolio = np.array([port_return(np.random.randn(n_assets, i)) for i in range(1, 101)]) ? In [8]: best_fit = sm.OLS(portfolio[:, 1], sm.add_constant(portfolio[:, 0]))\ .fit().fittedvalues ? In [9]: fig = go.Figure() fig.add_trace(go.Scatter(name='Risk-Return Relationship', x=portfolio[:, 0], y=portfolio[:, 1], mode='markers')) fig.add_trace(go.Scatter(name='Best Fit Line', x=portfolio[:, 0], y=best_fit, mode='lines')) fig.update_layout(xaxis_title = 'Return', yaxis_title = 'Standard Deviation', width=900, height=470) fig.show() ?
? 指定資產(chǎn)數(shù)量。
? 指定模擬次數(shù)。
? 隨機(jī)生成正態(tài)分布樣本用作收益。
? 生成隨機(jī)數(shù)并用于計(jì)算權(quán)重。
? 計(jì)算權(quán)重。
? 用于計(jì)算投資組合預(yù)期收益和標(biāo)準(zhǔn)差的函數(shù)。
? 調(diào)用函數(shù)的結(jié)果。
? 輸出投資組合預(yù)期收益和標(biāo)準(zhǔn)差的結(jié)果。
? 重新運(yùn)行函數(shù)100次。
? 通過(guò)線性回歸繪制最佳擬合線。
? 繪制交互式圖表。
上述Python代碼所生成的圖表如圖1-1所示,證實(shí)了風(fēng)險(xiǎn)和收益是相關(guān)的,但這種相關(guān)性的具體大小取決于個(gè)股和金融市場(chǎng)狀況[2]。
[2] 譯者注:代碼使用了隨機(jī)數(shù),所以讀者運(yùn)行代碼的結(jié)果可能與圖1-1不一致,但是原理是一樣的。

圖1-1 風(fēng)險(xiǎn)和收益的關(guān)系
- Java多線程編程實(shí)戰(zhàn)指南:設(shè)計(jì)模式篇(第2版)
- 構(gòu)建移動(dòng)網(wǎng)站與APP:HTML 5移動(dòng)開(kāi)發(fā)入門與實(shí)戰(zhàn)(跨平臺(tái)移動(dòng)開(kāi)發(fā)叢書)
- 深度強(qiáng)化學(xué)習(xí)算法與實(shí)踐:基于PyTorch的實(shí)現(xiàn)
- Serverless架構(gòu)
- Machine Learning for Developers
- Java EE架構(gòu)設(shè)計(jì)與開(kāi)發(fā)實(shí)踐
- Python硬件編程實(shí)戰(zhàn)
- Kotlin進(jìn)階實(shí)戰(zhàn)
- Access數(shù)據(jù)庫(kù)應(yīng)用教程(2010版)
- WCF技術(shù)剖析(卷1)
- 網(wǎng)頁(yè)設(shè)計(jì)與制作
- Learn Linux Quickly
- Java 7 Concurrency Cookbook
- Game Development Patterns and Best Practices
- AngularJS Web Application Development Cookbook