模块由三个职责正交的文件组成,依赖方向单向:risk.py 提供底层风险度量(历史/参数VaR、CVaR、最大回撤分析、GBM蒙特卡洛、GPD极值拟合),performance.py 基于外部实体 src.entities.cashflow.CashFlowSeries 与 src.entities.models.normalize_date 计算时间加权、修正Dietz与货币加权回报,var_backtest.py 消费 risk.py 产出的 VaR 序列并执行 Kupiec POF、Christoffersen 独立性与联合覆盖度检验以及 Basel 交通灯分类。
- 输入规范化层:risk.py 的 _clean_returns、_validate_confidence、_validate_horizon;performance.py 的 _normalize_valuations、external_flows;var_backtest.py 的 _align 统一将多源输入(pandas Series / numpy / 序列)清洗为带索引对齐的一维数组。
- 结果对象层:全部公共函数返回 frozen dataclass(SubPeriodReturn、TimeWeightedReturn、ModifiedDietzReturn、MoneyWeightedReturn、KupiecResult、IndependenceResult、ConditionalCoverageResult、TrafficLightResult、VarBacktestReport),保证不可变与可审计。
- 统计内核:risk.py 使用 scipy.stats(norm、genpareto)与 numpy;performance.py 仅用标准库 math/datetime,XIRR 通过二分法 _solve_irr 自实现;var_backtest.py 用 scipy.special.xlogy 与 chi2/binom 完成似然比检验。
- 模块间边界:var_backtest.py 明确声明只消费 risk.py 产出的 VaR 数值而不重新计算,performance.py 通过 DEFAULT_EXTERNAL_KINDS / DEFAULT_INTERNAL_KINDS 常量显式划分资金流边界,避免误把内部分红当作外部现金流。