Skip to content

Phase 10 Session 2 — Conviction-weighted institutional flow (primary rejected, ultra-T1 under research gate)#10

Merged
shiviancodes merged 3 commits into
mainfrom
feature/phase10-session2
May 17, 2026
Merged

Phase 10 Session 2 — Conviction-weighted institutional flow (primary rejected, ultra-T1 under research gate)#10
shiviancodes merged 3 commits into
mainfrom
feature/phase10-session2

Conversation

@shiviancodes

Copy link
Copy Markdown
Owner

Summary

  • institutional_conviction_flow (T1+T2 weighted Δpct_portfolio) is null at every horizon (best raw t=+0.94, HLZ fail) → status='rejected'.
  • institutional_conviction_flow_ultra_t1 (5 most-concentrated T1 funds only) shows full-window 21d t=+1.74 and late-third 21d/63d t=+3.02/+3.33 — material but in-sample, still below HLZ → status='research' with a dated review gate (2026-08-15: promote if full-window 21d t > 2.0 on extended Q2-2026 sample).
  • Migration 0012 adds fund_strategy table (22-row seed: 9 T1 + 4 T2 + 6 T3 passive + 3 banks flagged exclude_from_flow).
  • Factor is point-in-time gated on ownership_edges.available_as_of (13F filing date, not quarter_end). 9 TDD tests, all green.
  • Aggregator and paper trader untouched.

…ted, ultra-T1 variant under research gate

Tests Δpct_portfolio of T1+T2 active managers (conviction-tier-weighted) as a
second alpha alongside fundamental_margin_compression. Primary construction
(9 T1 funds @ weight 1.0 + 4 T2 funds @ weight 0.4) is null at every horizon
(best raw t=+0.94 at 63d on N=54; HLZ M=400 threshold |t|≈3.78). Registered
status='rejected' in signal_registry.

Restricting to the 5 ultra-concentrated T1 funds only (Lone Pine, Viking,
Tiger, Coatue, Point72 — all avg holdings ≤ 62 of a 140-ticker universe)
roughly doubles the full-window 21d t-stat to +1.74 and produces 21d/63d
late-third t-stats of +3.02 / +3.33 on n=18-20. Still fails HLZ; late-third
is in-sample by construction. Registered as a named variant
'institutional_conviction_flow_ultra_t1' with status='research' and an
explicit dated review gate (2026-08-15, promotion rule: full-window 21d
t > 2.0 on the Q2-2026-extended sample). NOT wired into aggregator;
paper trader unchanged from Phase 10 Session 1.

Migration 0012 adds fund_strategy(fund_id, conviction_tier, exclude_from_flow,
strategy_note) with a 22-row seed: 9 T1 + 4 T2 + 6 T3 passive + 3 T3 bank
13Fs flagged exclude_from_flow (Goldman/MS/JPM — custody and facilitation
flows are not a conviction signal).

Factor is point-in-time gated on ownership_edges.available_as_of (the 13F
filing date, median +44d after quarter_end). 9 TDD tests cover tier-3
exclusion, bank-exclusion, point-in-time integrity, new-position and
liquidation deltas, and size-invariance of the Δpct normalization.
The 22 fund rows in companies(node_type='fund') are inserted as a side
effect of scripts/run_ownership_extraction.py (EDGAR 13F ingestion), not
by any migration. CI runs alembic upgrade head on a fresh database with
no ingested data, so the seed found 0 funds to resolve and the integrity
check raised.

Differentiate two states in upgrade():
  - seeded == 0  -> warn and continue (fresh DB / pre-bootstrap)
  - 0 < seeded < 22  -> still raise (partial state is a real data bug)

Add scripts/bootstrap_fund_strategy.py as the explicit post-ingestion
recovery path. It imports _SEED from the migration module (single source
of truth) and runs the same INSERT ... ON CONFLICT logic, raising if any
fund CIK is still missing from companies. Idempotent.
@shiviancodes shiviancodes merged commit e8dda77 into main May 17, 2026
1 check passed
@shiviancodes shiviancodes deleted the feature/phase10-session2 branch May 17, 2026 23:30
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