KESTREL docs
v1.0.0
Get help
● Use · Review every trade

Journal and analytics
every position from real fills, with CSV export.

The journal rebuilds every position from the fills the exchanges report, bot and Smart Trade trades included, and lets users annotate them. Analytics and CSV exports (generic, Koinly, CoinTracking) are built from the same data. Nothing is estimated.

Real fillsNotes · tags · ratingEquity · drawdownKoinly · CoinTracking

01Journal entries

One entry is one position from flat to open to flat. Each has an origin:

OriginOne entry is
Smart tradeOne Smart Trade
SignalA Smart Trade opened by a signal bot
BotA DCA or trailing cycle; for grid and rebalance bots, the buy/sell pairs closed on one UTC day
AlgoOne TWAP or scaled order
CopyThe orders one copy link placed on a symbol
ManualEverything else on the account, including trades made in the exchange's own app

Each entry shows the entry and exit average, amount, realised PnL before fees, fees, funding (futures), net PnL (gross − fees + funding), duration, and the R multiple for closed Smart Trades that had a stop. Open an entry to see its fills.

  • A fee paid in another asset (for example BNB) is not counted and the entry is marked "fee unknown".
  • History starts with what the exchange returns on the first read. Some exchanges return only recent fills; older ones are not reconstructed.
  • The server re-reads an account within a minute after one of its bots or Smart Trades fills, and every 15 minutes otherwise. Rebuild from the exchanges does it now (up to 6 times a minute).

02Notes, tags, rating

On each entry: notes (up to 10000 characters), up to 20 tags, a rating from 1 to 5, up to 20 mistake notes and up to 10 screenshot links. Screenshots are links only; images are not uploaded or stored. Annotations survive every rebuild. Filter the journal by date, symbol, origin, tag and account.

03Analytics

From closed journal entries in the chosen range: trades, win rate, profit factor, average win and loss, expectancy, best and worst trade, net and gross PnL, fees, funding, max drawdown, average duration and the longest win and loss streaks, with breakdowns by origin, symbol, tag, weekday and hour (UTC).

The equity curve and drawdown come from hourly snapshots of each account's real balances (valued at the exchange's USDT price, plus open futures PnL). The curve starts with the first snapshot; days where an asset had no USD price are marked partial.

04CSV export

Analytics and the journal have export buttons that hand the file to the system's share or save sheet:

ExportContents
Generic (trades)Every stored fill: date (UTC), exchange, account, symbol, market, side, price, amount, quote amount, fee, fee asset, realised PnL, order and fill id, origin
KoinlyKoinly's universal format. Spot fills as sent/received rows; futures closes as rows labelled realized gain (a gain under Received, a loss under Sent); opening fees as cost rows.
CoinTrackingCoinTracking's CSV. Spot fills as Trade; futures as Margin Profit, Margin Loss or Margin Fee; trade group KESTREL.
JournalOne row per journal entry with notes, tags, rating and mistakes

Cells that start with =, +, -, @, a tab or a carriage return are prefixed with an apostrophe, so a spreadsheet never runs them as formulas; plain negative numbers stay numbers. Up to 10 exports per user per minute.

Check your tax tool's import

Tax tools change their import rules and how they treat futures. Check a small export in your Koinly or CoinTracking account before importing a full history, and ask a tax adviser about your own situation.