README gets: operating-hours config + CLI override flags, Telegram command table with /pause /resume [force] semantics, validate-calibration usage + exit codes, new audit event reference, phase-skip backstop note, and test count bump. CLAUDE.md quick reference now lists the new subcommand, CLI flags, and Telegram commands so future sessions pick them up without re-reading main.py. TODOS.md marks the 2026-04-17 hang fix, canary drift notification, phase-skip backstop, operating-hours window, and validate-calibration as done with commit pointers; adds exchange-calendar holidays as known gap. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.4 KiB
ATM — Automated Trading Monitor
Personal Faza-1 tool for the M2D strategy. Python 3.11+.
Quick Reference
pip install -e ".[windows]" # Windows: live capture
pip install -e ".[dev]" # Linux/macOS: dev + tests (WSL: create venv first)
atm calibrate # Tk wizard
atm debug --delay 5 # one-shot capture + detect
atm validate-calibration samples/calibration_labels.json # offline color gate
atm run --start-at 16:30 --stop-at 23:00 # live session
atm run --tz America/New_York --oh-start 09:30 --oh-stop 16:00 # NYSE window override
atm dryrun samples # corpus gate
pytest -q # 184 tests
Telegram commands (live)
/ss /status /pause /resume /resume force /3 (interval min) /stop
/resumeclears only user pause; Canary drift requires/resume force.- Drift-pause now emits a single Telegram alert (was silent pre-refactor — root cause of the 2026-04-17 hang).
Operating-hours config
[options.operating_hours] in TOML: enabled, timezone (NYSE local, e.g. America/New_York), weekdays, start_hhmm, stop_hhmm. Timezone validated at load; _tz_cache reused per tick. Boundary crossings log market_open / market_closed and notify once. Startup in-window is silent.
Phase-skip backstop
[options.alerts] fire_on_phase_skip = true (default) — ARMED→light_* direct (dark_* missed) still emits a ⚠️ PHASE SKIP alert using FSM lockout to suppress spam.
Skill routing
When the user's request matches an available skill, ALWAYS invoke it using the Skill tool as your FIRST action. Do NOT answer directly, do NOT use other tools first. The skill has specialized workflows that produce better results than ad-hoc answers.
Key routing rules:
- Product ideas, "is this worth building", brainstorming → invoke office-hours
- Bugs, errors, "why is this broken", 500 errors → invoke investigate
- Ship, deploy, push, create PR → invoke ship
- QA, test the site, find bugs → invoke qa
- Code review, check my diff → invoke review
- Update docs after shipping → invoke document-release
- Weekly retro → invoke retro
- Design system, brand → invoke design-consultation
- Visual audit, design polish → invoke design-review
- Architecture review → invoke plan-eng-review
- Save progress, checkpoint, resume → invoke checkpoint
- Code quality, health check → invoke health