Free tool · no sign-up
What did your habits cost you?
Drop in a CSV of your past futures trades. In a few seconds you'll see how much money went to revenge trades, sizing up after a loss, overtrading, tilt and holding losers.
Your file never leaves your computer. It's read by this page, in your browser. Nothing is uploaded, and your trades aren't stored.
Drop your trades CSV here
Tradovate (Performance, Fills or Orders report), NinjaTrader 8 (Trades or Executions export), or a simple CSV
Your habit cost audit
What would have happened without them
Plain arithmetic on the trades in your file, not a forecast. In real life, skipping one trade changes the ones after it.
Your rules, suggested
Rules your own trades argue for
Rule settings
Lower minimums mean thinner evidence. The cooldown window changes only the cooldown rule; the revenge habit and the headline stay at 10 minutes. Remembered on this device only.
A rule shows up only when the trades it would have skipped lost money, with at least 5 trades on 3 different days. The rules overlap (one trade can break more than one), so don't add the amounts up. This describes trades you already took; it isn't a promise about future ones.
TiltLab's pre-trade co-pilot can hold you to rules like these: a strip beside NinjaTrader turns amber or red before a trade that would break one, and each order is checked the moment you place it.
Money lost per habit
Net P&L of the trades each habit touched. A trade can show up under more than one habit; the headline counts it once.
P&L by half hour of entry
Faded bars have fewer than 5 trades. Best and worst need at least 5.
By day of week
Net P&L by the weekday you entered. Faded rows have fewer than 5 trades; the worst day needs at least 5.
Losing streaks
Losers in a row, and what your next trade did once 2 or more losses had stacked up that day.
Habit by habit
What TiltLab does about it
Catch each habit before the trade, not in next week's review.
This audit looks backwards. TiltLab watches the same patterns live, on your own NinjaTrader feed, and speaks up while you can still skip the trade.
Get warned before the next one.
Join the waitlist for the live version. Every new account starts with a 21-day free Pro trial, no card needed, and the habit guarantee covers your first paid month.
Past results don't predict future results. This audit describes trades already taken; it isn't a forecast and it isn't trading advice. P&L comes from your file as exported (usually before commissions) unless you enter a commission per contract, or choose your file's own commission column, which the page then takes off every trade. Trading futures involves substantial risk of loss. See the Risk Disclosure.
Which file?
Export your trades in about a minute.
The audit recognises the file by its column names, so you don't need to edit anything.
Tradovate: Performance
Reports → Performance → pick a date range → Download CSV. One row per round trip, with the P&L Tradovate calculated.
Tradovate: Fills or Orders
Reports → Fills (or Orders) → Download CSV. We pair the fills into trades first-in, first-out for NQ, MNQ, ES, MES, YM, MYM, RTY, M2K, CL, MCL, GC and MGC.
NinjaTrader 8: Trades
Control Center → New → Trade Performance (or Account Performance) → Generate → Trades tab → right-click → Export to CSV. One row per trade, with NinjaTrader's P&L.
NinjaTrader 8: Executions
Control Center → New → Account Performance → Generate → Executions tab → right-click → Export to CSV. One row per fill; we pair them into trades first-in, first-out, per account and contract, with the same point values as Tradovate fills.
Or the simple format
From any platform or spreadsheet: one row per trade with these columns. Exit time, Side and Qty are optional, but without them a few checks are skipped. Times are read as written, as M/D/YYYY h:mm:ss AM, DD.MM.YYYY HH:MM:SS or YYYY-MM-DD HH:MM:SS (a separate Date column with time-only entry and exit columns works too). Commas, semicolons or tabs between columns, and -84,00 style decimals, are all fine, and so are UTF-16 and older Windows (Windows-1252) files. NinjaTrader 8 exports with German, French or Spanish column names are recognised too (best effort: if yours isn't, the error lists the columns we found).
Download the sample CSV| Entry time | Exit time | Side | Qty | P&L |
|---|---|---|---|---|
| 10/13/2026 9:41:12 AM | 10/13/2026 9:47:30 AM | Long | 2 | -84.00 |
| 10/13/2026 9:52:05 AM | 10/13/2026 9:58:44 AM | Short | 4 | -126.50 |
How it counts
Plain rules, the same for everyone.
Revenge re-entry
A new trade within 10 minutes after a losing trade closed on the same account, even if the clock passed midnight.
Sized up after a loss
More contracts than the trade before, right after that trade lost.
Overtrading
Your 4th trade of the day and every one after it.
Trading on tilt
A trade entered after 2 or more losses in a row that day.
Held losers too long
A loser held more than twice as long as your median winning trade.
Best and worst hours
Total P&L by the half hour you entered, for half hours with at least 5 trades.
Days are calendar days of the entry time by default (overtrading, tilt and size-up reset at midnight; the 10-minute revenge window doesn't). Switch to futures sessions and a day runs from 6pm to 5pm and takes the next date, so Sunday evening counts as Monday; tell the page which time zone your file's times are in (New York, Chicago, London, UTC or this computer's) and the 6pm New York cut-off is placed exactly, daylight saving included; times written with an offset (like -05:00) are converted on their own. "As written" applies the cut-off to the times without converting them. With a commission per contract, every dollar figure is net of it: each trade pays for every contract it opened. With more than one account in a file, each account's day is counted on its own, and you can filter by account. The headline adds up the trades from every habit that lost money, counting each trade once.
Waitlist
Get the version that warns you live
One email when your invite is ready, with the founding-member details. No newsletter unless you ask for one.
We use your email only for the waitlist. Your trades file isn't sent with it. See the Privacy Policy.