Home › Templates › Trading performance report template

Trading Performance Report Template

A free trading performance report template for Excel and Google Sheets. Log closed trades plus deposits and withdrawals, pick any date range, and get net P&L, return on equity, a cash-flow-adjusted monthly return, win rate, profit factor, expectancy in $ and R, max drawdown, results by strategy and symbol, and a monthly table.

Download Excel template (.xlsx) 360 KB · no macros · Excel 2016+ and Google Sheets · v1.0, 31 Oct 2026

Use it in Google Sheets: choose File → Import → Upload in Sheets and pick the .xlsx, or upload it to Google Drive and open it with Google Sheets. No add-ons, no broker connection: you paste or type your closed trades.

Preview: the Example Report tab (fictional data). Period 1 Jan to 30 Sep 2026; 169 closed trades on made-up symbols STK-A to STK-H; $20,000.00 opening deposit in December 2025, a $5,000.00 deposit on 16 Mar, a $2,500.00 withdrawal on 1 Jun and a $3,000.00 deposit on 17 Aug.
$3,498.84net P&L, 169 trades
16.16%linked monthly return (TWR-style)
17.49%return on starting equity (distorted by deposits)
1.31profit factor · win rate 43.8%
0.18Rexpectancy per trade ($20.70)
−5.88%max drawdown, flow-adjusted (−$1,643.23)
MonthStart equityDeposits / withdrawalsNet P&LTradesWin rateEnd equityMonthly returnLinked to date
Jan 2026$20,000.00–$649.191546.7%$20,649.193.25%3.25%
Feb 2026$20,649.19–$710.642050.0%$21,359.833.44%6.80%
Mar 2026$21,359.83$5,000.00$817.081650.0%$27,176.913.41%10.44%
Apr 2026$27,176.91–$755.991850.0%$27,932.902.78%13.52%
May 2026$27,932.90–−$825.161723.5%$27,107.74−2.95%10.16%
Jun 2026$27,107.74−$2,500.00$46.121844.4%$24,653.860.19%10.37%
Jul 2026$24,653.86–$621.912045.0%$25,275.772.52%13.15%
Aug 2026$25,275.77$3,000.00$485.242142.9%$28,761.011.82%15.21%
Sep 2026$28,761.01–$237.832441.7%$28,998.840.83%16.16%
Example tab: net P&L by month, January to September 2026, with the Modified Dietz monthly return above each bar. Jan 2026 $649.19 (3.2%); Feb 2026 $710.64 (3.4%); Mar 2026 $817.08 (3.4%); Apr 2026 $755.99 (2.8%); May 2026 −$825.16 (−3.0%); Jun 2026 $46.12 (0.2%); Jul 2026 $621.91 (2.5%); Aug 2026 $485.24 (1.8%); Sep 2026 $237.83 (0.8%).−$1,000−$800−$600−$400−$200$0$200$400$600$800$1,0003.2%Jan3.4%Feb3.4%Mar2.8%Apr−3.0%May0.2%Jun2.5%Jul1.8%Aug0.8%SepBars: net P&L by month (2026). Labels: monthly return (Modified Dietz).

Chart drawn from the same tab. The workbook has two native charts: net P&L by month and monthly return.

What's inside the spreadsheet

TabWhat you typeWhat it calculates
Start hereNothingSteps, how returns are measured, colour key, limits, disclaimer
ReportPeriod start and end date (B4, B5)Trading results, account and returns, breakdowns by strategy, side and symbol, a monthly table for up to 36 months, two charts, a status check
Closed tradesUp to 1,000 rows: close date, symbol, strategy, side (Long/Short), net P&L after fees, risk in $ (optional), notesGrey helper columns: R multiple, in-period flag, equity before each trade, drawdown, streaks, first-seen lists of symbols and strategies, a date-order check
Cash flowsUp to 300 rows: date, Deposit or Withdrawal, amountSigned amounts used for equity and the cash-flow weights
Example Report, Example Trades, Example Cash flowsAlready filled169 fictional trades and four cash flows, so every formula is visible and working

How it differs from a journal or a backtest. A trading journal records why you took each trade, and the backtesting spreadsheet tests a rule on past data before you trade it. This template is the periodic report you run after the fact: it reads real closed trades and real account cash flows, for exactly the dates you choose, and turns them into returns on your capital as well as trade statistics.

