Swing Trading Fixed Profit Backtester Tool
Use this interactive tool to backtest BTFDBot's oversold strategies for different years and stock types. There is also a monthly backtester for longer term trend following strategies.
The year selector selects the year the trades were entered. Losses will not be realised until two calendar years after the buy date. This normally results in most of the significant losses being booked in years where the market boomed (e.g. 2021) rather than major bear market years (e.g. 2022).
Win rate: 87.38%
Average profit per trade: 6.12%.
Number of trades: 103
Average CAGR: 137206791.06%
Maximum Drawdown: -55.29%
Average Maximum Drawdown: -7.77%
Expectancy calculations:
(Win% x Avg Win) + (Breakeven% x Avg Breakeven) – (Loss% x Avg Loss): (87.38% x 8.51%) + (6.80% x 1.63%) – (5.83% x 24.48%) = 6.12%
All Trades
Win/Loss chart key: : win : breakeven : loss
Table key: : profitable with CAGR above 15%
: profitable with CAGR between 5 and 15%
: profitable but CAGR was below 5%
: losing trade (not profitable in a 2 year timeframe)
: high CAGR trade
: open trade
Swing Trading Backtest Simulation Results
The Capital Allocation and Equity Curve charts above show the hypothetical results from swing trading the specific stocks in the specific year.
The backtester uses $1000 starting capital and invests $100 into each stock [it assumes all stocks are listed in $]. If no funds are available then it does not buy stocks until there is capital available. Note that this backtester does not buy all of the trades listed in the table above. It may not have sufficient funds to buy each signal.
The results are highly dependent on two factors: the time each swing trade takes to complete and the number of buy signals. If there are no buy signals then the backtester will accumulate cash.
This Gantt chart shows an overview of when trades were entered and exited ( : profit : breakeven : loss ).
ID | Name | Start Date | End Date | Duration |
|---|
16 | Johnson & Johnson (JNJ) | 2/1/2023 | 8/28/2024 | 411 days |
2 | Akamai Technologies (AKAM) | 3/1/2023 | 4/7/2023 | 28 days |
6 | Morningstar (MORN) | 3/2/2023 | 7/26/2023 | 105 days |
9 | NV5 Global (NVEE) | 3/2/2023 | 12/27/2023 | 215 days |
1 | Hasbro (HAS) | 3/16/2023 | 3/28/2023 | 9 days |
15 | Commerce Bancshares (CBSH) | 3/16/2023 | 7/15/2024 | 348 days |
18 | Hormel Foods (HRL) | 3/16/2023 | 3/17/2025 | 523 days |
3 | Principal Financial Group (PFG) | 3/20/2023 | 4/18/2023 | 22 days |
4 | Gorman-Rupp Company (GRC) | 3/20/2023 | 6/2/2023 | 55 days |
13 | First Financial Bankshares (FFIN) | 3/20/2023 | 3/27/2024 | 268 days |
17 | Capitol Federal Financial (CFFN) | 4/6/2023 | 10/23/2024 | 405 days |
8 | Cal-Maine Foods (CALM) | 5/4/2023 | 12/8/2023 | 157 days |
14 | Keurig Dr Pepper (KDP) | 5/4/2023 | 5/3/2024 | 262 days |
5 | Ulta Beauty (ULTA) | 6/5/2023 | 6/21/2023 | 13 days |
7 | Humana (HUM) | 6/28/2023 | 8/1/2023 | 25 days |
12 | RTX Corp (RTX) | 7/28/2023 | 3/18/2024 | 167 days |
11 | Amdocs Ltd (DOX) | 8/9/2023 | 3/13/2024 | 156 days |
10 | Arthur J. Gallagher (AJG) | 12/26/2023 | 1/23/2024 | 21 days |
Jan 29, 2023 | Feb 05, 2023 | Feb 12, 2023 | Feb 19, 2023 | Feb 26, 2023 | Mar 05, 2023 | Mar 12, 2023 | Mar 19, 2023 | Mar 26, 2023 | Apr 02, 2023 | Apr 09, 2023 | Apr 16, 2023 | Apr 23, 2023 | Apr 30, 2023 | May 07, 2023 | May 14, 2023 | May 21, 2023 | May 28, 2023 | Jun 04, 2023 | Jun 11, 2023 | Jun 18, 2023 | Jun 25, 2023 | Jul 02, 2023 | Jul 09, 2023 | Jul 16, 2023 | Jul 23, 2023 | Jul 30, 2023 | Aug 06, 2023 | Aug 13, 2023 | Aug 20, 2023 | Aug 27, 2023 | Sep 03, 2023 | Sep 10, 2023 | Sep 17, 2023 | Sep 24, 2023 | Oct 01, 2023 | Oct 08, 2023 | Oct 15, 2023 | Oct 22, 2023 | Oct 29, 2023 | Nov 05, 2023 | Nov 12, 2023 | Nov 19, 2023 | Nov 26, 2023 | Dec 03, 2023 | Dec 10, 2023 | Dec 17, 2023 | Dec 24, 2023 | Dec 31, 2023 | Jan 07, 2024 | Jan 14, 2024 | Jan 21, 2024 | Jan 28, 2024 | Feb 04, 2024 | Feb 11, 2024 | Feb 18, 2024 | Feb 25, 2024 | Mar 03, 2024 | Mar 10, 2024 | Mar 17, 2024 | Mar 24, 2024 | Mar 31, 2024 | Apr 07, 2024 | Apr 14, 2024 | Apr 21, 2024 | Apr 28, 2024 | May 05, 2024 | May 12, 2024 | May 19, 2024 | May 26, 2024 | Jun 02, 2024 | Jun 09, 2024 | Jun 16, 2024 | Jun 23, 2024 | Jun 30, 2024 | Jul 07, 2024 | Jul 14, 2024 | Jul 21, 2024 | Jul 28, 2024 | Aug 04, 2024 | Aug 11, 2024 | Aug 18, 2024 | Aug 25, 2024 | Sep 01, 2024 | Sep 08, 2024 | Sep 15, 2024 | Sep 22, 2024 | Sep 29, 2024 | Oct 06, 2024 | Oct 13, 2024 | Oct 20, 2024 | Oct 27, 2024 | Nov 03, 2024 | Nov 10, 2024 | Nov 17, 2024 | Nov 24, 2024 | Dec 01, 2024 | Dec 08, 2024 | Dec 15, 2024 | Dec 22, 2024 | Dec 29, 2024 | Jan 05, 2025 | Jan 12, 2025 | Jan 19, 2025 | Jan 26, 2025 | Feb 02, 2025 | Feb 09, 2025 | Feb 16, 2025 | Feb 23, 2025 | Mar 02, 2025 | Mar 09, 2025 | Mar 16, 2025 |
S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S | S | M | T | W | T | F | S |
Strategy summary: buy stocks at Rate of Change buy signal and sell if it reaches the specified percentage profit target. If it doesn't reach the profit target after 365 days then adjust the profit target to the buy price. Wait for another 365 days for the stock to reach this new breakeven target. If it doesn't reach the breakeven target then sell at whatever price the stock is at. This strategy does not use stop losses. Full details of the trading strategy are here.
Some trades will have significantly exceeded their designated profit target due to gaps up at the market open. This can be a significantly higher price due to takeover bids or periods of extreme market volatility (e.g. during March 2020 or April 2025).
The current and previous year(s) may have trades in progress. These are excluded from expectancy calculations.
CAGR (Compound Annual Growth Rate) is the percentage return a trade makes on an annualised basis.
