Guide
Trading Journal Spreadsheet Template: Columns & Formulas
Build a trading journal in Excel or Google Sheets: the 22 columns to include, formulas for R, P&L, expectancy and profit factor, and a summary tab.
A trading journal spreadsheet needs one row per trade and about 20 columns: the facts (date, market, side, size, entry, exit, fees), the plan (initial stop and setup), the process (rules kept, grade, mistake) and the context (feeling, note, screenshot link), plus formula columns that work out risk, P&L and R. A second tab then calculates win rate, expectancy and profit factor, overall and by setup. Below is the full column list and every formula, ready to type into Excel or Google Sheets.
The trade log: 22 columns
Put these across row 1 of a sheet called Trades, one trade per row from row 2. Columns marked formula are worked out; you type the rest.
| Col | Header | Example | What goes in it |
|---|---|---|---|
| A | Date | 2026-10-27 | Trade date (use one format throughout) |
| B | Time | 09:42 | Entry time, in one fixed time zone |
| C | Account | Eval 1 | Which account, if you trade several |
| D | Market | MNQ | Contract or symbol, without the month |
| E | Side | Long | Long or Short, spelled the same way every time |
| F | Size | 3 | Contracts or lots |
| G | Entry | 21000.00 | Average entry price |
| H | Stop | 20980.00 | Your initial stop, not where you moved it |
| I | Exit | 21050.00 | Average exit price |
| J | Point value | 2 | Dollars per point (MNQ 2, NQ 20, MES 5, ES 50) |
| K | Fees | 2.10 | Commissions and fees for the whole trade |
| L | Risk ($) | 120.00 | formula: money at risk to the initial stop |
| M | Gross P&L | 300.00 | formula: result before fees |
| N | Net P&L | 297.90 | formula: result after fees |
| O | R | 2.50 | formula: result in multiples of risk |
| P | Setup | Pullback | From your playbook's list of setups |
| Q | Rules kept | Y | Y if every rule was met, N if not |
| R | Grade | A | Your process grade, if you use one |
| S | Mistake | Moved stop | One named mistake, or blank |
| T | Feeling | Calm | How you felt, from a short fixed list |
| U | Note | Waited for the close | One line, in your own words |
| V | Screenshot | (link) | A link to the chart image |
Columns L to O are formulas, so you type 18 values a trade, fewer once you copy down defaults such as point value.
The example row is an illustration: long 3 MNQ at 21,000.00 with a stop at 20,980.00, out at 21,050.00.
The formulas
Type these in row 2 and fill them down.
Risk ($), column L:
=ABS(G2-H2)*J2*F2
Gross P&L, column M:
=IF(E2="Long",I2-G2,G2-I2)*J2*F2
Net P&L, column N:
=M2-K2
R multiple, column O:
=IF(E2="Long",(I2-G2)/(G2-H2),(G2-I2)/(H2-G2))
Check them against the example: risk = 20 points × $2 × 3 = $120; gross = 50 × $2 × 3 = $300; net = $297.90; R = 50 ÷ 20 = 2.5. If you'd rather count fees in R, use =N2/L2 instead, which gives 2.48R here. See how to calculate R multiple for why the initial stop matters.
For forex and CFDs, where point values vary, you can skip columns J, L and M, type the net P&L into N from your statement, and work out R from prices or pips as above.
The summary tab
Add a second sheet called Summary. These formulas read the Trades sheet; widen the ranges as your log grows.
| Measure | Formula |
|---|---|
| Trades | =COUNT(Trades!O2:O1000) |
| Win rate | =COUNTIF(Trades!N2:N1000,">0")/COUNT(Trades!N2:N1000) |
| Net P&L | =SUM(Trades!N2:N1000) |
| Total R | =SUM(Trades!O2:O1000) |
| Expectancy (average R) | =AVERAGE(Trades!O2:O1000) |
| Average win (R) | =AVERAGEIF(Trades!O2:O1000,">0") |
| Average loss (R) | =AVERAGEIF(Trades!O2:O1000,"<0") |
| Profit factor | =SUMIF(Trades!N2:N1000,">0")/ABS(SUMIF(Trades!N2:N1000,"<0")) |
| Average R, rules kept | =AVERAGEIF(Trades!Q2:Q1000,"Y",Trades!O2:O1000) |
| Average R, rule broken | =AVERAGEIF(Trades!Q2:Q1000,"N",Trades!O2:O1000) |
| Largest loss (R) | =MIN(Trades!O2:O1000) |
Two of these have their own guides: expectancy and profit factor.
By setup and by mistake
List your setups down column A of the Summary sheet (from row 15, say) and put these beside each:
- Trades:
=COUNTIF(Trades!P$2:P$1000,A15) - Total R:
=SUMIF(Trades!P$2:P$1000,A15,Trades!O$2:O$1000) - Expectancy:
=AVERAGEIF(Trades!P$2:P$1000,A15,Trades!O$2:O$1000)
Do the same with your mistake names against column S to see the total R of trades where each mistake happened. That's the starting point for ranking mistakes by cost in your weekly review.
Keep the data clean
Spreadsheets break quietly when the data is inconsistent. A few rules:
- Use drop-down lists (data validation) for Side, Setup, Rules kept, Mistake and Feeling, so "Long", "long" and "L" don't become three different things.
- Never leave Stop blank. If you had no stop, the R formula will divide by zero. Write down where you'd have been wrong before you enter.
- One time zone. If you trade US futures from the UK, New York time keeps the open at 09:30 all year. See futures market hours in UK time.
- Market without the month. Write MNQ, not MNQZ6, so the same market groups together.
- Don't overwrite formulas when pasting. Paste values only into the typed columns.
What a spreadsheet won't do for you
A spreadsheet is free and completely yours, which is a real advantage. The trade-offs are the work around it:
- Pairing fills. Platform exports such as Tradovate's Orders report or NinjaTrader's Executions list fills, not trades. Turning a scale-in and two partial exits into one row is manual work.
- Duplicates. Re-pasting an overlapping export doubles trades unless you check IDs.
- Time zones. Each platform writes times differently, and the spreadsheet won't convert them.
- Screenshots and notes live elsewhere, as links.
If that becomes the part you dread, a journal app takes it over. Marble, for example, imports the export files from Tradovate, TopstepX, Rithmic, NinjaTrader, MetaTrader, cTrader and Interactive Brokers, pairs the fills into trades, and works out the same measures as this template, so what you type is only the setup, the rules and the note.
If you're starting from scratch, read what a trading journal is first.
Marble does this template's arithmetic for you and keeps every trade's chart and note with it. Try Marble.
Marble is a trading journal. Nothing here is financial advice.
Questions
Excel or Google Sheets for a trading journal?
Either. The formulas in this guide work in both. Google Sheets is easier on a phone and across devices; Excel copes better with very large files.
Can I paste my broker's export straight into the spreadsheet?
Only if it already has one row per trade. Exports with one row per fill, such as Tradovate Orders or NinjaTrader Executions, need pairing into trades first, which is fiddly by hand.
How many columns does a trading journal need?
Fewer than you think. The essentials are date, market, side, size, entry, stop, exit, fees, setup and a rules check. Add more only when you'll actually review them.