UnifyTrade
Sign inStart free

Trades · Trading journal

Every trade. Every entry. The whole story.

Bring the trading history UnifyTrade can read from your connected platforms into one journal, and keep the life of a position understandable across entries, DCA, partial exits and your own review.

Read-only connections. Nothing here can place an order.

  • 09:41:02 Buy 0.0421 ETH
  • 09:41:03 Buy 1.6669 ETH
  • 11:02:55 Buy 1.2000 ETH
  • 13:24:10 Sell 0.9000 ETH
  • 15:40:31 Buy 1.1000 ETH
  • 16:58:02 Buy 0.6200 ETH
  • 17:21:47 Sell 0.2000 ETH
  • 18:03:12 Buy 2.0000 ETH
  • 18:44:09 Sell 0.4000 ETH
One position, rebuilt Example
ETH/USDT Binance Partially closed +1,500.60 Realised P&L
Avg entry 2,297.20 2,180.00 typed
Fees 20.17 never entered
Break-even 2,300.24 never calculated
Remaining 5.1290 ETH closed too early
Executions read2,847

From the connected accounts, as far back as each venue allows.

Positions rebuilt214

Open, partially closed and closed, each with its own arithmetic.

Fees accounted for4,182

Subtracted from the trade that paid them, once.

Rows typed by hand0

The journal arrives filled in. What you add is the review.

From a fill to a trade you can read

In a spreadsheet, the pipeline is you

Four things happen between an execution on the exchange and a trade worth reading back. UnifyTrade does three of them. The one it leaves is the one a machine has no way to do.

Read, not typed

The exchange already wrote it down

A read-only key, added once. Every fill arrives with its own price, its own quantity and its own fee, at the second it happened — while the position is still open.

In a spreadsheet: one buy becomes one row, at the price you remember, and the fee column stays a question mark.

Fills, as the venue sends them Read-only key Example
09:41:02 Buy ETH/USDT 2,178.40 0.0421 91.71 0.09
09:41:03 Buy ETH/USDT 2,180.60 1.6669 3,634.83 3.63
11:02:55 Buy ETH/USDT 1,940.00 1.2000 2,328.00 2.33
13:24:10 Sell ETH/USDT 3,180.00 0.9000 2,862.00 2.86
15:40:31 Buy ETH/USDT 2,510.00 1.1000 2,761.00 2.76
16:58:02 Buy ETH/USDT 2,640.00 0.6200 1,636.80 1.64
17:21:47 Sell ETH/USDT 3,402.00 0.2000 680.40 0.68
18:03:12 Buy ETH/USDT 2,388.00 2.0000 4,776.00 4.78
18:44:09 Sell ETH/USDT 3,510.00 0.4000 1,404.00 1.40

Nine fills, one morning one position

Rebuilt, not averaged by hand

Nine fills fold into one position

Buys and sells of the same asset on the same account are stitched into one cycle: the real average entry, the break-even that includes fees, and the quantity still held. Sell a third of it and the position stays open.

In a spreadsheet: a partial exit has nowhere to go. Either the row is closed early, or it stays open and what is left is forgotten.

All Trades

Every position from every connected account in one list: spot, futures and shares together, each with the market it was taken on, the strategy you gave it and where its result stands. Filter it, search it, or open a row to see the executions the position was built from.

Partially Closed

The view a spreadsheet has no room for: positions where part of the quantity is sold and part is still running. Realised and unrealised stay apart, the average cost follows what is left, and the position becomes a win or a loss only once the last of it is gone.

Campaigns

A plan that runs across many buys, read as one idea instead of thirty rows: capital put in, average cost, quantity still held, and every entry that built it. The positions stay individually readable — a campaign groups them, it does not merge them.

Open

Everything still held, priced at the last sync: what it cost, what it is worth now and the unrealised difference between the two. None of it counts towards win rate or profit factor, because none of it is settled yet.

Closed

Finished cycles, and the only ones the statistics count: average entry and exit, hold time, fees, and the final result in money and in percent — beside the strategy, the mindset and the tags added at review.

Stocks

