Skip to content

Complete point-in-time universe remediation and v1 research closeout - #12

Merged
dvp2004 merged 4 commits into
mainfrom
agent/free-pit-universe-remediation-v1
Aug 14, 2026
Merged

Complete point-in-time universe remediation and v1 research closeout#12
dvp2004 merged 4 commits into
mainfrom
agent/free-pit-universe-remediation-v1

Conversation

@dvp2004

@dvp2004 dvp2004 commented Jul 30, 2026

Copy link
Copy Markdown
Owner

Summary

  • completes the final bounded zero-cost point-in-time universe qualification;
  • records the persisted blocked canonical verdict without weakening gates;
  • fixes deterministic corporate-action Parquet serialization;
  • closes the Market Strats Lab v1 research cycle;
  • adds public-safe final research documentation and aggregate figures.

Final canonical universe result

  • verdict: blocked_identity_reconciliation_failure
  • historical endpoint: 2026-05-01
  • resolved identities: 42 / 1,126
  • membership conflicts: 36
  • price audit: 779 available / 348 unavailable
  • unresolved delisting outcomes: 648
  • qualified decisions: 0 / 365
  • model training authorized: false

SEC acquisition succeeded with HTTP 200 and 10,398 mappings. Alpha Vantage was not used and remained optional.

Research conclusion

  • SPY remained the raw-return benchmark winner.
  • The best ETF overlay materially reduced historical drawdown while sacrificing some return.
  • The stock-ranking pilot produced encouraging but noncanonical, survivorship-biased research evidence.
  • Point-in-time identity, membership, delisting, and terminal-value evidence became the binding zero-cost limitation.

Validation

  • universe tests: 76 passed
  • MI-only portable tests: 219 passed
  • full non-artifact suite: 1,279 passed, 244 deselected, 44 warnings
  • scoped Ruff: passed
  • Ruff format: passed for 11 changed Python files
  • git diff and publication-boundary scans: passed
  • Markdown/repository path checks: passed

Boundaries

  • no model training
  • no new strategy
  • no backtest or network qualification rerun during publication preparation
  • no contract relaxation
  • no broker or live action
  • no raw, restricted, credential, or runtime data committed

@dvp2004 dvp2004 changed the title Remediate free point-in-time universe evidence Complete point-in-time universe remediation and v1 research closeout Aug 14, 2026
@dvp2004
dvp2004 marked this pull request as ready for review August 14, 2026 14:14

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4e33dcaa26

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +96 to +100
raw_date = row.get("date") or row.get("effective date") or ""
try:
effective = date.fromisoformat(raw_date)
except ValueError:
continue

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Parse Wikimedia's rendered dates before filtering

When the pinned Wikimedia change table supplies its rendered date format (for example, September 22, 2025) rather than an ISO string, date.fromisoformat raises and this code silently discards the row. Consequently, the post-2025-08-23 additions and removals are omitted and the endpoint universe remains the stale seed universe; parse the source's actual date representation and fail closed on unexpected nonempty dates instead of skipping them.

Useful? React with 👍 / 👎.

Comment on lines +308 to +311
reconstructed, extension_conflicts = apply_membership_extensions(
active_tickers=seed_symbols,
extensions=extensions,
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Reconcile the reconstructed endpoint instead of the stale seed

When membership changed between the seed's 2025-08-23 snapshot and the frozen endpoint, the earlier seed_symbols ^ wiki_symbols loop records every legitimate intervening change as an unresolved conflict before these extensions are applied. Even if replay produces exactly wiki_symbols, those conflicts remain and later force membership_sources_do_not_fully_reconcile; compare reconstructed with the endpoint symbols or replace the provisional conflicts after replay.

Useful? React with 👍 / 👎.

Comment on lines +205 to +206
response = self.get_response(url, headers, self.timeout_seconds)
self._last_request_at = time.monotonic()

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Retry transient SEC transport exceptions

When requests.get raises a timeout or connection exception, this call exits _fetch immediately because only returned HTTP statuses participate in the retry loop. The pipeline then marks the entire SEC identity source unavailable after one transient failure despite maximum_attempts being configured; catch retryable transport exceptions here and apply the same bounded backoff policy.

Useful? React with 👍 / 👎.

Comment on lines 421 to 424
snapshot_manifest["sources"][price_source.source_id] = {
"bounded_ticker_limit": int(limits["maximum_price_tickers"]),
"audit_scope": "all_effective_dated_provider_tickers",
"requested_tickers": sample_tickers,
"results": price_results,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Validate interval coverage before declaring a full price audit

For an old or delisted ticker where Yahoo returns only a truncated portion of the requested history, this manifest claims a full effective-dated audit even though price_coverage later labels the security available whenever any row exists. Missing prices at the start or end of its membership interval therefore do not contribute to the global price-coverage failure count; drive the audit from effective ticker intervals and classify first/last coverage against those bounds before recording this scope.

Useful? React with 👍 / 👎.

@dvp2004
dvp2004 merged commit 959f366 into main Aug 14, 2026
1 check passed
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