Python+Empyrical實(shí)現(xiàn)計(jì)算風(fēng)險(xiǎn)指標(biāo)
Empyrical 是一個(gè)知名的金融風(fēng)險(xiǎn)指標(biāo)庫(kù)。它能夠用于計(jì)算年平均回報(bào)、最大回撤、Alpha值、Beta值、卡爾馬率、Omega率、夏普率等。它還被用于zipline和pyfolio,是Quantopian開(kāi)發(fā)的三件套之一。
下面就教你如何使用 Empyrical 這個(gè)風(fēng)險(xiǎn)指標(biāo)計(jì)算神器。
1.準(zhǔn)備
開(kāi)始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒(méi)有,可以訪問(wèn)這篇文章:超詳細(xì)Python安裝指南 進(jìn)行安裝。
(可選1) 如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda,它內(nèi)置了Python和pip.
(可選2) 此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點(diǎn)
為了實(shí)現(xiàn)識(shí)別貓的功能,我們需要安裝 paddlepaddle, 進(jìn)入他們的官方網(wǎng)站就有詳細(xì)的指引
請(qǐng)選擇以下任一種方式輸入命令安裝依賴:
1. Windows 環(huán)境 打開(kāi) Cmd (開(kāi)始-運(yùn)行-CMD)。
2. MacOS 環(huán)境 打開(kāi) Terminal (command+空格輸入Terminal)。
3. 如果你用的是 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ì)算 |
更多的指標(biāo)及其說(shuō)明,請(qǐng)查看empyrical源代碼的stats.py文件,里面還包含了所有指標(biāo)的計(jì)算邏輯,如果你想了解每個(gè)指標(biāo)的計(jì)算方法,可以查看這個(gè)文件進(jìn)行學(xué)習(xí)
到此這篇關(guān)于Python+Empyrical實(shí)現(xiàn)計(jì)算風(fēng)險(xiǎn)指標(biāo)的文章就介紹到這了,更多相關(guān)Python Empyrical計(jì)算風(fēng)險(xiǎn)指標(biāo)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python Logging 日志記錄入門學(xué)習(xí)
這篇文章主要介紹了Python Logging 日志記錄入門學(xué)習(xí),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06virtualenv隔離Python環(huán)境的問(wèn)題解析
virtualenv為應(yīng)用提供了隔離的Python運(yùn)行環(huán)境,解決了不同應(yīng)用間多版本的沖突問(wèn)題,這篇文章主要介紹了virtualenv隔離Python環(huán)境,需要的朋友可以參考下2022-06-06音頻處理 windows10下python三方庫(kù)librosa安裝教程
這篇文章主要介紹了音頻處理 windows10下python三方庫(kù)librosa安裝方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06Keras 中Leaky ReLU等高級(jí)激活函數(shù)的用法
這篇文章主要介紹了Keras 中Leaky ReLU等高級(jí)激活函數(shù)的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07pandas DataFrame創(chuàng)建方法的方式
這篇文章主要介紹了pandas DataFrame創(chuàng)建方法的方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08python代碼實(shí)現(xiàn)小程序登錄流程時(shí)序總結(jié)
這篇文章主要為大家介紹了python代碼實(shí)現(xiàn)小程序的登錄案例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04