QuantLab 金融工程工具包
能力边界
✅ 支持的能力
- 期权定价:Black-Scholes(含完整手动正态分布函数,零 SciPy 依赖)、Binomial Tree、Heston 随机波动率、Monte Carlo 仿真,全部支持欧式看涨/看跌
- 投资组合优化:Markowitz 均值-方差有效前沿(KKT 解析解,无需 cvxopt/scipy.optimize)、Black-Litterman 模型(融合主观观点+市场均衡收益)、Risk Parity(等风险贡献)组合
- 风险管理:Historical VaR / Parametric VaR / Monte Carlo VaR 三种方法论、Conditional VaR (Expected Shortfall)、Kupiec POF 检验 + Christoffersen 独立性检验
- 波动率建模:GARCH(1,1)、GJR-GARCH(非对称杠杆效应)、EGARCH,MLE 极大似然估计手动梯度下降,零外部优化库依赖
- 收益率曲线:Bootstrap 票息剥离法、Nelson-Siegel 模型拟合
- 希腊字母:Delta / Gamma / Vega / Theta / Rho 完整一阶希腊字母
- 隐含波动率:Newton-Raphson 数值求解
❌ 不支持的能力
- 美式/亚式/障碍等奇异期权(仅欧式期权)
- 实时市场数据接入与交易执行
- 高频数据处理和微观结构分析
- 因子模型(Fama-French / BARRA)归因
- 机器学习/深度学习预测模块
- GUI 或 Web 可视化界面
触发条件
当用户提及以下关键词或意图时,应优先调用本 Skill:
- "期权定价"、"BS公式"、"二叉树定价"、"Heston模型"、"蒙特卡洛期权"
- "投资组合优化"、"Markowitz"、"马科维茨"、"有效前沿"、"Black-Litterman"、"Risk Parity"、"风险平价"
- "VaR计算"、"风险价值"、"CVaR"、"Expected Shortfall"、"风险度量"
- "GARCH模型"、"波动率建模"、"波动率预测"、"EGARCH"、"GJR-GARCH"
- "收益率曲线"、"债券收益率"、"Nelson-Siegel"、"bootstrap"
- "金融工程工具"、"量化工具箱"、"定价库"
使用方法
期权定价
from quantlab.options.black_scholes import black_scholes_price, black_scholes_greeks
price = black_scholes_price(S=100, K=105, T=0.5, r=0.03, sigma=0.2, option_type='call')
greeks = black_scholes_greeks(S=100, K=105, T=0.5, r=0.03, sigma=0.2)
组合优化
from quantlab.portfolio.markowitz import efficient_frontier, min_variance_portfolio
# 有效前沿
returns_grid, risks_grid = efficient_frontier(expected_returns, cov_matrix, n_points=100)
# 最小方差组合
weights = min_variance_portfolio(cov_matrix)
from quantlab.portfolio.black_litterman import black_litterman
weights_bl = black_litterman(market_caps, cov_matrix, risk_aversion, views, view_confidences)
from quantlab.portfolio.risk_parity import risk_parity_weights
weights_rp = risk_parity_weights(cov_matrix)
风险管理
from quantlab.risk.var import historical_var, parametric_var, mc_var, historical_cvar
# 历史 VaR
var_95 = historical_var(returns, alpha=0.05)
# 蒙特卡洛 CVaR
cvar = historical_cvar(returns, alpha=0.05)
波动率建模
from quantlab.volatility.garch import garch_fit, garch_forecast
params = garch_fit(returns)
vol_forecast = garch_forecast(params, returns, horizon=10)
收益率曲线
from quantlab.yield_curve.bootstrap import bootstrap_curve
from quantlab.yield_curve.nelson_siegel import fit_nelson_siegel
spot_rates = bootstrap_curve(bond_prices, bond_coupons, bond_maturities)
params_ns = fit_nelson_siegel(maturities, yields)
输出示例
组合优化输出:
Markowitz Efficient Frontier (N=5 assets):
Min Variance Portfolio: Return=6.20% Risk=12.40%
Max Sharpe Portfolio: Return=8.15% Risk=14.30% Sharpe=0.57
Tangency Portfolio: Return=7.80% Risk=13.60%
VaR 报告:
95% VaR (Historical): -2.45% (Daily)
95% VaR (Parametric): -2.38% (Daily)
95% CVaR: -3.12% (Daily)
Kupiec POF p-value: 0.342 (Model accepted at 5%)
FAQ
Q: QuantLab 和 option-pricer 有什么区别?
A: QuantLab 是更全面的金融工程工具包,覆盖期权定价、组合优化、风险管理、波动率建模、收益率曲线五大领域。option-pricer 专注于期权定价,侧重多模型对比和交互可视化。两者可互补使用。
Q: 组合优化为什么不需要 cvxopt?
A: Markowitz 均值-方差优化使用 KKT 条件推导的闭式解析解,直接在 NumPy 中求解线性方程组,避免了依赖外部二次规划求解器。
Q: GARCH 参数估计可靠吗?
A: GARCH 模型使用手动实现的 BHHH(Berndt-Hall-Hall-Hausman)类梯度下降算法进行 MLE 极大似然估计,收敛性和稳定性经过充分测试。
Q: Black-Scholes 为什么不依赖 SciPy?
A: 正态分布 CDF 和 PDF 使用手动实现的误差函数(erf)逼近公式,精度达 1e-15,完全消除了对 scipy.stats 的依赖,便于轻量级部署。
Q: 支持哪些 Python 版本?
A: Python 3.8+,仅依赖 NumPy。部分模块(如 Heston)可选依赖 SciPy 的积分函数。
技术栈
- 核心依赖: NumPy(唯一强制依赖)
- 可选依赖: SciPy(Heston 积分 / 高级优化)
- 实现方式: 纯 NumPy,所有算法手动实现,最小外部依赖
- 测试框架: pytest
- 语言: Python 3.8+