Sample rows from Example Trades (fictional):

Close dateSymbolStrategySideNet P&LRisk ($)R
2026-01-05STK-DBreakoutLong−$91.85$100.00-0.92R
2026-01-07STK-ABreakoutShort−$101.22$100.00-1.01R
2026-01-08STK-GBreakoutLong$250.12$100.002.50R
2026-01-09STK-CPullbackLong−$99.01$100.00-0.99R
2026-01-09STK-FMean reversionLong$128.13$100.001.28R
2026-01-12STK-EPullbackLong−$95.80$100.00-0.96R

How to use it

  1. Open Cash flows. Log every deposit and withdrawal, including the first deposit that funded the account. Type amounts as positive numbers and pick the type.
  2. Open Closed trades. Add one row per closed trade, oldest first: close date, symbol, strategy, side, net P&L after commissions and fees, and the dollar risk you planned at the stop. Most brokers can export closed trades to CSV; paste the columns in.
  3. Open Report and type the period start and end dates in B4 and B5: a month, a quarter, a year or since you opened the account.
  4. Check that the status in B6 says OK, and read any data notes in B7.
  5. Read the results block, the breakdowns by strategy, side and symbol, and the monthly table from row 100. The charts sit to the right of the results.
  6. Change the dates to compare periods, for example this quarter against the last one.

The metrics and how they are calculated

MetricDefinition used in the sheet
Win rateWinning trades ÷ all trades in the period. Breakeven trades (P&L exactly 0) count as trades but not as wins.
Average win, average loss, payoff ratioGross profit ÷ winning trades; gross loss ÷ losing trades; average win ÷ |average loss|.
Profit factorGross profit ÷ |gross loss|. Shows No losses when there were no losing trades.
Expectancy ($)Net P&L ÷ trades: the average result per trade.
Expectancy (R)Average of P&L ÷ risk, over trades with a risk amount logged.
Max drawdown ($)Largest drop of cumulative closed P&L from its running high, starting at 0 on the period start. Deposits and withdrawals are not P&L, so they never create or hide a drawdown.
Max drawdown (%)The same on a return index: each trade's P&L ÷ equity just before it, compounded. A $500 loss on a $20,000 account counts as 2.5% even after a deposit has grown the balance.
Longest losing streakMost losing trades in a row, in date order, inside the period. A win or a breakeven trade ends the streak.
Equity at period startDeposits − withdrawals + closed P&L before the start date.
Return on starting equityNet P&L ÷ equity at period start.
Linked monthly returnEach month's Modified Dietz return, geometrically linked across the period (next section).

Exact formulas from the workbook (row 7 is the first trade or cash-flow row; row 101 is the first month):

FieldFormula
Closed trades: in period (J7)=IF(I7=1,IF(AND(A7>='Example Report'!$B$4,A7<='Example Report'!$B$5),1,0),0)
Closed trades: R multiple (K7)=IF(AND(I7=1,N(F7)>0),E7/F7,"")
Closed trades: equity before trade (N7)=IF(I7=1,SUMIFS('Example Cash flows'!$E$7:$E$56,'Example Cash flows'!$F$7:$F$56,"<="&A7)+SUM(O$6:O6),"")
Closed trades: losing streak (W7)=IF(J7=1,IF(E7<0,N(W6)+1,0),N(W6))
Closed trades: drawdown $ (V7), from cumulative P&L (T7) and its peak (U7)=IF(J7=1,T7-U7,"")
=N(T6)+IF(J7=1,E7,0)
=MAX(N(U6),T7)
Cash flows: signed amount (E7)=IF(AND(ISNUMBER(A7),ISNUMBER(C7)),IF(B7="Withdrawal",-ABS(C7),ABS(C7)),0)
Report: win rate (B13)=IF(N(B9)=0,"",B10/B9)
Report: profit factor (B20)=IF(N(B9)=0,"",IF(B15=0,"No losses",B14/ABS(B15)))
Report: expectancy in R (B23)=IF(N(B22)=0,"",SUM('Example Trades'!$M$7:$M$206)/B22)
Report: max drawdown $ (B26)=IF(N(B9)=0,"",MIN('Example Trades'!$V$7:$V$206))
Report: equity at period start (B32)=IF($B$6<>"OK","",SUMIFS('Example Cash flows'!$E$7:$E$56,'Example Cash flows'!$F$7:$F$56,"<"&B4)+SUMIFS('Example Trades'!$O$7:$O$206,'Example Trades'!$A$7:$A$206,"<"&B4))
Report: return on starting equity (B37)=IF(B32="","",IF(B32<=0,"n/a: no equity at start",B35/B32))
Monthly table: weighted flows (F101)=IF(A101="","",SUMPRODUCT(('Example Cash flows'!$F$7:$F$56>=B101)*('Example Cash flows'!$F$7:$F$56<=C101)*'Example Cash flows'!$E$7:$E$56*(C101-'Example Cash flows'!$F$7:$F$56+1))/(C101-B101+1))
Monthly table: monthly return (K101)=IF(A101="","",IF(D101+F101<=0,"",G101/(D101+F101)))
Monthly table: chain factor (M102)=IF(ISNUMBER(M101),M101,1)*(1+N(K102))
Report: linked monthly return (B38)=IF($B$6<>"OK","",M136-1)

