Complete Reference For Engines, Automation, Settings, And Production
Trading Intelligence monitors U.S. market news and price action, scores setups with rules and OpenAI, logs decisions for the learning engine, and sends Telegram alerts. The web dashboard shows live option quotes (Tradier REST polling), alert feeds, and controls. Fast News can optionally place sandbox or live option orders through Tradier when enabled.
America/New_York (U.S. Eastern)..env.| Engine | Purpose | Execution | Typical hold |
|---|---|---|---|
| Fast News | Breaking headlines (geopolitical, FDA, M&A, macro, etc.) with strict speed and premium guardrails. | Can auto-submit Tradier option orders when enabled in Settings and all checks pass. Default: OFF. | Minutes (time stop 3–5 min typical) |
| Regular A+ | Slower confirmation: VWAP, opening range (15 min), volume, sector, options flow, OpenAI ≥ 8, weighted score ≥ 85 (full “A+” label at OpenAI ≥ 10). | Manual only — Telegram alert with contract and limit hint. You place the trade in your broker. | Intraday plan; often first 5–15 minutes after open |
Fast News never uses Regular A+ confirmation logic. Regular A+ never auto-submits broker orders.
The server must run this command every minute (Linux cron on AWS EC2):
* * * * * cd /var/www/html/tradding_app && php artisan schedule:run
When cron runs, Laravel decides which jobs are due based on New York market time:
fast-news:run — every 1 min, weekdays 9:30 AM – 3:55 PM EToptions:scan-watchlist — every 3 min (no overlap), weekdays 9:30 AM – 3:55 PM ET (Regular A+)options:monitor-positions — every 1 min, weekdays 9:30 AM – 4:05 PM ET (A+ TRIM/EXIT Telegram alerts)fast-news:monitor-exits — every 1 min, weekdays 9:30 AM – 4:05 PM ET (Fast News auto exits)trading:collect-reactions — every 1 min, 9:30 AM – 4:05 PM ET (underlying/option snapshots)trading:sync-executions — every 1 min, 9:30 AM – 4:05 PM ET (poll Tradier fills → update slippage)learning:retrain — weekdays 4:30 PM ET (learning:retrain)fast-news:missed-review — weekdays 5:15 PM ETtrading:export-csv — weekdays 5:20 PM ET → storage/app/exports/trading_log_YYYY-MM-DD.csvOutside U.S. market hours or on weekends: cron may still run, but most trading jobs will not execute — this is normal.
Note: Live stock WebSocket (market:stream) runs as a separate long-lived process under Supervisor — not inside schedule:run. See next section.
php artisan market:stream — long-running listener (use Supervisor on production).LiveMarketDataStore) with a heartbeat.UnifiedMarketDataService fallback order: stream → tradier → massive.options_alerts.sector_etf_map + SPYtrade_executions option contracts (buy_to_open, not closed)| Feature | Technology | Purpose |
|---|---|---|
| Engine scans (FN / A+) | WebSocket cache + REST fallback | Fast underlying price / VWAP / bars during decisions |
| Watchlist “Stock Candles” | stream → tradier → massive | 1m / 5m underlying OHLC chart for configured watchlist tickers |
| Dashboard “Live Options” | Tradier REST poll (~1s) | Option bid/ask/mid for open positions & alert rows |
| Dashboard SSE (optional) | Server-Sent Events DASHBOARD_QUOTE_SSE_ENABLED |
OFF (default) — push quotes to browser; not the same as market:stream |
MARKET_STREAM_ENABLED:
ON
market:stream)
# Supervisor example (runs 24/7, restarts on crash)
php artisan market:stream --cycle-seconds=55
Session window: weekdays ~9:25 AM – 4:10 PM ET (see market_stream.allow_outside_session). Key .env vars: MARKET_STREAM_ENABLED, MASSIVE_WS_URL, TRADIER_WS_URL, MARKET_LIVE_STORE (redis/cache).
ENTER_FAST_NEWS or REJECT) with guardrails.fast-news:monitor-exits: trim +20% / +40% premium, stop −20% / −20%, time stop 5 min, VWAP failure.Max Fast News auto entries per day: 1 (default). Max open positions: 3.
options:scan-watchlist).options:monitor-positions — TRIM at +30% premium, EXIT at +50% or stop −20% / VWAP flip (tracked trade_signals).Go to Settings. Current live status:
POSITION_ACTIVE / TRIMMED), kill switch + realized P/L today.market:stream cache is fresh (underlying feed — options still from Tradier REST).trade_executions / trade_exits exist), category scores, lessons.Alerts go to the chat ID in TELEGRAM_CHAT_ID (your personal or group chat — not the bot ID).
Message types:
Test from Tools → Diagnose Telegram or run php artisan telegram:diagnose on the server.
OPTIONS_WATCHLIST (A+) and FAST_NEWS_WATCHLIST tickers + sector ETF map..env).Every news event and decision can be stored for post-trade learning:
raw_news_events — Headlines, severity, duplicate status, theme.reaction_snapshots — Underlying and option prices at news, 30s, 1m, 5m.trade_decisions — OpenAI JSON, latency, reject reasons.trade_executions / trade_exits — Broker orders and P/L when auto-trading runs.learning_scores — Updated after close by retrain job.trade_signals — Regular A+ Telegram / paper-tracked alerts.Daily CSV export: storage/app/exports/trading_log_YYYY-MM-DD.csv
DAILY_KILL_SWITCH_USD default $200 realized tracking.config/trading_system.php).LIVE_EXECUTION_ENABLED=true in .env (admin).| Symptom | What to check |
|---|---|
| No alerts at all | Cron running? storage/logs/scheduler.log; U.S. market hours? Kill switch OFF? |
| Telegram not working | TELEGRAM_CHAT_ID = user chat from getUpdates, not bot ID; run telegram:diagnose |
| Fast News always 0 | Auto OFF is normal; decisions still log in DB during session |
| Auto order rejected | Spread, premium move, latency > 30s, severity < 9, kill/P&L switch, or auto OFF |
| Learning slippage / win rate “—” | No trade_executions.slippage_percent or trade_exits in last 30 days — normal if Fast News auto was OFF |
| Live quotes stale | Check Tradier token; dashboard uses REST every 1s (SSE off by default) |
| “Stream Live” badge off | Start Supervisor job php artisan market:stream; set MARKET_STREAM_ENABLED=true; check Redis/cache |
| Scans slow vs news | Without WebSocket, engines use REST only — enable market:stream for faster underlying prices |
| Integrations “Missing key” | Update .env on server, then php artisan config:clear |