做什么(One-liner)
Canvas 上的"风险管理"节点 —— 从上游 price_factor 自动收 symbol,POST 到 /portfolio/risk-metrics route。完整风险指标计算在 route card 里(portfolio_risk_metrics)。
怎么用
Canvas 拖 risk_management_v1,上游接一个 price_factor_v1 节点(或填 params.symbol)。可选 benchmark(default SPY)+ period(default '1y')。输出完整风险 dict。
核心公式
本 graphlet 不做计算 —— 只是 Canvas wiring + 默认参数:
// frontend/src/components/modern/unified-canvas/ExecutionRouter.ts:1913
upstream_syms = getUpstreamPFSymbols(node.id)
symbol = upstream_syms[0] || params.symbol || 'SPY'
POST /portfolio/risk-metrics {
symbol: normalizeSymbol(symbol),
benchmark: normalizeSymbol(params.benchmark || 'SPY'),
period: params.period || '1y',
}风险指标公式(VaR / CVaR / Beta / MaxDD / Sharpe)在 portfolio_risk_metrics card 完整记录。
假设与适用场景
假设:上游 price_factor 提供 symbol;/portfolio/risk-metrics route 可用;normalizeSymbol 别名映射正确。
适用:Canvas 策略图里给 portfolio 输出加 risk overlay;快速 historical VaR / CVaR / Beta 节点。
不适用:multi-asset aggregation;custom confidence_levels;非 Canvas 场景(直接调 route)。
输入 / 输出契约
Canvas params: {symbol?, benchmark?, period?} → 完整 route response + Canvas metadata(label, nodeId, executionTime, status, _source)。
已知局限
- Canvas wrapper 不暴露 custom
confidence_levels/risk_free_rate - 多上游 price_factor 时只取
[0] - Route-level limitations 见
portfolio_risk_metricscard
参考文献
完整文献在 portfolio_risk_metrics card(Jorion 2006, Artzner et al. 1999 CVaR theory, etc.)。
Golden Test
本 graphlet 的 golden 和 portfolio_risk_metrics route 共用(同一 test suite 验证 wiring + route math)。1e-10 tolerance。6 tests 在 tests/golden/python/test_portfolio_risk_metrics_golden.py。
Changelog
- 1.0.0 (2026-04-20) — 首次 Active(points to real route after legacy cleanup 2026-04-20)