The breakdown tables list each strategy and symbol in the order it first appears, using a running COUNTIFS in helper columns Y and Z and INDEX/MATCH on the Report tab. That keeps the file free of UNIQUE, FILTER and other dynamic-array functions, so it behaves the same in Excel 2016 and Google Sheets.

Measuring return when you add or withdraw money

Net P&L in dollars is the same however you measure it. The return percentage is not, because the balance it is measured against changes every time you deposit or withdraw. The sheet shows two numbers so you can see the difference.

1. Return on starting equity

Net P&L ÷ equity at the period start. It is easy to read and correct when no money moved in the period. A deposit in the middle of the period lets the new money earn P&L that is still divided by the old balance, so the return looks higher than the trading earned; a withdrawal does the opposite. If the account was funded inside the period, there is no starting equity and the cell shows n/a.

2. Linked monthly return (time-weighted style)

The GIPS standards, the CFA Institute's performance presentation standards, prefer a time-weighted return. The GIPS Guidance Statement on Calculation Methodology explains why: "The GIPS standards require a time-weighted rate of return because it removes the effects of external cash flows, which are generally client-driven." For a trader, deposits and withdrawals are the external cash flows.

The same statement says that "the most accurate return is calculated by valuing the portfolio at the time of the external cash flow", then linking the sub-period returns. It also describes the Modified Dietz method as an approximation that weights each cash flow by the share of the period it was in the portfolio. The template uses that method for each month:

Monthly return = Net P&L ÷ (start equity + Σ cash flow × days held ÷ days in the month)
Linked return  = (1 + r_Jan) × (1 + r_Feb) × … × (1 + r_last) − 1

Linking is the step the GIPS standards for asset owners (2020) require for time-weighted returns: "Geometrically link periodic and sub-period returns." The first and last month are cut to your period dates. The sheet counts a cash flow from the start of its day, so a deposit on the 16th of a 31-day month is weighted 16 ÷ 31. The GIPS formula counts it from the end of the day; on a monthly return the difference is small.

What about a money-weighted return?

A money-weighted return is the internal rate of return of your cash flows. It rewards adding money before a good stretch and penalises adding it before a bad one, so it measures what happened to your money, not how well you traded. The CFA Institute's Rates and Returns reading lists, as a learning outcome, being able to "compare the money-weighted and time-weighted rates of return and evaluate the performance of portfolios based on these measures". Its overview of the GIPS standards notes: "Time-weighted returns are required for all portfolios except portfolios meeting certain criteria." The sheet does not calculate a money-weighted return; a personal trading account's deposits are your own decisions, and the linked monthly return is the better guide to the trading itself.

Limits of the method. This is a time-weighted-style approximation, not a GIPS-compliant return. Equity is on a closed-trade basis: open positions are not valued at month-end or at the time of a deposit, so a trade held across a month-end puts all its P&L in the month it closed. Drawdown and monthly returns can therefore look smoother than the account really was. Fees must already be in net P&L; interest, dividends and platform charges that are not tied to a trade are not captured unless you log them as trades.

Worked example from the sample data

March: a mid-month deposit

Equity on 1 March was $21,359.83. A $5,000.00 deposit arrived on 16 March and was in the account for 16 of 31 days, so its weight is 16 ÷ 31 and it adds $2,580.65 to the base. March's 16 trades made $817.08:

