ArdenAlgo · Methodology

Methodology — every rule, in the open

Mechanization v1 · frozen 16 Jul 2026 · this page is the public summary of the engine's internal specification

Most tools in this niche describe themselves with adjectives. This page describes ArdenAlgo with parameters. If a claim on our site can't be traced to a rule on this page and a row in the public ledger, treat it as marketing — and tell us.

1 · Data

The engine consumes closed 15-minute bars of exchange-based USDT-M perpetual futures OHLCV, with H1 and H4 views derived from closed bars only. A bar that hasn't closed doesn't exist for the engine — that single constraint eliminates the most common source of "too good to be true" signal demos. Detection was cross-checked bar-by-bar against TradingView chart data before the engine went live (gate G1).

2 · The pipeline

One strict sequence, three timeframes. H4 sets bias (structure, dealing-range premium/discount, untapped liquidity ahead). H1 supplies the zone (order blocks and fair value gaps qualified by displacement and fill state). M15 runs the confirmation state machine: liquidity sweep → displacement-validated structure shift → FVG retest. No stage can be skipped; each has a timeout window.

H4 bias, H1 zone, M15 confirmation pipeline H4 · BIAS Structure & liquidity map premium discount EQ · 50% PDH — untapped PDL — swept Structure · dealing range · PDH/PDL & EQ clusters H1 · ZONE Qualified OB & FVG OB FVG displacement ≥ 1.5× avg body ≤50% filled · correct side · untapped only M15 · CONFIRM Sweep → MSS → entry liquidity sweep — wick take, body closes back last swing MSS ✓ entry FVG SIGNAL Retest → signal · invalidation at sweep tip

3 · Exact thresholds

These are the live values the engine runs — not illustrative examples. Changing any of them creates a new mechanization version with a dated changelog note; results across versions are never silently pooled.

ParameterValueUsed for
Displacementbody ≥ 1.5 × avg body of prior 20 bars MSS validation, OB/FVG quality
Equal-level clustertolerance 0.25 × ATR(14) Liquidity map (EQ highs/lows)
FVG lifecycletracked until ≈50% filled Zone qualification & entry
Sweep → MSS window16 bars (M15) Confirmation must be timely
MSS → retest window32 bars (M15) Entry must be timely
Trade expiry192 bars (48 hours) Paper ledger accounting
Per-symbol cooldown4 hours No signal spam
Alert filterR:R ≥ 1.5 Notification only — every signal still hits the ledger
UniverseBTC, ETH, SOL, BNB, XRP, DOGE, ADA, LINK USDT-M perpetuals, 24/7
Mechanizationv1 — frozen 16 Jul 2026 Any change = new version, documented

4 · Why signals can't repaint

Every computation happens on confirmed bars; swing pivots confirm with a deliberate delay (a pivot needs neighbors on both sides, so it is only knowable k bars later — we accept that lag instead of pretending otherwise). The engine is deterministic: replaying the same data produces the same events, which the automated test suite enforces on every change. A signal, once logged, is immutable — the ledger has no update or delete path. Deep dive: no repaint, by design →

5 · Paper-ledger accounting

Every signal becomes a paper trade: fill at the FVG edge, stop beyond the sweep tip, target at the mapped liquidity, 48-hour expiry. Accounting is touch-based and pessimistic — if one bar touches both stop and target, it counts as a stop. Net results subtract modeled taker fees, slippage and funding via a cost model reused from a sibling research project. Why net bps is the only number we quote →

6 · What we measure — and what we can't

Claims are only trustworthy next to their complements. Both columns below are load-bearing:

We doWe don't
Record every signal live, before its outcome (verify on the ledger) Backtest-and-cherry-pick: there is no backtest anywhere on this site, by policy
Compute on closed bars, deterministically (G1 evidence) Know the future: pivots confirm late on purpose, and lag is the price we pay
Model taker fees, slippage and funding into every net figure See the order book: paper fills approximate queue position optimistically
Hold every pooled result to a duration-matched random-entry benchmark — pre-registered as gate G2, trigger pending Claim the engine is profitable — that claim is exactly what G2 exists to test
Version every parameter change (changelog) Pool results across versions, ever

How a win is counted, precisely: a trade is a win only if the stored bracket's target is touched before its stop or its 48-hour expiry, with the pessimistic tie rule (a bar touching both counts as a stop). Everything else is a stop or an expiry. Costs don't decide the label — they are subtracted afterwards in every net figure, which is why a target-hit can still end up net-negative. There is no "first take-profit" trick and no "maximum favorable movement" accounting — why that matters →

7 · Limitations, stated plainly