{
  "version": "V2.12",
  "product_name": "US Sector Rotation Monitor",
  "brand_name": "Node Analytica",
  "start_date": "2018-01-01",
  "end_date": null,
  "tickers": [
    "XLK",
    "XLC",
    "XLY",
    "XLP",
    "XLE",
    "XLF",
    "XLV",
    "XLI",
    "XLB",
    "XLRE",
    "XLU",
    "SPY",
    "QQQ",
    "RSP",
    "IWM",
    "IWF",
    "IWD",
    "SMH",
    "MTUM",
    "QUAL",
    "USMV",
    "SPLV",
    "SPHB",
    "SOXX",
    "XSD",
    "IGV",
    "CLOU",
    "HACK",
    "FDN",
    "KBE",
    "KRE",
    "KIE",
    "IAI",
    "IBB",
    "XBI",
    "IHI",
    "IHF",
    "PPH",
    "IYT",
    "ITA",
    "XAR",
    "XRT",
    "ITB",
    "XHB",
    "PEJ",
    "CARZ",
    "XOP",
    "OIH",
    "XME",
    "COPX",
    "URA",
    "VNQ",
    "REZ",
    "ICF",
    "UTES"
  ],
  "sector_etfs": {
    "XLK": "Technology",
    "XLC": "Communication Services",
    "XLY": "Consumer Discretionary",
    "XLP": "Consumer Staples",
    "XLE": "Energy",
    "XLF": "Financials",
    "XLV": "Health Care",
    "XLI": "Industrials",
    "XLB": "Materials",
    "XLRE": "Real Estate",
    "XLU": "Utilities"
  },
  "benchmarks_and_factors": {
    "SPY": "S&P 500",
    "QQQ": "Nasdaq 100",
    "RSP": "S&P 500 Equal Weight",
    "IWM": "Russell 2000",
    "IWF": "Russell 1000 Growth",
    "IWD": "Russell 1000 Value",
    "SMH": "Semiconductors",
    "MTUM": "Momentum Factor",
    "QUAL": "Quality Factor",
    "USMV": "Minimum Volatility",
    "SPLV": "Low Volatility",
    "SPHB": "High Beta"
  },
  "horizons": {
    "1M": 21,
    "3M": 63,
    "6M": 126,
    "12M": 252,
    "18M": 378
  },
  "key_ratios": {
    "XLY/XLP": [
      "XLY",
      "XLP",
      "Discretionary vs Staples"
    ],
    "XLI/XLU": [
      "XLI",
      "XLU",
      "Industrials vs Utilities"
    ],
    "XLF/XLU": [
      "XLF",
      "XLU",
      "Financials vs Utilities"
    ],
    "XLK/XLU": [
      "XLK",
      "XLU",
      "Technology vs Utilities"
    ],
    "XLE/XLV": [
      "XLE",
      "XLV",
      "Energy vs Health Care"
    ],
    "SMH/SPY": [
      "SMH",
      "SPY",
      "Semiconductors vs S&P 500"
    ],
    "QQQ/SPY": [
      "QQQ",
      "SPY",
      "Nasdaq 100 vs S&P 500"
    ],
    "RSP/SPY": [
      "RSP",
      "SPY",
      "Equal Weight vs Cap Weight"
    ],
    "IWM/SPY": [
      "IWM",
      "SPY",
      "Small Caps vs Large Caps"
    ],
    "IWF/IWD": [
      "IWF",
      "IWD",
      "Growth vs Value"
    ],
    "SPHB/SPLV": [
      "SPHB",
      "SPLV",
      "High Beta vs Low Vol"
    ],
    "MTUM/USMV": [
      "MTUM",
      "USMV",
      "Momentum vs Min Vol"
    ]
  },
  "value_cycle": {
    "status": "LIVE SHADOW",
    "capital_approved": false,
    "live_shadow_start_date": "2026-07-24",
    "model_config": {
      "universe_warmup_sessions": 126,
      "beta_window": 126,
      "impulse_window": 126,
      "scale_window": 252,
      "publication_lag_sessions": 42,
      "confidence_threshold": 1.0,
      "smoothing_span": 5,
      "holding_months": 12,
      "transfer_budget": 0.2,
      "transaction_cost_bps": 25.0,
      "source_url": "https://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/F-F_Research_Data_5_Factors_2x3_daily_CSV.zip",
      "model_version": "VC1.0"
    },
    "factor_source": {
      "source": "Kenneth French Data Library",
      "source_url": "https://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/F-F_Research_Data_5_Factors_2x3_daily_CSV.zip",
      "sha256": "478350b8d60831351fbf754bc593fc0112b013552c24639c10902e1f26d7f306",
      "first_observation": "1963-07-01",
      "last_observation": "2026-07-31",
      "observations": 15876,
      "columns": [
        "Mkt-RF",
        "SMB",
        "HML",
        "RMW",
        "CMA",
        "RF"
      ],
      "mode": "official_current_download"
    },
    "locked_research_evidence": {
      "rank_ic_6m": 0.10954109787975601,
      "rank_ic_6m_newey_west_tstat": 3.005362004726721,
      "rank_ic_12m": 0.09943243510018754,
      "rank_ic_12m_newey_west_tstat": 2.391262475980659,
      "positive_rolling_5y_window_rate": 0.85,
      "bootstrap_probability_active_return_positive": 0.8701,
      "active_return_newey_west_tstat": 1.1548501300271485,
      "historical_edge_decision": "ADVANCE_TO_LIVE_SHADOW",
      "capital_deployment_decision": "NOT YET APPROVED"
    },
    "risk_management": {
      "status": "RESEARCH SHADOW",
      "capital_approved": false,
      "model_config": {
        "target_volatility": 0.12,
        "volatility_lookback_sessions": 63,
        "trend_lookback_sessions": 200,
        "defensive_floor": 0.25,
        "transaction_cost_bps": 10.0,
        "trading_days": 252,
        "model_version": "VCR1.0"
      },
      "current_summary": {
        "as_of_date": "2026-09-18",
        "signal_date": "2026-08-31",
        "risk_exposure": 1.0,
        "cash_weight": 0.0,
        "target_exposure": 1.0,
        "realized_volatility_63d": 0.07416940930348609,
        "volatility_exposure_signal": 1.0,
        "trend_exposure_signal": 1.0,
        "combined_exposure_signal": 1.0,
        "trend_status": "Risk-On",
        "status": "RESEARCH SHADOW",
        "capital_approved": false
      }
    }
  },
  "v24_product_changes": [
    "Robust weighted score with available-weight threshold",
    "Normalized Rotation Score 0-100",
    "Smoothed EWM(5) historical score chart with state bands"
  ],
  "v25_product_changes": [
    "0-100 score as primary dashboard metric",
    "score change 5D/21D",
    "action bias",
    "best rotation candidate",
    "internal risk-on composite",
    "macro conditions fusion",
    "model confidence",
    "heatmaps sorted by score"
  ],
  "v251_hotfix": [
    "Load Plotly JS in Macro Conditions because it is now the first chart in the dashboard"
  ],
  "v252_history_update": [
    "Charts 10, 11 and 13 use HISTORY_MONTHS_MAIN=30"
  ],
  "v26_rrg_decision_maps": [
    "Adds Sector Momentum Map",
    "Adds Current RRG without tails",
    "Moves improved RRG tails to appendix",
    "Exports decision map and RRG phase tables"
  ],
  "v261_chart_branding": [
    "Central watermark",
    "Bottom-left source text",
    "Bottom-right logo on all charts"
  ],
  "v262_branding_fix": [
    "Larger chart canvas",
    "Horizontal centered watermark",
    "De-duplicate watermark/logo",
    "Lower logo aligned with source text"
  ],
  "v263_institutional_refinements": [
    "Logo lowered",
    "Sector-only labels/legends",
    "Column-wise heatmap coloring",
    "Score attribution",
    "Sector breadth",
    "Industry drilldown template"
  ],
  "v27_industry_drilldown": [
    "Active industry universe",
    "Industry score vs SPY and parent sector",
    "Industry top/bottom",
    "Sector vs industry confirmation matrix",
    "Industry momentum map",
    "Full industry table in appendix"
  ],
  "v271_hotfix": [
    "Remove stale industry_template reference from HTML table rendering"
  ],
  "v28_deployment_ready": [
    "Deployment-aware repo paths",
    "Static docs/index.html publishing",
    "CSV/JSON downloads folder",
    "GitHub Actions workflow ready",
    "GitHub Pages compatible"
  ],
  "v281_hotfix": [
    "Pandas stack compatibility: remove deprecated/invalid dropna argument"
  ],
  "v29_institutional_web": [
    "Fixed institutional navigation",
    "Executive landing page",
    "Sector Core and Industry Drilldown selectors",
    "Macro and internals workspace",
    "Data and audit workspace",
    "Responsive tab panels",
    "Plotly resize handling",
    "Institutional footer"
  ],
  "v210_institutional_product_release": [
    "Favicon and social metadata",
    "Standalone methodology page",
    "Operational status",
    "Executive conclusions",
    "Compact what-changed cards",
    "Leadership breadth",
    "Investment implications",
    "Divergence detection",
    "Institutional disclaimer"
  ],
  "v211_institutional_visualization": [
    "Sector score ladder",
    "Selective-label momentum map",
    "State-shaped RRG with top-sector halo",
    "Score attribution total markers",
    "Top 5 / Top 8 / All sectors leadership history with median and IQR",
    "Leadership breadth pulse",
    "Leadership persistence",
    "Sector regime matrix",
    "Signal vs industry confirmation map",
    "Performance term structure",
    "Industry leader and laggard dot dashboards",
    "Industry confirmation scorecard",
    "Multi-horizon internals pulse",
    "Two-tier macro regime dashboard",
    "Heatmaps moved to audit"
  ],
  "v211_institutional_tables": [
    "Sticky headers",
    "Sticky first columns",
    "Search",
    "Multi-column filters",
    "Sortable columns",
    "Semantic status badges",
    "Standardized numeric formatting",
    "CSV downloads"
  ],
  "v211_bilingual_interface": [
    "Deterministic English and Spanish pages",
    "Browser-language detection",
    "Persistent EN/ES selector",
    "Spanish methodology page",
    "Shared untranslated CSV and JSON schema",
    "Canonical and hreflang metadata"
  ],
  "v2111_hotfix": [
    "Remove raw score before normalized institutional-table rename",
    "Validate duplicate columns before rendering",
    "Harden scalar formatter diagnostics"
  ],
  "v212_value_cycle_live_shadow": [
    "Independent HML 126D Value Cycle Overlay",
    "Fixed 42-session information lag",
    "Twelve monthly cohorts and 20% transfer budget",
    "Locked historical backtest separated from live shadow",
    "Current allocation, signal intensity and performance charts",
    "Public Data & Audit workspace removed",
    "Curated downloads only",
    "Separate Volatility + Trend risk-managed research portfolio",
    "Current total ETF and Cash / RF allocation"
  ],
  "score_weights": {
    "rel_mom_63_z": 0.28,
    "rel_mom_21_z": 0.16,
    "rel_mom_126_z": 0.12,
    "trend_distance_z": 0.14,
    "abs_mom_63_z": 0.1,
    "abs_mom_126_z": 0.06,
    "trend_health_score": 0.08,
    "volume_impulse_z": 0.04,
    "sector_macro_tailwind": 0.12
  },
  "created_at": "2026-09-19T00:29:09.190631"
}