$817.08 ÷ ($21,359.83 + $2,580.65) = 3.41%

Dividing by the starting equity alone would give 3.83%, and dividing by the end-of-month balance would give 3.01%. The weighted base sits between the two.

The whole period

Linking the nine monthly returns gives 16.16%. Net P&L of $3,498.84 on the $20,000.00 starting equity is 17.49%: higher, because the $8,000.00 deposited during the period also earned P&L. As a cross-check, a day-by-day linked return on the same closed-trade equity (computed in Python, not in the sheet) gives 15.47%; the monthly approximation is close but not identical.

May: drawdown and losing streak

May was the only losing month (−$825.16, −2.95%). The 13-trade losing streak ran from 1 to 19 May, and cumulative closed P&L fell $1,643.23 from its 30 April high to 19 May, the period's max drawdown. In return terms that is −5.88%.

By strategy and side

GroupTradesWin rateNet P&LProfit factorExpectancy ($)Expectancy (R)
Breakout6136.1%$2,402.141.55$39.380.31R
Pullback4544.4%$1,021.941.35$22.710.18R
Mean reversion6350.8%$74.761.02$1.190.04R
Long12642.1%$2,417.931.28$19.190.17R
Short4348.8%$1,080.911.43$25.140.20R

In this made-up sample, Mean reversion has the highest win rate (50.8%) but the lowest expectancy (0.04R), while Breakout wins only 36.1% of the time with the highest expectancy (0.31R). That is why the report shows win rate next to payoff and expectancy rather than on its own. A sample of a few dozen trades per group is small; treat differences as questions to look into, not conclusions.

Common mistakes

FAQ

How do you calculate trading performance?

Start from closed trades and your deposits and withdrawals. Add up net P&L for the period, then measure it against your capital: net P&L ÷ equity at the start gives a simple return, and linking monthly returns that adjust for cash flows gives a time-weighted-style return. Add trade statistics: win rate, average win and loss, profit factor, expectancy and max drawdown. In the fictional example, 169 trades made $3,498.84 net, a 17.49% return on starting equity and a 16.16% linked monthly return.

What is the difference between time-weighted and money-weighted return?

A time-weighted return removes the effect of when money was added or taken out; a money-weighted return (an internal rate of return) includes it, so it is higher if you added money before a good stretch and lower if you added it before a bad one. The GIPS Guidance Statement on Calculation Methodology says the GIPS standards require a time-weighted rate of return "because it removes the effects of external cash flows, which are generally client-driven." Use time-weighted to judge your trading; a money-weighted return describes what happened to your money.

How do deposits and withdrawals affect trading returns?

If you divide P&L by starting equity, a deposit in the middle of the period lets the new money earn P&L that is counted against the old balance, which overstates the return; a withdrawal does the opposite. In the example, $8,000.00 of deposits and $2,500.00 of withdrawals make the simple return 17.49% while the linked monthly return is 16.16%. The template logs cash flows separately so they never count as profit or loss.

What is a good profit factor?

Profit factor is gross profit ÷ gross loss. Above 1 means winning trades made more than losing trades lost in that period; below 1 means a net loss. There is no official threshold: it depends on the number of trades, costs and the market, and a high figure from a small sample can be luck. Read it with the trade count, expectancy and drawdown.

How do you calculate expectancy in R?

Divide each trade's net P&L by the dollar risk you planned at the stop to get its R multiple, then average the R multiples. A +0.20R expectancy means trades made 0.2 times the planned risk on average. The template only uses trades with a risk amount logged; in the example, 162 of 169 trades have one and the expectancy is 0.18R.

Can I use this trading performance spreadsheet in Google Sheets?

Yes. In Google Sheets choose File → Import → Upload and pick the .xlsx, or upload it to Google Drive and open it with Google Sheets. It uses SUMIFS, COUNTIFS, SUMPRODUCT, INDEX/MATCH, EOMONTH and other functions that work in Excel 2016+, Google Sheets and LibreOffice. There are no macros and no dynamic arrays.

Related tools and templates

Educational template only, not financial, tax or investment advice. Past results, including your own, do not predict future results. Example data is fictional: STK-A to STK-H, the strategies, trades and cash flows are made up and are not real results or suggested trades. GIPS and CFA Institute material was retrieved on 31 October 2026.