脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python+Empyrical实现计算风险指标

Python+Empyrical实现计算风险指标

2022-11-08 10:35Ckend Python

Empyrical 是一个知名的金融风险指标库。它能够用于计算年平均回报、最大回撤、Alpha值等。下面就教你如何使用 Empyrical 这个风险指标计算神器

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.

?
1
pip install empyrical

2. Empyrical 基本使用

计算最大回撤,你只需要从 empyrical 库中引入 max_drawdown ,将数据作为参数传入计算,一行代码就能实现:

?
1
2
3
4
5
6
7
8
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指标:

?
1
2
3
4
5
6
7
8
9
10
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

如果你想要计算夏普率,同样也是一行代码就能解决,只不过你需要注意这几个参数的意义:

?
1
2
3
4
5
6
7
8
9
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

各个参数的意义如下:

参数 数据类型 意义
returns pandas.Series 策略的日回报,非累积。
risk_free float 本周期内的无风险利率
period str, optional 确定回报数据的周期,默认为天。
annualization int, optional 交易日总数(用于计算年化)
如果是daily,则默认为252个交易日。

3.更多的指标

Empyrical 能提供使用的指标非常多,这里就不一一介绍了,基本上用法都和夏普率的计算方法差不多,这里介绍他们的方法和参数。

3.1 omega_ratio

?
1
empyrical.omega_ratio(returns, risk_free=0.0, required_return=0.0, annualization=252)
参数 数据类型 意义
returns pandas.Series 策略的日回报,非累积。
risk_free float 本周期内的无风险利率
required_return float, optional 投资者可接受的最低回报。
annualization int, optional 交易日总数(用于计算年化)
如果是daily,则默认为252个交易日。

3.2 calmar_ratio

?
1
empyrical.calmar_ratio(returns, period='daily', annualization=None)
参数 数据类型 意义
returns pandas.Series 策略的日回报,非累积。
period str, optional 确定回报数据的周期,默认为天。
annualization int, optional 交易日总数(用于计算年化)。如果是daily,则默认为252个交易日。

3.3 sortino_ratio

?
1
empyrical.sortino_ratio(returns, required_return=0, period='daily', annualization=None, _downside_risk=None)
参数 数据类型 意义
returns pandas.Series 策略的日回报,非累积。
required_return float 最小投资回报
period str, optional 确定回报数据的周期,默认为天。
annualization int, optional 交易日总数(用于计算年化)。如果是daily,则默认为252个交易日。
_downside_risk float, optional 给定输入的下跌风险。如果没有提供则自动计算

更多的指标及其说明,请查看empyrical源代码的stats.py文件,里面还包含了所有指标的计算逻辑,如果你想了解每个指标的计算方法,可以查看这个文件进行学习

到此这篇关于Python+Empyrical实现计算风险指标的文章就介绍到这了,更多相关Python Empyrical计算风险指标内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://mp.weixin.qq.com/s/Abo1q706Aa2ZOu0brjt2eg

延伸 · 阅读

精彩推荐