模块由四个相互独立、无内部依赖的纯计算文件组成,每个文件封装一类量化模型并以 frozen dataclass 暴露结果对象:
- attribution.py:单期 Brinson-Fachler 分解(allocation/selection/interaction)通过 brinson_fachler 产出 BrinsonResult;多期通过 carino_link + carino_factor 以 Carino 对数链接聚合为 LinkedAttribution,严格保证三效应之和等于复合主动收益。
- credit.py:集中 Altman Z-Score(original/prime/double_prime 三种变体)、Merton 结构模型(merton_asset_solve 用 scipy.optimize.fsolve 在 log 空间求解资产价值与波动率)、KMV 距离与 EDF 参考带,以及基于 pandas 的信用利差时序分析 credit_spread_analysis 与横截面利差表 spread_term_structure。
- impact.py:提供固定滑点、线性冲击、平方根冲击三种价格影响模型及信号延迟 delayed_execution,所有模型共享 _check_order / _participation_rate / _fill 三个内部校验与填充工具,统一将相对冲击按方向乘到参考价上并拒绝导致非正成交价的极端订单。
- factormodel.py:Barra 风格的截面风格因子模型,从 STYLE_FACTOR_DEFINITIONS 构建特征 → standardise_exposures(Winsorise + 市值加权均值 + 等权标准差)→ build_style_exposures → 每日横截面回归 cross_sectional_factor_returns(sqrt(mkt cap) 加权最小二乘,截距即 market 因子)→ 组合暴露聚合 portfolio_style_exposure、漂移汇总 style_drift 与贡献归因 factor_return_attribution。
依赖方向单向向外:仅依赖 numpy/pandas/scipy/math 标准库或科学计算库,不反向引用 quantlib 其他子包,便于单独 import。