What (One-liner)
Canvas Bear Agent, symmetric to bull_agent_v1: shares the same 2 calls — bull_portfolio (SPY+QQQ) / bear_portfolio (TLT+GLD) simulation — but the UI extracts the bear weight instead.
How to use
macro_snapshot_v1 → bear_agent_v1 (regime=contraction, n_periods=12)
→ weight=0.75, total_return=-1.8%, max_drawdown=5.2%Paired pattern:
┌─ bull_agent_v1
regime ┤
└─ bear_agent_v1
(both nodes share the backend; only the extracted weight field differs)Core formulas
Identical to bull_agent_v1 (shared backend). Canvas picks bear_weight vs bull_weight at extraction time based on graphletType === 'bear_agent_v1'.
Assumptions & applicability
Same as bull_agent_v1.
Known limitations
See the bull_agent_v1 card for the full list — bear_agent_v1 shares all backend constraints.
References
Same as bull_agent_v1 (Faber 2007 + Pangura Internal Rulebook).
Golden Test
Shares the bull_agent_v1 golden test suite (casa_trader_select + casa_dual_agent fixtures, 17 tests total). Because both graphlets call the same 2 endpoints, shared backend validation is sufficient.
Changelog
- 1.0.0 (2026-04-21) — First Active (Tier 4 batch 1.3; sister operator bull_agent_v1)