Shares sit in the same journal as the rest and are never merged with a crypto ticker that happens to share their name. Same position logic, same review, quantities in shares and the result in your display currency.

All Trades Example
SymbolMarketSideStrategyAvg entryAvg exitP&LP&L %Status
ETH/USDTSpotBuy → SellSwing 2,297.203,297.60+1,500.60+43.55% Partially closed
SOL/USDTSpotBuy → SellDay Trade 138.40151.10+279.40+9.18% Closed
BTC/USDTFuturesShortScalping 71,480.0068,900.00+1,677.00+3.61% Closed
LINK/USDTFuturesLongSwing 14.8216.90+624.00+14.03% Closed
NVDAStocksBuy → SellLong Term 118.40141.20+1,824.00+19.26% Closed
ARB/USDCSpotBuySwing 0.7920—−2,042.40−14.02% Open
From fills to one position Example
ETH/USDT Binance Partially closed +1,500.60 Realised P&L
Avg entry 2,297.20 2,180.00 typed
Fees 20.17 never entered
Break-even 2,300.24 never calculated
Remaining 5.1290 ETH closed too early
Campaign Example
Long-term accumulationAccumulating +4,318.20Unrealised P&L
Entries 4
Invested 18,420.00
Avg cost 2,379.80
Remaining 7.7401 ETH
DateInvestedPriceQty
Mar 42,400.002,180.401.1007
Apr 193,600.001,942.101.8537
Jun 24,200.002,511.801.6721
Sep 118,220.002,640.003.1136
Open Example
SymbolExchangeAvg entryCurrent priceQtyInvestedUnrealised P&L
ARB/USDCCoinbase0.79200.681018,400.0014,572.80 −2,042.40
SUI/USDTBinance2.41203.10804,200.0010,130.40 +2,923.20
TIA/USDTMEXC6.84007.91001,250.008,550.00 +1,337.50
DOT/USDTKraken4.19003.96003,800.0015,922.00 −874.00
Closed Example
SymbolExchangeStrategyCategoryAvg entryAvg exitP&LP&L %Emotion
APT-USDCBinanceSwingLayer 1 0.6480.685+99.05+5.71% Patience
BIGTIME-USDTMEXCDay TradeGaming 0.00529850.0058093+736.76+9.64% Confidence
BERA-USDTMEXCSwingLayer 1 0.161130.19400+201.16+20.40% Discipline
RARE-USDCBinanceSwingNFT / Metaverse 0.013320.01196−83.08−10.21% Fear of Loss
ILV-USDTMEXCSwingGaming 3.41633.6540+125.10+6.96% Patience
Stocks Example
SymbolBrokerAvg entryAvg exitQtyP&LP&L %Status
NVDATrade Republic118.40141.2080 +1,824.00+19.26% Closed
AAPLTrade Republic188.60—45 +1,143.00+13.47% Open
ASMLKraken642.10701.4012 +711.60+9.24% Closed
TSLARobinhood243.80228.1030 −471.00−6.44% Closed

Yours, in two taps

The automation stops where you begin

Prices, quantities and fees are already in. What is left is the part only you were there for: the strategy you were following, and how you held it. Two taps and Save, and it stays on the position through every later sync.

In a spreadsheet: a free-text column, filled in on the good days and empty on the ones worth reading.

Review trade Example

Strategy

SwingDay TradeLong TermScalping

How was it held? Two taps

PatienceConfidenceDisciplinePlan followedRevenge TradingFOMOFearHesitation

Notes

Entered on the retest, added once. Took a third off at the target and let the rest run.

Price, fees and quantity are already filled in from the exchange. Save

Kept, day after day

A year of it becomes a calendar you can read

The same few seconds, repeated, turn into something a list of rows never gives back: the shape of a month, and what the mindset you tagged was worth in money.

In a spreadsheet: rows, and a pivot table rebuilt by hand every time you want to look.

Trading calendar All accounts Example
Month P&L
+38,914.20
Days traded
19 / 30
Best mindset
Patience +21,480
Costliest mindset
Revenge Trading −4,106

A spreadsheet, beside it

Eight things a spreadsheet cannot do for you

