Skip to content

Add Financial Modeling Prep calendar events ingestion#9

Merged
DevDizzle merged 2 commits into
masterfrom
codex/integrate-fmp-calendar-apis-into-pipeline
Sep 8, 2025
Merged

Add Financial Modeling Prep calendar events ingestion#9
DevDizzle merged 2 commits into
masterfrom
codex/integrate-fmp-calendar-apis-into-pipeline

Conversation

@DevDizzle

Copy link
Copy Markdown
Owner

Summary

  • add generic fetch_calendar helper to FMPClient
  • configure calendar_events BigQuery table id
  • ingest earnings, economic, dividend, IPO and stock split calendars into Calendar_Events wide table
  • expose new Cloud Function and workflow step to refresh calendar events

Testing

  • pytest -q
  • python -m py_compile ingestion/core/clients/fmp_client.py ingestion/core/config.py ingestion/core/pipelines/calendar_events.py ingestion/main.py

https://chatgpt.com/codex/tasks/task_e_68be1ba7ce10833195f63c31a0772bb7

@DevDizzle DevDizzle merged commit daf53d4 into master Sep 8, 2025
1 check passed
DevDizzle added a commit that referenced this pull request Sep 9, 2025
…s-into-pipeline

Add Financial Modeling Prep calendar events ingestion
@DevDizzle DevDizzle deleted the codex/integrate-fmp-calendar-apis-into-pipeline branch December 9, 2025 00:29
DevDizzle added a commit that referenced this pull request Jun 4, 2026
Adversarial multi-agent audit (every finding re-verified vs code+BQ data) found
16 silent bugs. 13 fixed; 3 deferred (need PIT data/schema). Trigger: OKTA $127
untradeable-ghost pick.

CRITICAL #1 (root cause): polygon_client stopped substituting day low/high for a
missing bid/ask — that produced fake/0% spreads on ~43% of picks (718/1815 = 0.0),
defeating the spread gate and feeding the judge "0.5% spread" ghosts. Missing quote
-> NULL spread; chosen contract now carries a real spread. Enrichment spread gate
loosened 0.08->0.30 (was filtering fake 0s; real spreads are wider).

HIGH #2: divergence flip resolves BEFORE conviction sub-scores (was scoring flipped
names on the abandoned side -> ~87% suppressed below MIN_SCORE). #5: judge prompt
strips still-stale volume/OI/V-OI (keeps now-real spread). #8: technicals window
bounded to scan_date not date.today() (was leaking next-day bars = lookahead).
#6/#7/#10: signal-notifier fallback moneyness band restored + dead gates/docs cleaned.

MED #9/#12/#13: trader symmetric slippage + stale-TIMEOUT + late-fill guards (removed
EV-optimism). #11: empty judge batch re-queues instead of dropping 10 candidates.
#14: in_top_5 is a real top-5. LOW #15: overnight_score fail-safe default. #16:
greeks store raw with None preserved (delta no longer NULL->0.0).

Deferred (separate pass): #3 OI frozen-snapshot, #4 volume frozen-cumulative (need
Polygon flat files / day-bars), #15-full (schema add). See
docs/DECISIONS/2026-06-04-pipeline-bug-fixes.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant