First time on the top traders desk?

The desk runs its own numbers and publishes its calls next to the account that trades them. The short route:

toptraders · cross-lab v2 · algorithm report

momts 4h, long and short — a bull-phase algorithm

xl-momts-4h-ls · 4h bar · window 2020-09-01 to 2026-08-13 · 548 instruments · book $1m

Leverage 1.0: it cannot lose more than the book. There is no hedge. It shorts, and funding accrues its way.

total
+72%
annualised
+9.5%
drawdown
-59.7%
sharpe
0.45
trades
9029
profitable
39%

1. What it does

2. The two constraints

Leverage 1.0 and no hedge: it cannot lose more than the book on any price move.

Both sides are never open on one instrument at once; a share of the book holds one position at a time. The short side accrues funding its way, and that is in every number above.

The equity curve

1001502002503002020-09-012026-08-13book, % of startthe rule

3. The nulls

Every number above is quoted against a distribution, not an average. p95 means five per cent of the random runs came out better than that level. A rule that sits inside the cloud has proved nothing.

compared against runs the rule control median control p95 verdict
the rule +72%
random entry 200 +72% +0% +20% beats p95
relabelled instruments 200 +72% +0% +8% beats p95
filter reshuffled 60 +72% +15% +42% beats p95
random entry inside the bull phase 60 +74% +9% +41% beats p95
alt index: hold the whole list +72% -18% the rule is ahead
BTC buy and hold +72% +432% beats the rule

Each control prints its number of runs: a p95 without its n is not a band but a single number of unknown precision. The relabelling takes ONE fixed permutation per run and holds it for the whole window; reshuffling on every bar would pay turnover the real book never pays and would understate the control.

random entry
the rule +72%p95 +20%-14%+126%
relabelled instruments
the rule +72%p95 +8%-6%+72%

The own-phase null is measured on that phase, not the whole window: comparing a phase result with the noise total would compare three years with one.

4. What it traded

The instrument list is rebuilt quarterly by dollar turnover, with no survivor selection: a name that was large and died is traded in the quarter where it stood at the top. Instruments measured: 548. Trades in the window: 9029, trades started before it: 0.

Never touched: names the desk does not trade, leveraged tokens, and anything past a seam in the series — past a seam it is a different instrument.

5. The timing audit

Verdict: clean. Trades checked: 100 of 9029. Mismatches: 0.

A clean audit proves the absence of look-ahead AND NOTHING ELSE. It does not say the rule works, that it will keep working, or that the costs are right.

DSR and the trial count

value number
DSR 0.002
threshold 0.50
trials in total 17046
annual sharpe 0.45
expected maximum of the noise 1.64

The rest of the metrics

The six tiles above are a headline, not the set. Here it is in full, including the tail check: the share of the best three trades and the total without them. One without the other reads wrong in both directions.

value number
sortino 0.66
calmar 0.16
pf 1.19
recovery 1.20
stagnation, days 1033
time in market +30%
median trade -3.0%
median trade in R -0.958
mean trade in R 0.632
win to loss 1.99
losses in a row 62
best month +38.4%
worst month -19.3%
positive months +51%
share of the best three trades +17.8%
total without the best three +10646%

Distribution of trades in R

R is how many units of risk a closed trade returned. The passport carries percentiles, not buckets, so percentiles are what stands here: a histogram off five numbers would draw a shape nobody measured.

point R
p5 -10.06
p25 -2.87
p50 -0.96
p75 2.13
p95 13.22
worst trade -39.50
mean loss -3.68
mean win 7.33
best trade 302.92

The rules in full

The field and what it means. Thresholds, windows and multipliers are not here: an algorithm is reproduced from those, and the desk does not print them. The bot reads them from an internal file on its own machine.