Not because the file is badly made — most traders' files are careful work. Because each of these needs arithmetic redone every time something changes, and nobody has an evening a week for that.

A spreadsheet, beside it Example
In a spreadsheetIn the journal
Many fills, one buy One row, at the price you remember Every fill kept, one weighted average
Selling part of a position Nowhere to put it Realised and unrealised, side by side
Fees A column nobody fills in Read per fill, subtracted once
Moving coins between your own accounts Reads as a sale and a purchase Matched, and the cost follows the coins
Several venues A tab each, and a total by hand One journal, whatever you trade on
Strategy and mindset A free-text column you cannot count Two taps, and countable afterwards
The shape of a month A pivot table you rebuild A calendar, priced day by day
Keeping it current An evening a week, at best A sync you never have to run

A spreadsheet has two real advantages this page will not pretend away: it is free, and it is entirely yours. Everything above is about arithmetic and time, not about the file being wrong.

Positions

A position, not a row per order

Buys and sells of the same asset on the same account are grouped into one position with one average entry, one quantity and one result. Each position says which of three states it is in.

Open

You still hold the asset and nothing has been sold yet. The result is unrealised and moves with the price.

Invested 128,400.00
Partially closed

Some of it has been sold and some is still held. Selling part of a position does not close it — the realised and the unrealised parts stay separate.

Realised P&L +1,500.60
Closed

Nothing is left. The result is settled, and only then does the position count as a win or a loss in your statistics.

Total P&L +3,156.92

Buying over months

Eight buys, two exits, one position you can still read

After eight or ten entries spread over a year, few people remember how many times they bought, what the average became, or how much is left. The journal keeps the order of events, so you do not have to.

Position lifecycle Example

Buy 8 Sell 2 Average cost of what is still held 58,412.00

Adding to a position is neither good nor bad here. UnifyTrade records what happened and leaves the judgement to you.

Journey

Open a position you have held for months and read it in seconds

Every asset has a Journey: each round trip you have had in it, with what went in, what came out, what is still held and how long it has been held.

Journey · one asset Example
Avg cost of remaining58,412.00
Entries8
Exits2
Remaining0.4320 BTC
Invested71,240.00
Realised P&L+9,880.00
Unrealised P&L+12,460.40
Average hold time8 months

Average cost, entries and exits, invested, remaining quantity, realised and unrealised result, and how long the position has run — per cycle, and across the asset’s whole history with you.

Partial exits

Selling part of a position keeps the rest readable

When you sell into strength, the position is not finished. UnifyTrade shows how much left, what it realised, and what the remaining quantity is still worth — as three separate numbers, never one blended figure.

Partial exit Example
Held before
59.00 SOL
Sold
11.00 SOL
Share of the position
18.64%
Still held
48.00 SOL
Total P&L Example
Realised P&L+1,098.00On the quantity sold
Unrealised P&L+2,436.80On what is still held
Total P&L+3,534.80Both together

A partial sell contributes its realised result immediately. The position becomes a win or a loss in your statistics only once it is fully closed.

Campaigns

Group a longer idea into one campaign

Some positions are one trade. Others are a plan you run for months across many buys. A campaign groups those entries so you can read the idea as a whole.

Campaign Example
Long-term accumulationAccumulating
Entries 4
Invested 18,420.00
Avg cost 2,379.80
Remaining 7.7401 ETH

Entries, capital put in, average cost and what is still held — for the campaign, not just for each buy.

Your own context

The part the exchange never had

An execution says what happened. Only you can say why. Every position takes a strategy, a category, whether you followed your plan, how you felt, an exit reason, tags and notes.

Review trade Example
StrategySwing
CategoryLayer 1
Plan followed?YesNo
Emotion / mindsetPatienceConfidence
Event / exit reasonTarget reached
Tagsbreakoutweekly-plan
Notes

Entered on the retest, added once. Took a third off at the target and let the rest run.

Reviewed trades feed Psychology

Once a trade carries a strategy, a mindset tag and whether the plan was followed, the Psychology page can look across all of them and show how those choices lined up with results.

