The A5 cutover has been on and observed in production, so SEC Company Facts + DoltHub earnings are already the live source for `fundamental_data`. This removes everything the legacy path still occupied. Gone: the three providers and their config/env keys; the weekly `fundamental_collector` job; the cutover toggle (SEC + Dolt is now the unconditional path, so `off` can no longer silently freeze scoring inputs); the A5 parity report, whose deltas became structurally zero once the candidate builder started writing the table it compared against; and the FMP tier of universe bootstrap. Two behavioral notes: - Disabling **SEC Fundamentals Import** now stops the SEC network fetch only. The local cache refresh moved outside the job-enable check, because candidates also derive from daily closes and earnings events — freezing those on an ingestion pause would stale scoring with no fallback left to recover from. - `/ingestion/fetch?sources=fundamentals` still accepts the key and reports `skipped`; there is no per-ticker fetch any more. Migration 029 does not blanket-delete the leftover settings rows. Migrations run before the service restart, and pre-A6 code reads an absent `job_*_enabled` row as *enabled* — so the two behavior-bearing keys become tombstones pinned to safe values (hidden in Admin) and only the inert three are deleted. Removing the provider keys from the production `.env` is the matching rollout step. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
71 lines
2.4 KiB
Bash
71 lines
2.4 KiB
Bash
# Database
|
|
DATABASE_URL=postgresql+asyncpg://stock_backend:changeme@localhost:5432/stock_data_backend
|
|
|
|
# Auth
|
|
JWT_SECRET=change-this-to-a-random-secret
|
|
JWT_EXPIRY_MINUTES=60
|
|
|
|
# OHLCV Provider — Alpaca Markets
|
|
ALPACA_API_KEY=
|
|
ALPACA_API_SECRET=
|
|
|
|
# Sentiment Provider — Gemini with Search Grounding
|
|
GEMINI_API_KEY=
|
|
GEMINI_MODEL=gemini-2.0-flash
|
|
|
|
# Sentiment Provider — OpenAI
|
|
OPENAI_API_KEY=
|
|
OPENAI_MODEL=gpt-4o-mini
|
|
OPENAI_SENTIMENT_BATCH_SIZE=5
|
|
|
|
# Dolt bulk data — local clone of post-no-preference/earnings. Together with the
|
|
# SEC EDGAR block below this is the ONLY fundamentals source; there is no
|
|
# provider-API fallback.
|
|
# DOLT_BINARY: path to the dolt CLI (set the full path in dev if it's not on PATH,
|
|
# e.g. Windows: C:\Program Files\Dolt\bin\dolt.exe). DOLT_DATA_DIR holds the
|
|
# clones; in PRODUCTION it MUST be outside the deploy tree (deploy is
|
|
# rsync --delete) — e.g. /var/lib/signal-platform/dolt. The earnings clone lives
|
|
# at <DOLT_DATA_DIR>/<DOLT_EARNINGS_SUBDIR>. Production setup is automated by
|
|
# deploy/provision_fundamentals.sh; see docs/fundamentals-deployment.md.
|
|
DOLT_BINARY=dolt
|
|
DOLT_DATA_DIR=dolt-data
|
|
DOLT_EARNINGS_SUBDIR=earnings
|
|
# Free-space floor checked before a pull (clone is ~1.7 GB and grows). 5 GB is a
|
|
# safe production default; lower only on a space-constrained dev box.
|
|
DOLT_MIN_FREE_DISK_GB=5.0
|
|
# Hard timeout (s) on each dolt subprocess so a hung pull/sql can't pin the
|
|
# import connection + advisory lock.
|
|
DOLT_COMMAND_TIMEOUT_SECONDS=600.0
|
|
|
|
# SEC EDGAR (fundamentals, workstream A). SEC fair-access REQUIRES an identifying
|
|
# User-Agent with a REAL contact email — set it, or requests get 403'd. Stay well
|
|
# under 10 req/s (spacing below).
|
|
SEC_USER_AGENT=signal-platform/1.0 (contact: you@example.com)
|
|
SEC_REQUEST_SPACING_SECONDS=0.2
|
|
SEC_MAX_RETRIES=4
|
|
SEC_REQUEST_TIMEOUT_SECONDS=30.0
|
|
|
|
# Regime Monitor — FRED (VIX + HY credit spreads). Free key: https://fred.stlouisfed.org/docs/api/api_key.html
|
|
# Optional: without it the volatility (V1) and credit (C1) pillars show as n/a.
|
|
FRED_API_KEY=
|
|
|
|
# Scheduled Jobs
|
|
DATA_COLLECTOR_FREQUENCY=daily
|
|
SENTIMENT_POLL_INTERVAL_MINUTES=30
|
|
RR_SCAN_FREQUENCY=daily
|
|
|
|
# Scoring Defaults
|
|
DEFAULT_WATCHLIST_AUTO_SIZE=10
|
|
DEFAULT_RR_THRESHOLD=3.0
|
|
|
|
# Outcome Evaluation
|
|
# Trading days before an undecided setup expires at 0R
|
|
OUTCOME_EVALUATION_MAX_BARS=30
|
|
|
|
# Database Pool
|
|
DB_POOL_SIZE=5
|
|
DB_POOL_TIMEOUT=30
|
|
|
|
# Logging
|
|
LOG_LEVEL=INFO
|