Connection Issues
WebSocket Disconnects
[OFF] status in header
[OFF] status in header
Symptom: Connection status shows
[OFF] in redCause:- Chainlink WebSocket disconnected
- Network connectivity issue
- Polymarket API downtime
Prevention:
WebSocket client in
src/feeds/chainlink.js:25 has built-in reconnection. If reconnects fail repeatedly, check your firewall settings.[POLY OFF] in market line
[POLY OFF] in market line
Symptom: Polymarket status shows
[POLY OFF] in redCause:- Polymarket CLOB API unavailable
- Rate limiting
- Market not active yet
-
Check market availability:
-
Verify CLOB API:
-
Check rate limits:
- Polymarket CLOB: 10 requests/second
- Gamma API: 100 requests/minute
- Bot implements backoff in
src/feeds/polymarket.js:45
Missing Strike Price
Strike shows '--'
Strike shows '--'
Symptom: Header shows
Strike: --Cause:- Vatic Trading API unavailable
- Interval timestamp not found in API
- API key issues (if required)
-
Test Vatic API manually:
-
Check timestamp alignment:
Vatic uses Unix timestamps rounded to 5-minute intervals:
- Fallback mode: Bot can run without strike price in simulation mode (no trading decisions).
Prediction Issues
Constant Abstention
ABSTENCION every interval
ABSTENCION every interval
Symptom: Bot never places bets, always shows
To debug:Adjust config (
ABSTENCIONCommon reasons:| Reason | Fix |
|---|---|
insufficient_data | Wait for 50+ ticks (2-3 minutes). Check WebSocket is connected. |
dead_zone | Market is balanced near 50%. Normal behavior. Wait for clearer signal. |
insufficient_margin | Lower threshold in config: abstention.minMargin (default 0.15) |
insufficient_ev | Lower threshold: abstention.minEV (default 0.05) |
cold_streak | Accuracy dropped <40%. Model is self-protecting. Wait for recovery. |
drawdown_suspension | Bankroll in RED/CRITICAL. Reduce risk or wait for recovery. |
anomalous_volatility | High volatility period. Normal safety mechanism. |
config/default.json):Low confidence predictions (50-60%)
Low confidence predictions (50-60%)
Symptom: Predictions always show 50-60% confidenceCause:
- Insufficient price history
- Low volatility (price flat)
- Model features not detecting signal
-
Check data collection:
Should see 50-100 ticks per 5-minute interval.
-
Check volatility:
Low volatility = low confidence (model can’t distinguish UP/DOWN)
-
Review momentum indicators:
- If low data: Wait longer, check WebSocket
- If low volatility: Normal - model won’t trade flat markets
- If indicators broken: Check logs for NaN values, restart bot
Incorrect Predictions
Early 1m accuracy < 70%
Early 1m accuracy < 70%
Symptom: Daily report shows Early 1m accuracy below 70%Troubleshooting steps:Check:Common causes:
Run daily report
- Brier Score (should be <0.25)
- Murphy Reliability (should be <0.05)
- Confidence bands (high bands should be accurate)
Analyze misses
Look at “Fallos del Early 1m” section in report.
- Are misses clustered in high volatility?
- Are misses when price is near strike?
- Are high-confidence predictions failing?
- Trending market: Model assumes mean reversion but market is trending
- Solution: Increase momentum weight in config
- High volatility: Predictions less reliable in chaotic markets
- Solution: Model already abstains via
anomalous_volatility- working as intended
- Solution: Model already abstains via
- Strike proximity: Hard to predict when price ≈ strike
- Solution: Increase
dead_zonethreshold to abstain near 50/50 calls
- Solution: Increase
Data Issues
Missing History
Table shows no history rows
Table shows no history rows
Symptom: Console table is empty or shows very few rowsCause:
data/history.jsonmissing or corrupted- Bot just started (no history yet)
- Permissions issue
-
Check file exists:
-
Verify JSON validity:
-
If corrupted, restore from backup:
-
If missing, create empty array:
src/tracker/history.js:23. If you see frequent corruption, check disk space:Prediction fields show '--'
Prediction fields show '--'
Symptom: Table columns show
-- instead of predictionsPossible causes:| Column | Cause | Fix |
|---|---|---|
| Early 1m | Bot started <1min before close | Normal - prediction not captured yet |
| E.Ac | No Early 1m prediction | Wait for next interval |
| q | Polymarket data unavailable | Check [POLY] status, see “Connection Issues” |
| Bet | Abstaining | Check abstention reason in header |
| Pr 30s | Bot started <30s before close | Normal - wait for capture |
| F.Ac | Interval still ACTIVE | Normal - accuracy calculated on close |
Log File Issues
No log files created
No log files created
Symptom:
data/logs/ directory emptyCause:- Logger not initialized
- Permissions issue
- Disk full
-
Check directory permissions:
-
Create directory:
-
Check disk space:
-
Verify logger config:
In
config/default.json:
YYYY-MM-DD.logPerformance Issues
High CPU Usage
Bot using >50% CPU
Bot using >50% CPU
Symptom: High CPU usage, fans spinningCause:Solutions:
- Tick logging creating too many writes
- Console rendering in tight loop
- Memory leak in WebSocket handler
-
Reduce console refresh rate:
In
src/ui/display.js, the render is called on every tick. Add throttling: -
Disable tick logging:
In
config/default.json: -
Reduce history retention:
Display shows last 15 rows only, but full history is loaded:
Memory Leaks
Memory usage grows over time
Memory usage grows over time
Symptom: Bot memory usage increases steadily, eventually crashesCause:Solutions:
- WebSocket event listeners not cleaned up
- History array growing unbounded
- Tick data accumulating
-
Restart daily via cron:
-
Limit history size:
In
src/tracker/history.js, add rotation: -
Check WebSocket cleanup:
In
src/feeds/chainlink.js, ensure:
Trading Simulation Issues
Bet Sizes Too Large
Kelly suggests 20%+ of bankroll
Kelly suggests 20%+ of bankroll
Symptom: Bet size exceeds 20% of bankrollCause:
- Very high confidence prediction (95%+)
- Large edge vs market
- Kelly alpha set too high
-
Lower Kelly alpha:
In
config/default.json: -
Add bet size cap:
In
src/risk/position-sizer.js:34, add: -
Increase drawdown sensitivity:
Drawdown Not Recovering
Stuck in RED/CRITICAL level
Stuck in RED/CRITICAL level
Symptom: Drawdown stays in RED or CRITICAL, no trades executedCause:To exit RED (20%), bankroll must recover to within 20% of all-time high.Solutions:
- String of losses pushed bankroll down
- High-water mark too high
- Not enough winning trades to recover
-
Reset high-water mark (CAUTION):
-
Lower drawdown thresholds:
- Wait for recovery: Drawdown protection is working as intended. Bot needs winning streak to recover naturally.
Report Generation Issues
pnpm report returns 'No data'
pnpm report returns 'No data'
Symptom:
pnpm report outputs “No hay datos para generar reporte.”Cause:- No intervals closed today
data/history.jsonempty or missing- Date filter excluding all records
-
Check history file:
Should show number of intervals.
-
Check date filtering:
- Generate for all data (no date filter):
Report not appearing in Obsidian
Report not appearing in Obsidian
Symptom: Report generated but not visible in Obsidian vaultCause:
- Vault path misconfigured
- Obsidian not synced
- File permissions
-
Verify vault path:
In
src/reporter/daily.js:9-10:Check path exists: -
Check file was created:
-
Force Obsidian refresh:
- Open Obsidian
- Command Palette (Cmd+P)
- “Reload app without saving”
- Check iCloud sync: Obsidian uses iCloud - sync can take 1-2 minutes.
Configuration Issues
Config changes not taking effect
Config changes not taking effect
Symptom: Modified
config/default.json but bot behavior unchangedCause:- Bot not restarted
- Config cache
- Syntax error in JSON
-
Validate JSON:
-
Check config loading:
-
Restart bot:
-
Verify config in logs:
Emergency Procedures
Bot is making bad trades
Bot is making bad trades
Getting Help
Check Logs
Generate Report
Inspect State
Test APIs
Common Error Messages
| Error | Meaning | Solution |
|---|---|---|
WebSocket closed unexpectedly | Chainlink feed disconnected | Auto-reconnects, check network |
Strike price not available | Vatic API returned 404 | Interval may not exist yet, wait 30s |
Insufficient data for prediction | < 50 ticks collected | Wait longer, check WebSocket |
NaN detected in volatility | Math error in calculation | Check for zero variance, restart |
Market data not available | Polymarket CLOB down | Bot continues, no EV calcs |
ENOSPC: no space left on device | Disk full | Clean up old logs, increase storage |
Diagnostic Commands
Next Steps
Reading Output
Understand the console display
Daily Reports
Deep dive into performance metrics
Configuration
Full config reference and tuning guide
API Reference
Internal API documentation