一种使用 Black、Black-Scholes 和 Black-Scholes-Merton 定价计算隐含波动率和希腊字母的快速矢量化方法。
项目描述
py_vollib_vectorized
介绍
该py_vollib_vectorized软件包可以快速轻松地为数千种期权合约定价和计算希腊字母。它建立在py_vollib图书馆之上。导入时会自动打补丁对应的py_vollib函数,支持向量化。然后可以将输入作为浮点数、元组、列表numpy.array、 或传递pandas.Series。对输入执行自动广播。
除了矢量化之外,对 py_vollib 的修改还包括额外的numba加速;因此,numba是必需的。这些加速py_vollib_vectorized为期权合约定价提供了最快的库。
有关更多详细信息,请参阅文档。
安装
pip install py_vollib_vectorized
要求
- 为 Python 3.5+ 编写
- 需要 py_vollib、numba、numpy、pandas、scipy
代码示例
该库可以以两种方式使用。导入后,它会猴子修补(即替换)py_vollib.
作为一种更通用的替代方案,希望使用专用期权定价 API 的用户可以使用该库提供的实用程序函数。
打补丁py_vollib
# The usual py_vollib syntax
import numpy as np
import pandas as pd
import py_vollib.black_scholes
flag = 'c' # 'c' for call, 'p' for put
S = 100 # Underlying asset price
K = 90 # Strike
t = 0.5 # (Annualized) time-to-expiration
r = 0.01 # Interest free rate
iv = 0.2 # Implied Volatility
option_price = py_vollib.black_scholes.black_scholes(flag, S, K, t, r, iv) # 12.111581435
# This library keeps the same syntax, but you can pass as input any iterable of values.
# This includes list, tuple, numpy.array, pd.Series, pd.DataFrame (with only a single column).
# Note that you must pass a value for each contract as *no broadcasting* is done on the inputs.
# Patch the original py_vollib library by importing py_vollib_vectorized
import py_vollib_vectorized # The same functions now accept vectors as input!
# Note that the input arguments are broadcasted.
# You can specify ints, floats, tuples, lists, numpy arrays or Series.
flag = ['c', 'p'] # 'c' for call, 'p' for put
S = (100, 100) # Underlying asset prices
K = [90] # Strikes
t = pd.Series([0.5, 0.6]) # (Annualized) times-to-expiration
r = np.array([0.01]) # Interest free rates
iv = 0.2 # Implied Volatilities
option_price = py_vollib.black_scholes.black_scholes(flag, S, K, t, r, iv, return_as='array')
# array([12.11158143, 2.02418536])
实用功能
我们还定义了其他实用函数,以在一次调用中获取所有合约价格、隐含波动率和希腊字母。
import pandas as pd
from py_vollib_vectorized import price_dataframe, get_all_greeks
# Using the data above, we can calculate all contracts greeks in a single call
greeks = get_all_greeks(flag, S, K, t, r, iv, model='black_scholes', return_as='dict')
# {'delta': array([ 0.80263679, -0.21293214]),
# 'gamma': array([0.0196385, 0.01875498]),
# 'theta': array([-0.01263557, -0.00964498]),
# 'rho': array([0.34073321, -0.13994668]),
# 'vega': array([0.19626478, 0.22493816])}
# We can also price a dataframe easily by specifying a dataframe and the corresponding columns
df = pd.DataFrame()
df['Flag'] = ['c', 'p']
df['S'] = 95
df['K'] = [100, 90]
df['T'] = 0.2
df['R'] = 0.2
df['IV'] = 0.2
result = price_dataframe(df, flag_col='Flag', underlying_price_col='S', strike_col='K', annualized_tte_col='T',
riskfree_rate_col='R', sigma_col='IV', model='black_scholes', inplace=False)
# Price delta gamma theta rho vega
# 2.895588 0.467506 0.046795 -0.045900 0.083035 0.168926
# 0.611094 -0.136447 0.025739 -0.005335 -0.027151 0.092838
有关更多详细信息,请参阅文档。
基准测试
与循环遍历合约或使用内置的 pandas 功能相比,这个库非常节省内存,并且可以快速且很好地扩展到大量合约。
致谢
这个库优化了py_vollib代码库,它本身建立在 Peter Jäckel 的让我们理性的方法论之上。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
py_vollib_vectorized-0.1.1.tar.gz
(26.7 kB
查看哈希)
内置分布
关
py_vollib_vectorized -0.1.1.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 5d10d2eb94d462ae4a0edabe33c38d9fec47e8f432b48d63ae34cddd73b8d1a8 |
|
| MD5 | 9bb0609532db2845b202095e1ced7411 |
|
| 布莱克2-256 | 6e0bf29a131bf3a46a0413fad1729ec39d21f7be98f3f58de9833b735e806a65 |
关
py_vollib_vectorized -0.1.1-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | a8ebd2079dd52fd9cfef5a9a7afe83f8876d54218abc711990fd97d125b3e1d9 |
|
| MD5 | 60c2fb9e617be8d5c7ae69e90dddd033 |
|
| 布莱克2-256 | e0e657012148e9d899505ac1d99abe5ce0d22ff8c233c462a9c57b9c6388683a |