SAKAAN emblem

sakaantradelab

The $1,000 Experiment · v6.1b
synced
Total Trades
47
Win Rate
11%
Total P&L
-424.28
Avg R:R

Log a Trade

The discipline of logging builds the discipline of trading.

⎘ Paste from Binance Copy a row from your Binance Position History and paste it here — fields auto-fill.
$
$
$
$
$
$
Stop / targets — optional (SL, TP1/TP2/runner + planned R:R)
$
$
%
$
%
$
$
$

SL and TP feed your R:R and R-multiple analytics — fill them if you want those numbers. Paste the calculator's blended R:R into Planned R:R; analytics compares it to what you actually achieved.

no chart · drag a file or paste an image
⚡ Bulk import from Binance CSV — log many trades at once · dupes skipped

Position History CSV = the trades (required). Transaction History CSV = fees/funding (optional, makes PnL wallet-accurate).

♻ Overlapping date ranges are safe to re-upload.
Before adding each trade, the importer checks for a match on symbol + close date + close time (HH:MM). If a position with the same close already exists in your log it is silently skipped — so you can upload this week's file on Monday, then upload a file covering the whole week on Friday and only the new trades will be added.
💡 PnL accuracy.
Upload both files together. The Transaction History CSV is the source of truth — the importer sums REALIZED_PNL + COMMISSION + FUNDING_FEE from that file and stores a true net PnL per trade. Position History's "Closing PNL" column is ignored because it can be significantly off (e.g. showed +56.45 when the real net was +26.15). Funding fees charged mid-hold (every 8h) are also captured by time-range matching, not just at close.
⚠ Edge case: if two positions on the same coin close within 90 seconds of each other, the importer assigns each transaction to the closest close. This is handled automatically — no action needed.
no file
no file (optional)

Trade History

Click a row to see notes.

Balance ReconciliationEnter your real exchange balance to check the lab against your account.
DateTimeSymbolDirEntryExitP&LFeesSetupExit reasonPlan
No trades yet — log your first to get started.

Expectancy & The Experiment

No trades logged yet. Keep going — the verdict needs 30+ to mean anything. One trade is noise.

Your 3 strategies — head to head

Distribution Breakdown · reversal short
no trades logged yet
Consolidation Breakout · coiled-spring
no trades logged yet
Level Rejection · fade the level
no trades logged yet

No core-strategy trades logged yet. Tag each trade with one of your 3 strategies and this becomes your edge-finder — it'll show which one actually earns its place.

Expectancy / trade
Profit Factor
Avg Win
Avg Loss
Avg R Multiple
Best / Worst R
Current Streak
Planned vs Actual R
Total fees / drag
Avg drag / trade
Trades w/ fee data
0 / 0
Drag as % of size
Avg MAE heat
Avg MFE run-up
Capture efficiency
Trades w/ MAE·MFE
0 / 0

Performance by Setup

Which setups actually make money — your edge, quantified.

SetupNWin%Total P&LAvg

Performance by Exit Reason

How your trades end — and what each ending costs or earns.

Exit reasonNWin%Total P&LAvg

Performance by Emotion — does your state predict your P&L?

The most honest mirror in the app. If one state bleeds money, that's a behavioral leak no setup can fix — catch yourself in it before you click.

Emotion before tradeNWin%Total P&LAvg

Equity Curve

R-Multiple Distribution

Cumulative P&L

Wins vs Losses

P&L by Setup

Plan Adherence

P&L by Day & Hour (your death-hour finder)

The Playbook

Amateurs obsess over entries. Professionals obsess over size and stops. This is the part that keeps you in the game.

Position Size Calculator · Binance Futures

Fill the essentials, get your size and leverage. Costs auto-net using sensible defaults — open "Advanced costs" only to fine-tune fees, slippage and funding.

① Account
$
$
%
x
② The Trade
$
$
%
③ Exit Ladder — scale out (click to minimize)

Each leg takes a price (or % move — they auto-sync) and a size % of the position. Set only TP1 at 100% for a single-target trade. The runner's size auto-fills from the leftover; give it a target if you want it counted in R:R, otherwise it free-runs on a trailing stop.

Quick-fill buttons for Size (%). Click the gear to edit their values.
LegPrice ($)% moveSize (%)
TP1
$
%
%
TP2
$
%
%
RUN
$
%
%

Fully allocated to TP1 + TP2 — no runner.

④ Advanced costs — optional (fees · slippage · funding)
%
%

Binance VIP0: maker 0.020% / taker 0.050%, no BNB discount (worst case). Positive funding = longs pay shorts.

