27  2026-08-03

Restructured strawberry-labs from a single business-whitepaper README into a research-notebook shape: Vision → Literature Review → Research Questions → Methodology → Experiments → Publications → Research Journal → Code → Data Catalog → Academic References.

What moved and why:

Open follow-ups, tracked so they don’t get lost:

27.1 Later the same day: first experiments/ entry — factor catalogue results

Added experiments/2026-08-03-factor-catalogue-empirical-results, the first entry under this morning’s new convention. Motivation: the canonical 13-factor catalogue in phd/factor-models-and-benchmarks.md §10 states economic justification and style but no empirical evidence — and these factors are literally the proposal’s multiplex Layer 1, so “does the platform’s own implementation of each one actually show a signal” isn’t optional context, it’s a prerequisite.

What happened:

  • Re-projected the existing five-sidecar run 260526_6ddcd9 (already synthesized in platform/factors.md) onto the 13 catalogue rows, and pulled style/hypothesis_class/expected_sign from config/factors/*.yaml in SBFoundation directly rather than guessing.
  • Added two new columns per the operator’s request: a naive mean-return t-stat and a HAC (Newey–West) t-stat, computed the same way §3.3 of the factor-models note already computes CAPM/attribution alpha (sbattribution.ols.ols_hac) — reusing the existing estimator on the factor-return panel (ops.risk_factor_return) instead of the strategy NAV streams it’s currently wired to.
  • Both t-stat columns are specified but not computed — no sidecar currently produces them, and I didn’t want to hand-wave numbers into a repo that otherwise polices this hard. Marked PENDING with the exact method so a future pass (or a script) can fill them in mechanically.
  • Surfaced two things worth acting on before this table is trusted:
    1. beta/market_beta_252d and momentum_12_1/momentum_12m_1m are known-identical duplicates per the run synthesis — counting both sides would inflate the honest trial count (F-321) the platform otherwise tracks; (2) bb_lower_20 and the atomic residual_momentum_252d_eod have real evidence (the cleanest MCPT pass, and the highest IC-IR in the run respectively) but aren’t in the §10 catalogue at all, while the deprecated composite residual_momentum_252d occupies conceptual space that could be confused with its atomic sibling.

Open follow-up: write the actual t_naive/t_HAC computation and rerun this once F-136/F-137/F-138 have all landed in a NIGHTLY_FULL run, so the MCPT column stops being pre-fix evidence.

27.2 Later still: merged the catalog into one self-contained, per-family document

Operator asked to restructure again: list each factor in its own section, grouped by family, list-style rather than wide tables, each factor self-contained (justification, source table/column, empirical results together) — and to stop splitting the catalog across phd/factor-models-and-benchmarks.md §10 and the experiments/ entry.

  • Created phd/factor-catalog.md: 13 family sections, each factor as its own subsection with style, source table.column, hypothesis class/expected sign, lifecycle status, IC-IR, MCPT, and the two pending t-stats — all pulled from the same config lookups and run synthesis as the earlier pass, just reshaped and consolidated.
  • phd/factor-models-and-benchmarks.md §10 is now a short pointer to the new file instead of the table.
  • Slimmed experiments/2026-08-03-factor-catalogue-empirical-results/README.md down to a provenance record (what was run, the config-lookup correction, the pending-field method) rather than a duplicate of the data — the numbers live in one place now.
  • Added two factors the original 13-row table didn’t cover but the run data called for: residual_momentum_252d_eod (highest IC-IR in the run) under Momentum, and bb_lower_20 under Short-horizon reversal — kept specifically as a cautionary entry, since re-checking current config revealed it (and ma_50d/ma_200d/vwap_20d) were deprecated for cause in July for a look-ahead defect, after being the run’s cleanest MCPT result. Good reminder that a clean permutation p-value is necessary, not sufficient.