首頁 > 軟體

Python+Empyrical實現計算風險指標

2022-05-28 14:00:18

Empyrical 是一個知名的金融風險指標庫。它能夠用於計算年平均回報、最大回撤、Alpha值、Beta值、卡爾馬率、Omega率、夏普率等。它還被用於zipline和pyfolio,是Quantopian開發的三件套之一。

下面就教你如何使用 Empyrical 這個風險指標計算神器。

1.準備

開始之前,你要確保Python和pip已經成功安裝在電腦上,如果沒有,可以存取這篇文章:超詳細Python安裝指南 進行安裝。

(可選1) 如果你用Python的目的是資料分析,可以直接安裝Anaconda,它內建了Python和pip.

(可選2) 此外,推薦大家用VSCode編輯器,它有許多的優點

為了實現識別貓的功能,我們需要安裝 paddlepaddle, 進入他們的官方網站就有詳細的指引

請選擇以下任一種方式輸入命令安裝依賴

1. Windows 環境 開啟 Cmd (開始-執行-CMD)。

2. MacOS 環境 開啟 Terminal (command+空格輸入Terminal)。

3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用介面下方的Terminal.

pip install empyrical

2. Empyrical 基本使用

計算最大回撤,你只需要從 empyrical 庫中引入 max_drawdown ,將資料作為引數傳入計算,一行程式碼就能實現:

import numpy as np
from empyrical import max_drawdown

returns = np.array([.01, .02, .03, -.4, -.06, -.02])

# 計算最大回撤
max_drawdown(returns)
# 結果:-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)
# 結果:-0.7960672549836803 1.1243025418474892

如果你想要計算夏普率,同樣也是一行程式碼就能解決,只不過你需要注意這幾個引數的意義:

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)
# 結果:-6.7377339531573535

各個引數的意義如下:

引數資料型別意義
returnspandas.Series策略的日回報,非累積。
risk_freefloat本週期內的無風險利率
periodstr, optional確定回報資料的週期,預設為天。
annualizationint, optional交易日總數(用於計算年化)
如果是daily,則預設為252個交易日。

3.更多的指標

Empyrical 能提供使用的指標非常多,這裡就不一一介紹了,基本上用法都和夏普率的計算方法差不多,這裡介紹他們的方法和引數。

3.1 omega_ratio

empyrical.omega_ratio(returns, risk_free=0.0, required_return=0.0, annualization=252)
引數資料型別意義
returnspandas.Series策略的日回報,非累積。
risk_freefloat本週期內的無風險利率
required_returnfloat, optional投資者可接受的最低迴報。
annualizationint, optional交易日總數(用於計算年化)
如果是daily,則預設為252個交易日。

3.2 calmar_ratio

empyrical.calmar_ratio(returns, period='daily', annualization=None)
引數資料型別意義
returnspandas.Series策略的日回報,非累積。
periodstr, optional確定回報資料的週期,預設為天。
annualizationint, optional交易日總數(用於計算年化)。如果是daily,則預設為252個交易日。

3.3 sortino_ratio

empyrical.sortino_ratio(returns, required_return=0, period='daily', annualization=None, _downside_risk=None)
引數資料型別意義
returnspandas.Series策略的日回報,非累積。
required_returnfloat最小投資回報
periodstr, optional確定回報資料的週期,預設為天。
annualizationint, optional交易日總數(用於計算年化)。如果是daily,則預設為252個交易日。
_downside_riskfloat, optional給定輸入的下跌風險。如果沒有提供則自動計算

更多的指標及其說明,請檢視empyrical原始碼的stats.py檔案,裡面還包含了所有指標的計算邏輯,如果你想了解每個指標的計算方法,可以檢視這個檔案進行學習

到此這篇關於Python+Empyrical實現計算風險指標的文章就介紹到這了,更多相關Python Empyrical計算風險指標內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com