Empyrical 超簡單教你一行代碼計算風險指標
Empyrical 是一個知名的金融風險指標庫。它能夠用于計算年平均回報、最大回撤、Alpha值、Beta值、卡爾馬率、Omega率、夏普率等。它還被用于zipline和pyfolio,是Quantopian開發(fā)的三件套之一。
下面就教你如何使用 Empyrical 這個風險指標計算神器。
1.準備
開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細Python安裝指南?進行安裝。
(可選1)?如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda,它內(nèi)置了Python和pip.
(可選2)?此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點:Python 編程的最好搭檔—VSCode 詳細指南。
請選擇以下任一種方式輸入命令安裝依賴:
1. Windows 環(huán)境 打開 Cmd (開始-運行-CMD)。
2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install empyrical2. Empyrical 基本使用
計算最大回撤,你只需要從?empyrical?庫中引入?max_drawdown?,將數(shù)據(jù)作為參數(shù)傳入計算,一行代碼就能實現(xiàn):
import?numpy as?np
from?empyrical import?max_drawdown
returns = np.array([.01, .02, .03, -.4, -.06, -.02])
# 計算最大回撤
max_drawdown(returns)
# 結(jié)果:-0.4472800000000001同樣地,如果你需要計算alpha和beta指標:
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])
# 計算alpha和Beta值
alpha, beta = alpha_beta(returns, benchmark_returns)
print(alpha, beta)
# 結(jié)果:-0.7960672549836803 1.1243025418474892如果你想要計算夏普率,同樣也是一行代碼就能解決,只不過你需要注意這幾個參數(shù)的意義:
import?numpy as?np
from?empyrical import?sharpe_ratio
returns = np.array([.01, .02, .03, -.4, -.06, -.02])
# 計算夏普率
sr = sharpe_ratio(returns, risk_free=0, period='daily', annualization=None)
print(sr)
# 結(jié)果:-6.7377339531573535各個參數(shù)的意義如下:
| 參數(shù) | 數(shù)據(jù)類型 | 意義 |
| returns | pandas.Series | 策略的日回報,非累積。 |
| risk_free | float | 本周期內(nèi)的無風險利率 |
| period | str, optional | 確定回報數(shù)據(jù)的周期,默認為天。 |
| annualization | int, optional | 交易日總數(shù)(用于計算年化) 如果是daily,則默認為252個交易日。 |
3.更多的指標
Empyrical 能提供使用的指標非常多,這里就不一一介紹了,基本上用法都和夏普率的計算方法差不多,這里介紹他們的方法和參數(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 | 策略的日回報,非累積。 |
| risk_free | float | 本周期內(nèi)的無風險利率 |
| required_return | float, optional | 投資者可接受的最低回報。 |
| annualization | int, optional | 交易日總數(shù)(用于計算年化) 如果是daily,則默認為252個交易日。 |
3.2?calmar_ratio
empyrical.calmar_ratio(returns, period='daily', annualization=None)| 參數(shù) | 數(shù)據(jù)類型 | 意義 |
| returns | pandas.Series | 策略的日回報,非累積。 |
| period | str, optional | 確定回報數(shù)據(jù)的周期,默認為天。 |
| annualization | int, optional | 交易日總數(shù)(用于計算年化)。如果是daily,則默認為252個交易日。 |
3.3?sortino_ratio
empyrical.sortino_ratio(returns, required_return=0, period='daily', annualization=None, _downside_risk=None)| 參數(shù) | 數(shù)據(jù)類型 | 意義 |
| returns | pandas.Series | 策略的日回報,非累積。 |
| required_return | float | 最小投資回報 |
| period | str, optional | 確定回報數(shù)據(jù)的周期,默認為天。 |
| annualization | int, optional | 交易日總數(shù)(用于計算年化)。如果是daily,則默認為252個交易日。 |
| _downside_risk | float, optional | 給定輸入的下跌風險。如果沒有提供則自動計算 |
更多的指標及其說明,請查看empyrical源代碼的stats.py文件,里面還包含了所有指標的計算邏輯,如果你想了解每個指標的計算方法,可以查看這個文件進行學習:
https://github.com/quantopian/empyrical/blob/master/empyrical/stats.py
我們的文章到此就結(jié)束啦,如果你喜歡今天的Python 實戰(zhàn)教程,請持續(xù)關(guān)注Python實用寶典。
有任何問題,可以在公眾號后臺回復:加群,回答相應(yīng)紅字驗證信息,進入互助群詢問。
原創(chuàng)不易,希望你能在下面點個贊和在看支持我繼續(xù)創(chuàng)作,謝謝!
點擊下方閱讀原文可獲得更好的閱讀體驗
Python實用寶典?(pythondict.com)
不只是一個寶典
歡迎關(guān)注公眾號:Python實用寶典
