Empyrical 是一個(gè)知名的金融風(fēng)險(xiǎn)指標(biāo)庫(kù)。它能夠用于計(jì)算年平均回報(bào)、最大回撤、Alpha值、Beta值、卡爾馬率、Omega率、夏普率等。它還被用于zipline和pyfolio,是Quantopian開發(fā)的三件套之一。
下面就教你如何使用 Empyrical 這個(gè)風(fēng)險(xiǎn)指標(biāo)計(jì)算神器。
1.準(zhǔn)備
開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒(méi)有,可以訪問(wèn)這篇文章:超詳細(xì)Python安裝指南 進(jìn)行安裝。
**(可選1) **如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda,它內(nèi)置了Python和pip.
**(可選2) **此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點(diǎn):Python 編程的最好搭檔—VSCode 詳細(xì)指南。
請(qǐng)選擇以下任一種方式輸入命令安裝依賴 :
- Windows 環(huán)境 打開 Cmd (開始-運(yùn)行-CMD)。
- MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
- 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install empyrical
2. Empyrical 基本使用
計(jì)算最大回撤,你只需要從 empyrical
庫(kù)中引入 max_drawdown
,將數(shù)據(jù)作為參數(shù)傳入計(jì)算,一行代碼就能實(shí)現(xiàn):
import numpy as np
from empyrical import max_drawdown
returns = np.array([.01, .02, .03, -.4, -.06, -.02])
# 計(jì)算最大回撤
max_drawdown(returns)
# 結(jié)果:-0.4472800000000001
同樣地,如果你需要計(jì)算alpha和beta指標(biāo):
import numpy as np
from empyrical import alpha_beta
returns = np.array([.01, .02, .03, -.4, -.06, -.02])
benchmark_returns = np.array([.02, .02, .03, -.35, -.05, -.01])
# 計(jì)算alpha和Beta值
alpha, beta = alpha_beta(returns, benchmark_returns)
print(alpha, beta)
# 結(jié)果:-0.7960672549836803 1.1243025418474892
如果你想要計(jì)算夏普率,同樣也是一行代碼就能解決,只不過(guò)你需要注意這幾個(gè)參數(shù)的意義:
import numpy as np
from empyrical import sharpe_ratio
returns = np.array([.01, .02, .03, -.4, -.06, -.02])
# 計(jì)算夏普率
sr = sharpe_ratio(returns, risk_free=0, period='daily', annualization=None)
print(sr)
# 結(jié)果:-6.7377339531573535
各個(gè)參數(shù)的意義如下:
參數(shù) | 數(shù)據(jù)類型 | 意義 |
---|---|---|
returns | pandas.Series | 策略的日回報(bào),非累積。 |
risk_free | float | 本周期內(nèi)的無(wú)風(fēng)險(xiǎn)利率 |
period | str, optional | 確定回報(bào)數(shù)據(jù)的周期,默認(rèn)為天。 |
annualization | int, optional | 交易日總數(shù)(用于計(jì)算年化)如果是daily,則默認(rèn)為252個(gè)交易日。 |
3.更多的指標(biāo)
Empyrical 能提供使用的指標(biāo)非常多,這里就不一一介紹了,基本上用法都和夏普率的計(jì)算方法差不多,這里介紹他們的方法和參數(shù)。
3.1 omega_ratio
empyrical.omega_ratio(returns, risk_free=0.0, required_return=0.0, annualization=252)
參數(shù) | 數(shù)據(jù)類型 | 意義 |
---|---|---|
returns | pandas.Series | 策略的日回報(bào),非累積。 |
risk_free | float | 本周期內(nèi)的無(wú)風(fēng)險(xiǎn)利率 |
required_return | float, optional | 投資者可接受的最低回報(bào)。 |
annualization | int, optional | 交易日總數(shù)(用于計(jì)算年化)如果是daily,則默認(rèn)為252個(gè)交易日。 |
3.2 calmar_ratio
empyrical.calmar_ratio(returns, period='daily', annualization=None)
參數(shù) | 數(shù)據(jù)類型 | 意義 |
---|---|---|
returns | pandas.Series | 策略的日回報(bào),非累積。 |
period | str, optional | 確定回報(bào)數(shù)據(jù)的周期,默認(rèn)為天。 |
annualization | int, optional | 交易日總數(shù)(用于計(jì)算年化)。如果是daily,則默認(rèn)為252個(gè)交易日。 |
3.3 sortino_ratio
empyrical.sortino_ratio(returns, required_return=0, period='daily', annualization=None, _downside_risk=None)
參數(shù) | 數(shù)據(jù)類型 | 意義 |
---|---|---|
returns | pandas.Series | 策略的日回報(bào),非累積。 |
required_return | float | 最小投資回報(bào) |
period | str, optional | 確定回報(bào)數(shù)據(jù)的周期,默認(rèn)為天。 |
annualization | int, optional | 交易日總數(shù)(用于計(jì)算年化)。如果是daily,則默認(rèn)為252個(gè)交易日。 |
_downside_risk | float, optional | 給定輸入的下跌風(fēng)險(xiǎn)。如果沒(méi)有提供則自動(dòng)計(jì) |
-
參數(shù)
+關(guān)注
關(guān)注
11文章
1838瀏覽量
32252 -
代碼
+關(guān)注
關(guān)注
30文章
4791瀏覽量
68669 -
python
+關(guān)注
關(guān)注
56文章
4797瀏覽量
84739
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論