Metadata-Version: 2.4
Name: rust-py-calc-iv
Version: 0.1.2
Requires-Dist: numpy>=1.26
Summary: Fast Black-Scholes implied volatility calculation exposed from Rust to Python.
Requires-Python: >=3.11
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM

# rust-py-calc-iv

用 Rust 实现的 Black-Scholes 欧式看涨期权隐含波动率计算模块，通过 Python 扩展暴露给 Python 使用。

## 功能

- 支持单个欧式看涨期权 IV 计算。
- 支持批量输入六个 `numpy.ndarray[float64]`，返回一个 IV 数组。
- 批量计算时释放 GIL。
- 波动率从 `[1e-8, 10.0]` 开始搜索；如果 10 仍未夹住解，会自动向上扩展。
- 当期权价格低于或贴近理论下界时，返回 `1e-8`。
- 当输入非法或期权价格超过理论上界时，返回 `NaN`。

理论边界：

```text
lower = max(S * exp(-qT) - K * exp(-rT), 0)
upper = S * exp(-qT)
```

## 安装与构建

```powershell
uv sync
uv run maturin develop --release
```

## 使用

```python
import numpy as np
import rust_py_calc_iv

iv = rust_py_calc_iv.implied_vol_call(
    100.0, 100.0, 1.0, 0.03, 0.01, 8.827321225352122
)

ivs = rust_py_calc_iv.implied_vol_call_batch(
    np.array([100.0, 100.0]),
    np.array([100.0, 100.0]),
    np.array([1.0, 1.0]),
    np.array([0.03, 0.03]),
    np.array([0.01, 0.01]),
    np.array([8.827321225352122, 12.69400452623556]),
)
```

输入参数依次为：

- `S`：现货价格
- `K`：行权价格
- `T`：剩余期限，单位为年
- `r`：无风险利率，小数
- `q`：股息率，小数
- `market_price`：期权价格

## 测试

```powershell
uv run pytest
cargo test
cargo clippy --all-targets -- -D warnings
```