Performance by Psychology Tag Example
Patience +21,480
Confidence +12,940
Discipline +8,210
Hesitation −3,180
Revenge Trading −4,106

Counting and grouping what you recorded. No model is guessing at your state of mind.

See the analytics

Finding it again

Find a trade from two years ago in one search

Search a ticker, a strategy, a tag or a note, then narrow by status, market, exchange, account, category, style, mindset, exit reason or date — including a custom range.

Search and filters Example

Search coin, symbol, strategy, tag…

SpotFuturesPartially closedBinanceSwingHesitationThis month
Positions found
17
Taken while hesitating
−6,240.10
Same setup, taken with patience
+31,402.00

Every partially closed spot position on one exchange, this month, tagged breakout: that is four filters, and the list is the answer.

Evidence

The position on top, the fills underneath

One order can be filled in many pieces at different prices. UnifyTrade keeps every execution and shows you the position built from them — open the executions whenever you want to check the arithmetic.

Executions behind one order one order · three fills Example
TimeQty PriceSource
09:41:020.04212,178.40 API
09:41:020.09102,179.10 API
09:41:031.66692,180.60 API

Where each row came from

Rows read from an exchange, rows you added by hand and quantity that arrived by transfer are marked as what they are, so you always know which is which.

APIManualTRANSFER

History imported from an exchange is never rewritten. A correction you make is recorded as yours.

Transfers

Moving coins between your accounts is not a new investment

Send an asset from one connected account to another and the naive reading is a sale on one side and a purchase on the other. UnifyTrade matches the two sides where the evidence supports it, and the cost follows the coins.

Transfer between your own accounts Example
BinanceBought here
KrakenHeld here now

Matched from the withdrawal and deposit records of your own accounts. Where the evidence does not support a match, the arrival is marked as having no known cost rather than being guessed at.

Getting your history in

One journal, whichever venues you trade on

21 platforms connect by read-only API and 2 read a public wallet address. Not every method is available on every venue — the directory says exactly which.

BinanceCoinbaseKrakenBitvavoBitpandaCrypto.comBitstampBybitOKXKuCoinView all integrations

Read-only API

Connect an exchange with keys that can only read. Later syncs pick up where the last one finished instead of walking history that has not changed.

Exchange export

Upload an .xlsx or .csv export into an account you have already connected. You see what is new before anything is written, and rows already stored are skipped.

By hand

Add a trade the API never saw, or correct a position yourself. Imported executions stay exactly as they arrived.

Markets read today Spot · 21 Futures · 16 Stocks · 1

Counted from the connectors themselves. Shares are kept separate from crypto, so a ticker that exists in both is never one position.

Historical coverage

Your API is connected. But is your history complete?

A successful sync proves the key works. It does not prove your whole past arrived: some exchanges keep only a few months of fills, some answer only per trading pair, and a first import walks back a chosen distance and stops.

API history Example
ExchangeAPI history
Binance Per-pair scan Fills are answered per trading pair, so coverage follows the pairs UnifyTrade asks about and is never assumed complete.
Coinbase Full history One endpoint returns the account’s whole history.
MEXC Per-pair scan Fills are answered per trading pair, so coverage follows the pairs UnifyTrade asks about and is never assumed complete.
OKX ~90d API window The exchange API keeps about 90 days of fills. Anything older has to come from an export.
Bybit ~2y first import The first import walks back about 730 days. Earlier history can come from an export.
Kraken Full history One endpoint returns the account’s whole history.
KuCoin ~1y first import The first import walks back about 365 days. Earlier history can come from an export.
Gate.io ~1y first import The first import walks back about 365 days. Earlier history can come from an export.

So UnifyTrade never infers completeness from success. It reads the history it actually received, names the gap in dates when one is provable, and says “coverage unknown” rather than “complete” when it cannot tell. Each card above carries what its connector declares about its own reach, per market.

Bringing the old file with you

Your spreadsheet is a starting point, not something to abandon