field what it means
timeframe 4h bar; decided at the close, filled at the next open
entry time-series momentum: the return over a window left a band around zero
side long and short
filter the price is above its own long moving average — the market's side matches the rule's side
exit on a trigger flip: the position closes when the same rule prints the opposite sign
exit check the bar close, by the same rule that entered
exit fill the open of the bar after the sign flips
intrabar stop no: only closes trigger, otherwise the test would see a price the decision did not have
trailing none
averaging down none
position % of equity equal shares: the book is split across the instrument list and each share compounds inside itself
simultaneous positions one per instrument on the list; a share holds one position at a time
instrument list a per-bar basket ranked quarterly by dollar turnover; names measured: 548
excluded names the desk does not trade; leveraged tokens; the series is cut at seams, and return is never computed across a seam
window and why 2020-09-01 to 2026-08-13; each bar has its own window and it is printed, not generalised
costs 0.1% per side: perp taker plus slippage; funding always accrues, the long pays and the short receives
leverage / short / hedge 1.0 / yes / no
engine the same file runs the backtest and the bot's book

Returns by year

The years come from the same months as the grid below. A partial year carries its month range. The controls have no monthly series in the artefact — only their window total is printed, and the desk will not invent yearly numbers for them.

year total
2020 (09-12) +3.1%
2021 +87.7%
2022 -26.9%
2023 +21.7%
2024 +65.0%
2025 -42.6%
2026 (01-08) +5.2%
BTC buy and hold, whole window +431.9%
alt index, whole window -18.2%

The shape of the result

The four figures below are drawn from the same published values as the tables: the monthly grid, the drawdown, the windowed sharpe and the trades in R. No rule settings are in them.

By month

01020304050607080910111220202021+38+20202220232024+352025-192026

The sign of the month is the colour, the size is the saturation.

Drawdown over time

-40%-20%0%2020-09-012026-08-13

How long the book sat below its own peak. More honest than the single worst-drawdown number: both the depth and the length are visible.

Sharpe over a rolling six-month window

-2.502.52021-022026-08

One window for every desk report. It shows whether the sharpe was bought by a single lucky stretch.

Trades in units of risk

p5-10.06p25-2.87p50-0.96p752.13p9513.22five measured percentiles, not a histogram

The halves of the window

span total annualised drawdown sharpe trades profitable
2020-09-01..2023-08-23 +30% +9.3% -46.0% 0.44 4143 +38%
2023-08-23..2026-08-13 +32% +9.8% -59.7% 0.46 4886 +40%
the tuning part +137% 0.84
the check part -28% -0.44

Cycle phases

An algorithm is not required to work in every phase. Its best phase is in the headline; the statistics outside that phase are printed too, and the drawdown outside it is part of the passport, not a footnote.

phase days share of time total annualised sharpe drawdown
bull 1164 54% +74.4% +19.0% 0.67 -60.9%
bear 605 28% +5.7% +3.4% 0.27 -15.5%
accumulation 403 19% -6.9% -6.2% -0.06 -39.1%

Costs and funding

run total sharpe difference from the base
x0 of the fee +86% 0.49 +14.4%
x2 of the fee +59% 0.41 -12.6%
x3 of the fee +48% 0.37 -23.7%
funding switched off +97% 0.52 -25.5%

On $1m

total
+72%
sharpe
0.45
orders that did not fit
7
0%20%40%60%80%100%$250k$500k$1m$2m$4msharpetotal% of the paper run
book total sharpe drawdown trades orders that did not fit share skipped
on paper +72% 0.45 -59.7% 9029
$250k +72% 0.45 -59.7% 9027 7 0%
$500k +72% 0.45 -59.7% 9027 7 0%
$1m +72% 0.45 -59.7% 9027 7 0%
$2m +72% 0.45 -59.7% 9027 7 0%
$4m +72% 0.45 -59.7% 9027 7 0%
the execution model: a rough model: participation = notional / the bar's dollar turnover, the addition to the per-side cost is linear in participation, and an order above the bar-share cap does not fill. An exact model needs an order book, which the desk does not have

6. What this leaves

controls failed: DSR, sharpe

Failed: DSR, sharpe. No account and no panel row are opened for such an algorithm. The row stays here because a negative result is published the same way as a winning one.

every number comes from this file and from the run that built it. A negative result is published the same way as a winning one