loop: faster decision pipeline — ingest 20->5s, arm 20->8s, watch 15->8s, trigger 4->2s

Owner: 'make all decisions as fast as possible.' The real entry-detection
ceiling was ingest — bars refreshed every 20s, so the 4s trigger thread read
data up to 20s stale and detected breakouts late. Ingest is incremental+cheap,
safe at 5s. Fresher bars + faster arm (trigger levels) + 2s trigger check +
the 4s exits shipped earlier = the whole ingest->detect->decide->exit loop
tightened. One batched data call per cycle so Alpaca rate limits are fine.
Sub-second exit management on a dedicated thread is the next (code) step.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
momentum devandClaude Fable 5 committed 2026-07-18 22:04:29 -05:00
1 parent c3828eff15
commit 680ddc2174
2 files changed
+8 -4

No files matched your search

+4 -4
View File
@@ -32,7 +32,7 @@ x-app: &app
FMP_API_KEY: '<FILL-ME>'
INGEST_STALE_BLOCK: '0'
INGEST_STALE_SECONDS: '180'
LIVE_BARS_INTERVAL_SECONDS: '20'
LIVE_BARS_INTERVAL_SECONDS: '5'
LIVE_BARS_REFRESH_MINUTES: '20'
NEWS_CATALYST_SCORE_ENABLED: '1'
NEWS_DILUTION_VETO_ENABLED: '1'
@@ -100,20 +100,20 @@ x-app: &app
TRADING_SESSION_ONLY: '1'
TRADING_TRIGGER_SLIP_PCT: '0.004'
TRADING_UNIFIED_ENTRY: '1'
TRIGGER_ARM_INTERVAL_SECONDS: '20'
TRIGGER_ARM_INTERVAL_SECONDS: '8'
TRIGGER_ENABLED: '1'
TRIGGER_GAP_MAX: '35'
TRIGGER_GAP_MIN: '10.0'
TRIGGER_GAP_SQUEEZE_MIN: '150'
TRIGGER_GAP_SQUEEZE_RVOL: '5.0'
TRIGGER_INTERVAL_SECONDS: '4'
TRIGGER_INTERVAL_SECONDS: '2'
TRIGGER_MAX_ARMED: '10'
TRIGGER_MIN_DOLLAR_VOL: '8000'
TRIGGER_PRICE_MAX_AGE: '12'
TRIGGER_RVOL_MIN: '2.0'
TZ: 'America/New_York'
WATCHER_ENABLED: '1'
WATCHER_INTERVAL_SECONDS: '15'
WATCHER_INTERVAL_SECONDS: '8'
WATCHER_PRICE_MAX: '20'
WATCHER_PRICE_MIN: '2'
YOUTUBE_API_KEY: '<FILL-ME>'
+4
View File
@@ -33,6 +33,10 @@ x-app-env: &app-env
# Self-contained default: the in-stack postgres. Overrides .env.
DATABASE_URL: postgresql://${POSTGRES_USER:-momentum}:${POSTGRES_PASSWORD:-momentum}@postgres:5432/${POSTGRES_DB:-momentum}
PG_SKIP_SCHEMA: "0"
LIVE_BARS_INTERVAL_SECONDS: "5"
TRIGGER_ARM_INTERVAL_SECONDS: "8"
WATCHER_INTERVAL_SECONDS: "8"
TRIGGER_INTERVAL_SECONDS: "2"
# catalyst enrichment ON as a labeler FEATURE source (plan 009) — loop + scheduler
# (labeler builds) both inherit this anchor. Needs a reachable Ollama (see .env);
# enabled-but-down never impedes trading (fully gated).