$ at Risk
$11.51
Position Size (notional)
$815
Leverage Needed
1.4x
Total Costs
$1.07
Break-even Move
0.13%
Net R:R after costs
10.84:1
Loss at SL (net)
-$12.38
$11.51 risk + $0.86 costs
Win at TP (net)
TP1+$124.80
Total+$124.80
one leg filled · net of costs

✦ Trade clears all rules — cleared to size.
Risk ≤ 2% 2.0% risked
Leverage ≤ cap 1.4x needed
Blended R:R ≥ 2:1 10.84:1 net
Costs < 10% risk $1.07 costs
Stop defined stop at 0.11229
Liq > stop liq is safe
Fill in entry, stop and target above — the verdict on whether to take the trade appears here.

Your calculator inputs auto-save while you work — leave and come back, they're still here. "Pin this plan" (up top) saves a named snapshot you can log later; "Log this trade" jumps to the form pre-filled.

Pinned plans — “use” loads into the calculator, “log” jumps to the log form:
BSBUSDT · Long · @0.89493 · SL 0.88822 · R:R 17.89:1
EDENUSDT · Short · @0.0867254 · SL 0.0877391 · R:R 21.08:1
SUPERUSDT · Long · @0.1140 · SL 0.11229 · R:R 10.17:1

The Distribution Breakdown

A+ · the only setup

Your 8-month edge, formalized. For the next 10 trades, this is the only setup you may trade. If a candidate fails the gate, you do not trade — you wait.

⊘ The Gate — read before every trade
Did this coin run ≥80%, distribute with lower highs on the 1D/4h, and CLOSE below a 3+ touch low through my 1D→4h→1h→15m→5m read? If I skipped a level → no trade.
① Pre-conditions — ALL must be true
  1. Coin ran ≥80% on a recent run — exhausted bull, not fresh momentum
  2. Price entered a consolidation / sideways range after the run
  3. Range shows a topping structure — double top or multiple tops
  4. Lower highs grinding down inside the range (distribution)
  5. Price has reached the multi-touch low — 3+ touches within ~3–5%