Years of rows do not have to be retyped, and they do not have to be thrown away either. Three steps, and the file becomes positions.

  1. Connect what still exists

    A read-only key on each venue you still use. Whatever the API can reach arrives on its own, with its fills, its fees and its dates, and it is the part you will never have to maintain again.

  2. Upload the file for the rest

    An .xlsx or .csv export — the exchange's own, or the sheet you have been keeping — goes into an account you have already connected. You see what is new before anything is written, and a row already stored is skipped rather than duplicated.

    Accepts .xlsx.csv

  3. Type only what nothing else saw

    The OTC fill, the private sale, the venue nobody connects to. Added by hand, marked as added by hand, and from then on it behaves like every other position in the journal.

Imported executions are never rewritten afterwards. A correction you make is recorded as yours, beside what arrived, rather than replacing it quietly.

Mentor access

Let someone look, without handing over your account.

Sending screenshots is how most people share their trading, and it shows the good week. This shows the real pages — the ones you use — to one person, for the pages you pick, until the date you set.

Knowing who you are gets nobody in

Access is deny-by-default and belongs to a specific grant. Your email, your user id, your public portfolio link — none of them is a way in. Without a grant there is nothing to open.

The invitation itself expires

An unaccepted invitation lapses after a week, so a link that sat in an old inbox is not a door left open.

Read only

Read-only by construction. There is no path by which a mentor can change anything of yours.

Keeping it

What UnifyTrade keeps, said plainly

Three sentences, so nothing here is a promise the product cannot keep.

What is imported stays in your journal

Once history has been imported, it is yours to read in UnifyTrade under your account — you do not have to reconstruct it from an exchange interface again.

What was never imported is not there

How far back a platform lets an account read varies by venue and by endpoint. UnifyTrade imports what it can retrieve. It cannot recover history that was never available to it.

Read-only, by design

Where an API key is used, UnifyTrade asks for read access only. It does not need permission to trade or to withdraw, and never places an order.

Before you connect anything

The questions people actually ask

Can UnifyTrade place a trade or move my funds?

No. A connection is made with a read-only key, and there is no code in the product that places, amends or cancels an order, and none that transfers or withdraws anything. A key that carries trading rights is refused when you add it rather than accepted with a warning.

How far back will my history go?

As far as each venue lets an account read, which differs by exchange and even by endpoint — the table on this page names what each connector declares about its own reach. What is imported stays in the journal afterwards; what a venue never exposed cannot be recovered, and nothing here pretends otherwise.

Does it read futures, or only spot?

Both, on the venues where a connector reads them, and shares on the venues that offer them. Futures are kept apart from spot rather than merged into one position, and the Integrations directory says market by market which venue UnifyTrade can actually read.

I have years in a spreadsheet. Can I bring it?

Yes. An .xlsx or .csv export goes into an account you have already connected, you see what is new before anything is written, and rows already stored are skipped instead of duplicated. It becomes positions on the way in, not a second table sitting beside the first.

Where do my API keys live, and who can see them?

Encrypted with AES-256-GCM, in a file of their own, and no route anywhere hands one back — not to you, and not to an administrator, who sees only whether a connection is configured. When a key has to change you enter the new one; there is no flow that reveals the old.

My exchange is not in the list. Then what?

Then it is an import rather than a connection: upload the venue's own export, or add the trades by hand. The Integrations directory marks what is readable by API, what is wallet-only and what is not integrated yet, in those words rather than in a promise.

I hold shares as well as crypto. One journal or two?

One. Shares are read from the brokers that expose them and kept in the same journal, with the same position logic and the same review. They are never merged with a crypto ticker that happens to share their name, so a symbol that exists in both markets is never one position.

What does it cost, and what happens to my data if I leave?

The beta is free, and the Pricing page is where any change to that is stated rather than buried here. Your journal exports to one JSON file — executions, journal entries, categories, connections without their secrets and preferences — so leaving means taking it with you, not losing it.

Four things that cannot happen

  • No order is ever placedThere is no order path in the codebase
  • No funds are ever movedNo transfer or withdrawal call exists
  • No seed phrase is ever asked forThere is nowhere to put one
  • No stored secret is ever returnedNot to you, not to an administrator
How security works here

Bring your trading history together

Connect a platform, import an export, or add a position by hand. The journal starts with the first thing you put in it.