Skip to content

feat(schema): signals.schema.json market_regime to 3-class — Phase 1C#344

Merged
cipher813 merged 1 commit into
mainfrom
feat/regime-3class-schema-trim
May 28, 2026
Merged

feat(schema): signals.schema.json market_regime to 3-class — Phase 1C#344
cipher813 merged 1 commit into
mainfrom
feat/regime-3class-schema-trim

Conversation

@cipher813
Copy link
Copy Markdown
Owner

Summary

Caution-regime retirement Phase 1C — data contract trim. Plan doc: alpha-engine-docs/private/caution-regime-retirement-260528.md.

  • market_regime enum: ["bull","neutral","caution","bear"]["bull","neutral","bear"] (3-class Ang-Bekaert).
  • Schema description names the SOTA framing + grandfather treatment.
  • 3 new tests pin enum invariant + caution-rejected + 3-class accept-all.

Why

Stress signals (VIX, HY OAS, SPY 30d return) flow through the continuous regime_intensity_z META_FEATURE (predictor L2 Ridge input) rather than discretizing into a 4th regime category. Portfolio-protective hysteresis is a separate axis on the predictor drawdown leg (risk_on/caution/risk_off); Phase 2 separates the type system so the leg's vocabulary stops aliasing into the macro regime vocabulary.

Historical signals.json artifacts in S3 with market_regime: "caution" are grandfathered — consumers tolerant of legacy enum on read, no S3 migration.

Test plan

  • test_market_regime_enum_is_3class — pins the enum literal
  • test_market_regime_caution_rejected — pins jsonschema rejection
  • test_each_3class_regime_accepted — forward-compat smoke
  • Full suite 1675 → 1678 passing

Phasing

🤖 Generated with Claude Code

Caution-regime retirement Phase 1C — data contract trim. Plan doc:
alpha-engine-docs/private/caution-regime-retirement-260528.md.

- market_regime enum: ["bull","neutral","caution","bear"] →
  ["bull","neutral","bear"] (3-class Ang-Bekaert taxonomy).
- Schema description names the SOTA framing: stress signals (VIX,
  HY OAS, SPY 30d return) flow through the continuous
  regime_intensity_z META_FEATURE rather than discretizing into a
  4th category, and portfolio-protective hysteresis is a separate
  axis on the predictor drawdown leg (risk_on/caution/risk_off).
- Historical signals.json artifacts with 'caution' in market_regime
  are GRANDFATHERED — consumers tolerant of legacy enum on read
  (no migration of S3 objects).

Tests:
- test_market_regime_enum_is_3class: pins the 3-class enum literal
- test_market_regime_caution_rejected: pins jsonschema rejection
- test_each_3class_regime_accepted: pins forward-compat smoke

Suite: 1675 → 1678 passing.

Composes with:
- alpha-engine-lib #86 (Phase 1A — RegimeLiteral chokepoint v0.42)
- alpha-engine-research Phase 1B (macro_agent retirement)
- alpha-engine-config Phase 1D (universe.yaml regime_guardrails
  caution thresholds removal + ROADMAP write-back)
- Phase 2 type-system separation (drawdown_tier ≠ market_regime)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@cipher813 cipher813 merged commit c6a617d into main May 28, 2026
1 check passed
@cipher813 cipher813 deleted the feat/regime-3class-schema-trim branch May 28, 2026 19:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant