Skip to content

Phase 9 Session 1 - EDGAR XBRL fundamental data layer + margin compression alpha factor#7

Merged
shiviancodes merged 6 commits into
mainfrom
feature/phase9-session1
May 17, 2026
Merged

Phase 9 Session 1 - EDGAR XBRL fundamental data layer + margin compression alpha factor#7
shiviancodes merged 6 commits into
mainfrom
feature/phase9-session1

Conversation

@shiviancodes

Copy link
Copy Markdown
Owner

Summary

  • New EDGAR XBRL companyfacts data layer: migration 0011 (form_type, accession_number, UNIQUE), nexus/data/edgar/forms/form_xbrl.py parser with filed >= end integrity
    invariant, and scripts/ingest_fundamentals.py per-ticker idempotent ingest. 74,662 rows / 137 of 140 tickers covered (3 foreign 20-F filers absent as expected).
  • Four fundamental factors in nexus/signals/factors/fundamental.py with pure helpers + DB-backed wrappers; opt-in dispatch wiring in backtest.py mirrors the
    supply_panel pattern.
  • fundamental_margin_compression (t = +4.834 at 126d) is the first NEXUS factor to pass HLZ Bonferroni / Holm / BH at M=400. Composer sign-flipped vs published
    literature — the empirical direction at 126d on the semiconductor universe is margin compression → outperformance (mean reversion / priced-for-perfection). CALM-regime t =
    +6.35; sub-window late-third t = +5.13 (strengthening, not decaying).
  • fundamental_roa (full-window t = +3.76) intentionally NOT registered — late-third decay to t = -0.06 with 6/6 sign split mirrors the Phase 5 momentum decay pattern.
    Documented for revisit after 2026 annual filings.
  • rd_intensity and asset_growth null at all three horizons.
  • Rolling registry refreshed: fundamental_margin_compression mean_IC positive in every window (min +0.016, max +0.181) so the aggregator mean_ic > 0 gate accepts it at
    every rebalance.
  • Paper trader Phase 9 vs Phase 8 baseline: CAGR +8.72% (vs +5.97%), Sharpe 0.488 (vs 0.374), Max DD -32.68% (vs -36.68%). The previously-dead 2025-09-30 → 2026-03-31
    100%-cash window from Phase 8 is no longer dead.
  • 150/150 tests pass (excluding test_health.py which needs live FastAPI).

@shiviancodes shiviancodes merged commit 7a9b54f into main May 17, 2026
1 check passed
@shiviancodes shiviancodes deleted the feature/phase9-session1 branch May 17, 2026 13:02
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