② Top-down execution — never skip a level
1DContext — the ≥80% run + big distribution structure exists here 4hStructure — range, lower highs, multi-touch low defined here 1hConfirmation — breakdown bias confirmed 15mTrigger — candle CLOSES below the level (not a wick) 5mEntry — precision timing on the close below
③ Risk rules — non-negotiable
Entry
15m CLOSE below the multi-touch low
Stop
Just above the range high (beats the sweep)
Target
Next major support — marked before entry
Size
Fixed 1–2% risk → size to the wide stop
Invalidation
15m closes back above the level → bear trap, exit now (don't wait for stop)

Why the close + range-high stop: the level is where every stop sits. Price often sweeps through to grab liquidity, then reverses. Entering on the close skips most fake wicks; the range-high stop survives the ones that get through. You used to do one or neither — now you do both.

The Consolidation Breakout

coiled spring · wait for the fire

A quiet, tightening range is potential energy. You don't trade the sleep — you trade the break. The whole edge is patience: COILED is a watchlist, FIRING is the trigger.

⊘ The Gate — read before every trade
Has this coin coiled in a tight, compressing range for 20+ days with volume drying up, and has a displacement candle (≥2× ATR) just CLOSED out of the range on my read? If it's still COILED → no trade, it's a watch.
① Pre-conditions — ALL must be true
  1. Range is tight now — recent high-to-low spread is small (single-digit % for majors, ≤15% for alts)
  2. Range is compressing — narrower than it was earlier in the lookback (the coil)
  3. 20+ days of coil — the longer the spring loads, the bigger the release
  4. Volume drying up through the coil — energy building, not bleeding out
  5. A displacement candle (≥2× ATR) has CLOSED outside the range — the spring fired
② Execution — wait for FIRING
Entry
On the displacement close out of the range, or the retest of the broken edge
Stop
The opposite side of the coil — a small, tight stop (the coil's gift)
Target
Measured move — project the range height from the break, then next structure
Size
Fixed 1–2% risk → the tight stop allows a bigger position cleanly
Invalidation
Price closes back inside the range → failed breakout / fakeout, exit now

The trap is impatience: a COILED coin looks ready for days before it moves, and a tight range tempts you to pre-position — which is how you get chopped and stopped on a fakeout. Wait for the displacement close. The screener flags FIRING for exactly this reason.

The AMD Sequence

sweep → displace → retrace

Accumulation → ManipulationDisplacement → Distribution. Price builds a base, sweeps the liquidity resting beyond it, then displaces back through structure. You enter the retrace into the gap displacement left — not the sweep, not the chase.

⊘ The Gate — read before every trade
Did price sweep a liquidity pool (the lows for a long, the highs for a short), then DISPLACE back through structure with a ≥1.3× ATR candle leaving a fresh FVG — and does the higher-timeframe bias agree? No displacement = watch only. Counter to HTF = pass.
① Pre-conditions — ALL must be true
  1. Accumulation — a tight, low-drift base where liquidity has pooled at the edges
  2. Manipulation — a sweep that runs the liquidity beyond the base (sell-side for longs, buy-side for shorts) and reclaims
  3. Displacement — an impulsive ≥1.3× ATR candle breaking structure (BOS/CHoCH) in the sweep's direction
  4. A fresh, untapped FVG (or OTE zone) left by the displacement — your entry zone
  5. HTF bias aligned, and ideally the sweep landed in a killzone (London / NY)
② Execution — limit on the retrace
Entry
Limit on the retrace into the FVG / OTE — let it come to you, don't chase the displacement
Stop
Beyond the swept extreme + an ATR buffer (past the wick that grabbed liquidity)
Target
The opposing liquidity pool (T1), then equilibrium / range extreme for runners
Size
Fixed 1–2% risk to the structural stop — the screener sizes this for you
Invalidation
Close back beyond the swept extreme, or the FVG fully fills and keeps going — thesis dead

The discipline is the retrace. Displacement is the proof, not the entry — chasing it gives you a terrible stop and hands smart money its exit liquidity. Wait for price to pull back into the gap, where your risk is small and the target pool is far. The AMD screener marks the zone, stop and targets; this card is the why.

▤ Trading principles — the six rules · click to expand

01 · Position Sizing — the only rule that matters

Risk a fixed % of account per trade — not a fixed dollar, never a fixed leverage. 1–2% of equity at risk per trade. You can be wrong 20 times in a row and still have an account.

position size = (account × risk %) ÷ (entry-to-stop distance %)

Your stop distance and leverage derive from this — you don't pick leverage first. Leverage is the tool to hit the right notional size; it is not a risk dial.

02 · The Leverage Trap — your actual problem

20x isn't "more aggressive" — it's a tighter liquidation noose. At 20x isolated you liquidate on a ~5% adverse move. Crypto wicks 5% before breakfast. On BEAT and BILL, your liquidation price sat closer than the invalidation level — a routine wick killed you before the thesis was even wrong. Size down and lever down until liq sits comfortably beyond invalidation.

03 · Stop Placement

The stop goes where the thesis is invalidated — never a round number or a comfortable dollar amount. On a short: above the confluence resistance / structure high. Then size so that distance equals your 1–2% risk. Stop first, size second. Always that order.

04 · Take Profit — scale out, don't hero

Ladder it. TP1: first structural level — take 30–50% off, move stop to breakeven (now it's a free trade). TP2: major level — take another chunk. Runner: let a small piece ride a trailing stop for the fat tail. This solves both ways traders lose: cutting winners early, and round-tripping winners to zero.

05 · Reward : Risk — nothing below 2:1

At 2:1 you can be right only 40% of the time and still make money. The edge was never your entries — it's whether you survive at sane size long enough to let them play out.

06 · The one-liner

You can have a mediocre entry and a great outcome with proper sizing — and a perfect entry and a blown account with 20x and no stop. You've got the chart-reading. The leverage is the leak. Fix that and the rest compounds.

AMD Phase Screener

Scans the top USDT perps and reads each into one AMD phase — ACCUMULATION (tight base), MANIPULATION (liquidity swept), DISPLACEMENT (impulsive break — the entry), DISTRIBUTION (late, extended) — with a higher-timeframe bias, liquidity pools, BOS/CHoCH and an OTE zone. Click a row to see the chart, levels and score breakdown. A rules-based watchlist, not signals — confirm with your own eyes.

$10M
40
2.0R
1.0%

Timeframe, universe & min-vol need a re-scan · phase, bias, score, R:R & BTC-gate filter live. Manual refresh only — no auto-polling.

accumulation → manipulation → displacement → distribution

Strategy: AMD Phase. Hit Scan.
SymbolPhaseBiasScoreR:RPrice24h %VolStructChartLog

A rules-based watchlist, not signals. AMD is discretionary and hindsight-friendly — every phase here is a mechanical reading of price, ATR, RSI, swings, sweeps and gaps, and it will produce false positives. Nothing on this screen is financial advice or a trade recommendation. Click any row to expand the chart, levels and score breakdown, then confirm the read with your own eyes before acting. Data: Binance public Futures API, two requests per coin (your timeframe + its higher-timeframe bias), called from your browser — nothing stored server-side. Manual scan only; no background polling.

News & Events

High-impact macro events that move all risk assets — crypto included. This tab exists for risk-avoidance, not opportunity-hunting: the goal is knowing when to stand aside, not finding a reason to click. Times shown in your local timezone.

Today's trading window
Checking the calendar…
⊹ This week — live calendar
Forex Factory's full week loads here once you've set up the Worker (instructions below). Until then, the curated schedule beneath still has you covered.
⊹ Crypto headlines · on-demand
Headlines fetch only when you press the button — no background polling, by design. A feed that refreshes itself is a feed that pulls you toward impulse trades. You decide when to look.
⊹ Curated macro schedule · always on, no fetch
How to use this
⚠ STAND ASIDE events spike volatility and spreads — your stop gets hunted, slippage eats you, structure breaks down. Don't open fresh positions in the window around them, and consider tightening or closing existing ones beforehand.
◷ CONTEXT events are worth knowing but rarely a reason to stand down — note them, don't react to them.
The trap: treating a news event as a signal to enter. News tells you when not to trade. Your setup tells you when to trade. Don't confuse the two.
⚙ Live-data setup (one-time Cloudflare Worker)
The live calendar & headlines come through a tiny Cloudflare Worker — it keeps your CryptoPanic token server-side (never in this file) and caches Forex Factory so you can't hit its rate limit. Setup is one-time, ~10 min:
  1. Grab a free token at cryptopanic.com/developers/api/keys
  2. Cloudflare → Workers & Pages → Create Worker. Paste in the sakaan-news-worker.js file I gave you. Deploy.
  3. Worker → Settings → Variables → add a Secret named CRYPTOPANIC_TOKEN = your token. Re-deploy.
  4. Copy your Worker URL and paste it below, then save.

Data note: live calendar = Forex Factory's own weekly feed (cached ~6h via your Worker). Crypto headlines = CryptoPanic, fetched only on button press. The curated schedule below is static — FOMC dates confirmed from the Federal Reserve; CPI/NFP/PCE follow their monthly pattern and are marked approx. If the Worker is down or unset, the curated schedule still works.

Rules & Contract

The $1,000 experiment. Read before every trade. The experiment survives a broken rule — it cannot survive an unlogged one.

Pre-trade checklist

Checklist: 0 / 6 acknowledged

Hard Limits — Non-Negotiable

  • Max 2 losing trades per day. Hit two, done for the day. (tilt)
  • Weekly stop at −6%. Drop 6% in a week, pause until next week. (drawdown)
  • Max 2–3 positions open at once. Crypto correlates. (correlation)
  • Stop only moves toward profit, never wider. (sacred)
  • NEVER size up to recover a loss. The exact behavior that blew past accounts. (kryptonite)
  • −30% kill-switch ($700). Stop and audit the log — to diagnose, not quit.
  • No fading an ATH without a confirmed rejection. Wait for the wick + close back inside structure. Shorting the touch is guessing. (confirmation)
  • Entry must be a resting limit, not a chase. If price ran past your level, the trade's gone — let it go. (no FOMO)
  • Every entry has a stop set on the exchange before you look away. No mental stops. (no exceptions)
  • One setup only. If it isn't your defined edge, it's gambling with extra steps. (discipline)

Discipline of Record

Log every trade — thesis on entry, exit on close. Log "Followed plan?" honestly; a broken rule gets logged AS broken. Weekly review: filter plan="no", study the triggers. Same rules after a win as a loss — there's no hot hand. Sample size: 50 trades minimum, 100 ideal, before reading any verdict. The trade count is the finish line, not the balance.

Cloud Sync · Cloudflare

Your journal syncs automatically via your personal Cloudflare Worker — no third-party holds your data, no rate limits, works across all devices.

Worker: sakaantradelab-sync.tranhieu204.workers.dev
Status: Connected — sync fires automatically on every save.

Local Backup

Manual export / import. Works offline. The JSON file is your master record.

"Clear all trades" wipes your log so you can re-import cleanly. Download a snapshot first — this can't be undone.

Passphrase

Local gate so a casual visitor to your public URL can't read your log.

Danger Zone

Wipe all local trades. If synced, pull from cloud to restore.

recommended loaded