Skip to content
SlashClone
Made by@qtrader

Trade journal

@qtrader/trade-journal

Keep a trading journal that actually teaches you something. Log each trade with its setup, thesis, emotions, plan adherence, and mistakes in a CSV, then get a weekly review that finds what is working and what is leaking money by setup, time of day, holding period, emotion, and plan adherence. Not financial advice.

SkillTradingv1.0.0 (latest)Tested
Activity
New: be the first to try it
  1. 1# trade-journal
  2. 2
  3. 3Log every trade in a few seconds, then let a weekly review show you what is working and what is leaking money. Patterns are split by setup, time of day, holding period, emotion at entry, plan adherence, weekday, and side, with win rate, expectancy, profit factor, and average R for each.
  4. 4
  5. 5**Who it is for:** active traders who know they should journal and want the Friday review to take five minutes instead of an hour.
  6. 6
  7. 7Not financial advice. It coaches your process; it never picks trades.
  8. 8
  9. 9## Example
  10. 11You: "Log it: long 100 XYZ at 20, out at 21 half an hour later, stop was 19.50, ORB, felt calm, stuck to the plan."
  11. 13> Logged #19: XYZ long 100, +$99 (+2.0R), opening range breakout.
  12. 15You: "Weekly review."
  13. 17```bash
  14. 18node scripts/journal.mjs review --file examples/trades.csv
  15. 19```
  16. 21```text
  17. 22Closed trades 17 | Win rate 53% | Net P&L $763.40 | Expectancy $44.91 per trade | Profit factor 2.54 | Avg R 0.54
  18. 23- Setup: "opening range breakout" is your best (8 trades, 75% win rate, $74.30 per trade, $594.40 total).
  19. 24- Setup: "vwap fade" is costing you (5 trades, 0% win rate, -$71.00 per trade, -$355.00 total).
  20. 25- Time of day (entry): "midday (10:30-14:00)" is costing you (5 trades, 0% win rate, -$71.00 per trade, -$355.00 total).
  21. 26- Emotion at entry: "fomo" is costing you (3 trades, 0% win rate, -$51.20 per trade, -$153.60 total).
  22. 27- Followed plan: "no" is costing you (6 trades, 0% win rate, -$62.77 per trade, -$376.60 total).
  23. 28- Mistake "chased" appeared on 3 trades totaling -$153.60.
  24. 29...
  25. 30```
  26. 32Claude then turns that into a short review: what to keep, what to stop, and one rule for next week. The example journal is made up.
  27. 34## The journal format
  28. 36`journal/trades.csv`:
  29. 38```csv
  30. 39id,opened_at,closed_at,symbol,side,qty,entry,exit,stop,fees,setup,thesis,emotion_entry,emotion_exit,followed_plan,mistakes,notes
  31. 40```
  32. 42- Times are `YYYY-MM-DD HH:MM` in exchange local time. A blank `closed_at` means the trade is still open and is left out of the stats.
  33. 43- P&L = (exit - entry) x qty (reversed for shorts) - fees. R = P&L / (|entry - stop| x qty).
  34. 44- Time of day buckets: pre-market, open (9:30 to 10:30), midday (10:30 to 14:00), close (14:00 to 16:00), after-hours. Holding buckets: scalp (under 30 minutes), intraday, swing (1 to 5 days), position (over 5 days).
  35. 45- Text that starts with `=`, `+`, or `@` is prefixed with `'` so it cannot run as a spreadsheet formula.
  36. 47Hand check: trade 1 is long 100 at 50.00, out at 51.20, stop 49.40, fees 1, so P&L = 1.20 x 100 - 1 = 119 and R = 119 / 60 = 1.98. Trade 2 is short 200 at 30.00, out at 30.35, so P&L = -0.35 x 200 - 1 = -71. `node scripts/selftest.mjs` checks these and the whole example review.
  37. 49## What it can access
  38. 51- Reads and writes `journal/trades.csv`. Writes reviews to `out/`.
  39. 52- Runs only its own scripts with Node. No network, no broker access, no keys.
  40. 54## Setup
  41. 56Node 22 or newer. Nothing to install. Your first `add` creates `journal/trades.csv`. Already journaling in a spreadsheet? Export it as CSV with the columns above.