feat(factors): net-share-issuance (Pontiff-Woodgate), screened positive#15
Open
EranDaniel98 wants to merge 2 commits into
Open
feat(factors): net-share-issuance (Pontiff-Woodgate), screened positive#15EranDaniel98 wants to merge 2 commits into
EranDaniel98 wants to merge 2 commits into
Conversation
… positive
Top cheap/on-disk item from the 2026-06-01 tri-model discovery agenda.
nsi_1y = log(shares_t / shares_{t-1y}) PIT from cached EDGAR companyfacts
(filing-date keyed), net repurchasers bullish. Built as a Postgres-free
sidecar mirroring accruals_pit.py.
factor_lab screen (3 regimes x {21d,63d}, n_perm=500): avg fwd-IC +0.0173,
100% sign-consistent across all 6 cells (joint directional p~0.016), 2/6 cells
individually significant. Mid-pack -- same band as the composite's own
pead/quality/value legs, and the cleanest new-factor screen of the session
(vs the distressed-insider NULL). Modest standalone signal; incremental value
over the live m+q+v+PEAD composite is the next gate (not answered by IC).
Limitation: EDGAR shares are as-reported, so splits look like issuance; the
extractor drops |nsi_1y|>0.5 as a crude split/M&A guard. Replace with Polygon
split adjustment if the factor proves incrementally valuable.
Files: src/factors/net_share_issuance.py, scripts/build_nsi_sidecar.py,
factor_lab wiring. Sidecars (data/snapshots/*/nsi_pit.json) are gitignored
(regenerable via build_nsi_sidecar).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…redundant) Adds `--composite-factors n` (loads the nsi sidecar; off by default, mqv unchanged) so net-share-issuance can be tested as a 5th composite leg. WF-gated phase-envelope vs mqv baseline across 3 regimes: NSI nudges CAPM-alpha +2.0pp (COVID) / +1.2pp (2022) but -1.7pp (bull), walk-forward equal-or-worse in all three, all deltas within per-window noise. Verdict: redundant, does NOT ship into the composite (overlaps existing premia). Leg kept as reusable test infra. Findings updated. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this is
The net-share-issuance factor (Pontiff-Woodgate composite-issuance anomaly) — the highest-conviction cheap, on-disk item from the 2026-06-01 tri-model discovery agenda. Built PIT from cached EDGAR companyfacts and screened through
factor_lab.Files
src/factors/net_share_issuance.py— PIT extractor + loader +net_share_issuance_factor()(ticker/raw/rank/z_score). Mirrorsaccruals_pit.py.scripts/build_nsi_sidecar.py— per-snapshotnsi_pit.jsonbuilder (reuses cached companyfacts; ~90% coverage, ~24k records/snapshot). Sidecar JSONs are gitignored (regenerable).scripts/factor_lab.py— NSI wired as a screenable base signal.reports/net_share_issuance_findings_2026-06-01.md— the screen write-up.Screen result (3 regimes × {21d, 63d}, n_perm=500)
Limitation
EDGAR shares are as-reported; splits masquerade as issuance. The extractor drops |nsi_1y| > 0.5 as a crude split/M&A guard — replace with proper Polygon split adjustment if the factor proves incrementally valuable.
Pure additive: a new factor module + sidecar builder + one screenable signal in factor_lab. No change to live trading logic.
🤖 Generated with Claude Code