# FennEdge scalping practice log (v2)

Use this log for practice tasks in the FennEdge scalping courses: simulator trades, chart replays and paper trades. Download the CSV file `scalping-practice-log-v2.csv` and open it in any spreadsheet app. Your log stays on your own device.

This log is for practice only. The FennEdge Trading Journal holds real trades synced from your broker; practice entries do not go there.

**Log every observation that met your written definition**, including the ones you chose not to take (`mode` = `skipped`). If you only log the trades you took, or only the ones that worked, your numbers describe your choices rather than the setup.

Version 2 keeps all 30 columns of version 1 in the same order and adds nine optional columns at the end (31–39). Leave an optional column blank when the practice task does not use it. A log started in version 1 can continue in version 2: add the nine headers to the right.

## Core columns (1–30)

| # | Column | Type / allowed values | Meaning |
|---|---|---|---|
| 1 | `entry_id` | integer | Running number within the practice block |
| 2 | `date` | YYYY-MM-DD | Trading date of the chart (replay date for replays) |
| 3 | `time_et` | HH:MM:SS | Decision time, US Eastern |
| 4 | `session` | `premarket`, `regular`, `after-hours` | Session at the decision time |
| 5 | `mode` | `sim`, `replay`, `paper`, `skipped` | How the trade was practised; `skipped` = met the definition but not taken |
| 6 | `instrument_label` | text | Your own label for the stock. In logs or screenshots you share, use a placeholder instead of the ticker |
| 7 | `setup_tag` | text | e.g. `vwap-reclaim`, `orb-5m`, `hotkey-test`, `tape-obs` |
| 8 | `definition_version` | text | Which written definition was in force (e.g. `vwap-reclaim-v1`); keep it fixed for the whole block |
| 9 | `vwap_anchor` | `04:00`, `09:30`, `n/a` | VWAP anchor used (setups that do not use VWAP put `n/a`) |
| 10 | `conditions` | semicolon list | Recorded conditions, e.g. `below_vwap_bars=18; reclaim_vol_x=2.1; spread_c=1` |
| 11 | `knowable_at_decision` | text | What was visible at the decision time, in one line |
| 12 | `planned_entry` | price | Planned entry or order ceiling |
| 13 | `planned_stop` | price | Invalidation price |
| 14 | `planned_target` | price | Target price (blank if exit is time- or trail-based) |
| 15 | `time_stop_et` | HH:MM | Time stop, if any |
| 16 | `shares` | integer | Size |
| 17 | `planned_risk_usd` | number | (entry − stop) × shares, i.e. 1R in dollars |
| 18 | `entry_fill` | price | Actual or simulated entry fill |
| 19 | `exit_fill` | price | Actual or simulated exit fill |
| 20 | `exit_reason` | `target`, `stop`, `time-stop`, `manual`, `halt` | Why the trade ended |
| 21 | `exit_time_et` | HH:MM:SS | Exit time |
| 22 | `fees_usd` | number | Commissions and fees for the round trip under your own broker's fee plan |
| 23 | `slippage_penalty_usd` | number | Penalty you add to simulated fills; 0 for real fills |
| 24 | `gross_r` | number | (exit − entry) × shares ÷ planned_risk_usd, sign by side |
| 25 | `net_r` | number | gross_r minus (fees + slippage penalty) ÷ planned_risk_usd |
| 26 | `path` | `A`, `B`, `C` | A = target before stop; B = stop or failure; C = scratch / time stop. Add detail such as "fast fail" in `review_note` |
| 27 | `plan_followed` | `yes`, `no` | Whether entry, stop, size and exit followed the written plan |
| 28 | `deviation_note` | text | What differed from the plan, if anything |
| 29 | `screenshot_ref` | text | File name or link to your own screenshot |
| 30 | `review_note` | text | Decision-quality note written separately from the outcome |

For rows with `mode` = `skipped`, leave the fill, R and path columns blank; you can note what happened next in `review_note`.

## Optional columns (31–39)

| # | Column | Type / allowed values | Meaning | Used by |
|---|---|---|---|---|
| 31 | `mae_r` | number, 0 or negative | Maximum adverse excursion: the furthest price moved against the position between entry fill and exit fill, divided by 1R per share (e.g. `-0.58`). Measure it from the bars after the entry bar unless your definition says otherwise | MAE and MFE; Exits |
| 32 | `mfe_r` | number, 0 or positive | Maximum favourable excursion: the furthest price moved in favour of the position between entry fill and exit fill, in R (e.g. `1.58`) | MAE and MFE; Exits |
| 33 | `regime` | text label | The session's regime label from a rule you wrote before the block, set before the open (e.g. `hot`, `normal`, `cold`); never set after seeing the session | Market conditions; Find your edge |
| 34 | `trade_of_day` | integer | The trade's number in that session, counting every trade taken (1 = first) | Overtrading |
| 35 | `min_since_loss` | integer (minutes) | Minutes from the exit of the most recent losing trade that session to this entry; blank if there was no earlier loss that session | Revenge trading |
| 36 | `size_vs_plan` | number | Shares taken ÷ shares your sizing rule gave for this trade (1.00 = as planned; 1.50 = 50% above plan) | Revenge trading; Position sizing |
| 37 | `hotkey_test` | `pass`, `fail` | For hotkey test orders (`setup_tag` = `hotkey-test`): `pass` if symbol, side, size, price and route all matched the intended order; describe a `fail` in `deviation_note` | Hotkeys |
| 38 | `session_stop` | `hit`, `after`, blank | `hit` on the trade whose result reached your daily loss limit; `after` on any trade taken later that session; blank otherwise | Daily loss limit; Revenge trading |
| 39 | `tape_obs` | text | For tape-based observations (for example `setup_tag` = `tape-obs` or `absorption`): what printed, in observable terms only (price vs. bid and ask, size, speed). Write your inference about it separately in `review_note` | Tape reading; Absorption |

Write optional columns that describe the decision (`regime`, `trade_of_day`, `min_since_loss`, `size_vs_plan`) before or at entry, not after the result is known. `mae_r` and `mfe_r` are filled after the exit.

## Reviewing your log

- Path shares: count of `A`, `B` and `C` ÷ trades taken.
- Expectancy after costs: average of `net_r` over trades taken.
- Cost drag: average of (fees + slippage penalty) ÷ planned_risk_usd.
- Rough interval for the Path A share: a Wilson 95% interval; with 20 observations it is wide, so treat the share as a rough estimate.
- Plan adherence: share of `plan_followed` = `yes`; compare `net_r` for yes vs. no.
- With the optional columns: compare `net_r` by `regime`, by `trade_of_day` (for example 1–5 vs. 6 or later), and for trades with `min_since_loss` under 5 vs. the rest; compare `mae_r` of winners and losers before moving a stop.

## Before you start

1. Write your setup definition, stop rule, target, time stop and size rule. Give it a version name.
2. Choose a slippage penalty for simulated fills (for example 1 cent on entries and 2 cents on stops) and apply it to every trade.
3. Decide how many observations the block holds (the course tasks use 20 or more) and do not change the definition until the block is done.

*Education only, not a recommendation to buy or sell any security. Past patterns do not indicate future results.*
