End-of-day routine - flatten before the 16:00 ET close (the harness's hard rule; prop firms often flatten at 15:10 CT), cancel leftover orders, review every trade, write lessons, and journal a day summary. Use at the end of each session, from /eod, or when the autonomous runner reaches its end-of-day time.
Install
npx skillscat add johnamcruz/futures-trading-harness/end-of-day Install via the SkillsCat registry.
SKILL.md
End of Day
When to Use
- At end of day (
eodAt, by 16:00 ET) every trading day, or on request. The
autonomous runner closes positions itself first; this routine confirms it,
cancels leftovers, and does the reviews.
How It Works
get_account_snapshot.- Open positions: flatten every one by
eodAt(by 16:00 ET; 12:50 ET on
an early-close day), in every mode, without asking: no position is held
into the daily break. The trade-executor role usesclose_positionand
journals[exit] end of day, then cancels every working order once that
contract reads flat (before that, a working order may be the close itself
or the position's stop; pending entries can go at once). In an
interactive session you may ask the user only about cancelling a pending
entry earlier than that. - Confirm with
list_open_positionsandlist_open_ordersthat nothing is
left. A close the broker accepted isn't a flat account: a position still
open after its close is closed again, unless its earlier close still shows
as a working order inlist_open_orders: a market order on the opposite
side, sized to the position (a stop or limit is not one; a second close
could cross a pending one). The autonomous runner keeps closing,
and its end of day is done only once the account reads flat. Don't wait
for a close to fill (no repeated bar or quote reads): if it still reads
open after the second close (a replay broker may fill a close only at the next bar),
report it in the journal note and the cycle result, and the runner keeps
closing until it reads flat (interactively, close again and tell the user
it is still open). - Run trade-review with end-of-day lessons (the trade-reviewer role).
- Prop attempt running: the autonomous runner records the day's closing
balance itself (it retries a failed record and lists a close it couldn't
record in the harness toolcombine_status). A catch-up end of day (a day the runner
missed) records that day's own balance: today's less what the fills since
that day ended made, so an overnight loss counts on the day it was booked. Interactive, or a missed close: the user
records it withnode <root>/scripts/combine.js record-day --account <name> --day YYYY-MM-DD --balance <dollars>(the balance after the session's
last fill); tell them the exact command. Agents don't run it. - Autonomous days: the harness tool
reconcile({"day": "<trading day>", "timeframe": <minutes>}) compares the day's entries with the signals the
runner saw: how many were taken, passed (with the note that says why), and
entries with no signal behind them. Quote its first line. - The harness tool
lessons: the instincts the reviews add up to
(setups to favour or avoid by regime, recurring mistakes). Write a lesson
only when one has the evidence (the trade-review rules). journal_add {kind:"note", tags:["eod"]}: net P&L after fees, trades, R
total, rule breaks, blocked orders (journalorder_blockedand<FTH_HOME>/logs/gate-log.jsonl), signals taken vs passed, lessons, and
tomorrow's focus.
Examples
EOD 2026-10-08: flat, 0 working orders. 3 trades (orb +2.0R, ema_cross -1.0R,
orb +0.1R scratch), net +$11.30 after fees, 0 rule breaks, 1 blocked order
(time-window). Lesson: none (sample too small). Focus: orb only before 10:30.