Brokers

A trading journal for thinkorswim traders

thinkorswim gives you fills. A month of swing trading is hundreds of executions, and turning them back into "what were my actual trades, and what was my R on each" is the friction that kills most journaling habits. CrucibleTrade is built to do that part for you — on your own machine, from the account statement you already export.

The short version: import your thinkorswim account statement and CrucibleTrade reconstructs real positions from the raw fills — scale-ins, partial exits, moving stops, longs and shorts — not a flat list of executions. It is a desktop app: your journal is one SQLite file on your disk, there is no account, and you pay once. It has no connection to your brokerage — no login, no linked account, no API key. You export a file and it reads the file.

From a statement to a journal, in four steps

  1. Export your account statement from thinkorswim. The CSV you already have access to is the one it reads; the import dialog names the format so there's no guessing which export to pick.
  2. Import it against the right account. Every import is scoped to the CrucibleTrade account it belongs to, with the broker format locked to that account, and execution times normalized to your timezone. Multiple accounts across brokers are normal — a thinkorswim/Schwab account and a Fidelity account can live in the same journal.
  3. Confirm anything ambiguous. Fills that look like duplicates or can't be matched cleanly go to a "needs review" inbox instead of into the ledger, so you decide match-or-new. Re-importing an overlapping statement doesn't double-count, and matching an entry to a broker fill preserves the setup, notes, and stops already on that trade.
  4. Triage the backlog in bulk. A deep first import will drop a lot of trades into the review queue. The import tells you exactly how many, and you can set review status across a whole filter at once rather than clicking through them one by one.

Same-day fills that your statement's cash ledger hasn't posted yet are picked up rather than dropped — a detail that only matters until the one time it silently costs you a trade.

What you get back that the statement didn't have

Once positions are reconstructed, the journal is the point. Each closed trade replays on real candles — 2-minute through daily — with entry and exit markers, both the initial and the current stop line, a 5-day SMA, and open-day and prior-day anchored VWAPs. You grade the setup's own written rules one at a time (Followed, Broke, N/A, with a note on what happened), tag the behaviors, and write the lesson.

Those grades become money: per-rule adherence showing what breaking a specific rule has cost, a per-trade dollar gap between your followed-all trades and your deviation trades, mistake costs that reconcile exactly to your net P/L without double-counting, and a month-over-month read on whether your discipline is actually improving. Eleven report lenses cover the P/L side — symbols, setups, time of day, hold time, monthly, a daily calendar, R distribution, sectors, size, and MAE/MFE excursion computed from cached intraday bars.

And the part that happens before the fills exist

The same app sizes the next idea: entry plus stop plus a risk mode become a share count against that account's risk budget, with the setup's rules beside the plan. Through the day it tracks the open book — scale-in/scale-out ledger, break-even shortcut, stops split across up to three lots, per-account "risk left", and an "if stopped" figure showing where everything lands if every working stop fills. R stays anchored to your initial stop, so trailing never quietly rewrites the denominator. Prices refresh when you ask, or you type them in — there's no streaming tape, and none of the sizing math needs one.

Does it fit how you trade?

Good fit

  • Equities and ETFs at thinkorswim / Schwab, or Fidelity, or both.
  • Multi-day to multi-month holds, partial scale-outs, stop discipline, R-multiple thinking.
  • You suspect your losses come from breaking your own rules rather than from a missing indicator.
  • Shorts — fully supported, reconstructed the same way as longs.
  • You want your trading record on your own disk and no monthly bill.

Poor fit

  • Options or futures as your main instrument — the analytics are share- and R-based.
  • You want fills to arrive automatically. There is no broker API sync; you import a CSV after the fact.
  • You use a broker outside the two supported import families.
  • You want to journal from a phone or a browser. Desktop only.
  • You want signals, backtesting, or order routing. It never trades — even the risk throttle only warns and resizes.

Nothing about your account leaves your machine

CrucibleTrade reads files you export and choose. It holds no brokerage credentials, has no linked account, and transmits nothing about an import anywhere. Your trades, notes, sizes and P/L live in a local SQLite file, and there is no server with a copy.

The app makes two outbound requests and no others: optional price and chart lookups, which ship turned off and can be replaced by typing prices in by hand, and a once-a-day update check carrying the app version, the operating system, and — once in an install's life — a flag that the install is new. Both have off switches; Microsoft Store builds skip the update check entirely. Details are in the privacy policy, and if you'd rather verify than trust, block the app in your firewall and every local feature carries on.

Questions

Do I have to connect my Schwab or thinkorswim login?

No, and you can't — there is no brokerage connection of any kind. You export a statement and import the file.

Can I import years of history at once?

Yes. Expect a large review queue afterwards, which is what the bulk review-status tools and the filterable queue exist for.

What if my statement and my journal disagree?

There's a data audit, a "needs review" inbox for ambiguous fills, manual execution entry with LIFO auto-assignment, and repair tools that take an automatic backup before their first write. Rebuilding an account requires typing a confirmation phrase, not clicking OK.

I trade Fidelity too.

Supported — both the Fidelity History export and Fidelity ATP order files, the latter carrying precise execution times. Accounts from both brokers live in one journal, each with its own import format and risk budget.

Can I look before importing anything real?

One click at first run loads a complete sample year — about 200 trades across two accounts, a written playbook, graded reviews and closed day cards — so every screen is populated immediately. It doesn't start your trial clock.

Import a statement and see your real trades

30-day full trial, no card and no account. The clock starts on your first edit or import — not at install — and a lapsed trial goes read-only, never locked.

Your journal is one file on your own machine.

thinkorswim and Schwab are trademarks of Charles Schwab & Co., Inc.; Fidelity is a trademark of FMR LLC. CrucibleTrade and Kalman Software LLC are not affiliated with, endorsed by, or sponsored by either firm, and CrucibleTrade is not a broker-dealer. Product names are used only to identify the file formats CrucibleTrade can read. Export formats are controlled by those firms and can change. CrucibleTrade is journaling and planning software — it does not place orders, provide trading advice, or make recommendations.

Related: a trading journal without a subscription · a local-first TradeZella alternative