BASEtrading knowledge base
RU

The unit of scale

STEP степ · STEP S / STEP M

STEP is the height of one stair on the price staircase. Everything else is measured in these stairs.

The scale unit of the segment system, in price points. All segment levels are linear in STEP; R = points / STEP. A typical STEP ≈ one median candle range.

⟳ being refined

STEP is the “ruler” we measure the market with. Like the squares in a grid notebook: everything is counted in squares, not centimetres.

Picture a staircase. STEP is the height of one step. Nobody makes it up out of thin air: we look at how far price usually “jumps” in one candle and make the step about the same size.

For bitcoin a step is hundreds of dollars, for natural gas it's a tiny fraction of a cent. But measured in steps, the rules are the same for everyone.

What we measure in steps

A whole segment (a “floor”) is 8 steps. It's like counting squares in a board game:

  • up 3 steps from the start — the move is on, we get in;
  • back below step 2 (with a small margin) — we were wrong, we get out;
  • reached step 6 — we take half the win;
  • reached step 8 — we take everything, floor done.

Even the win is counted in steps: “we made 2 steps” means 2R. That way you can compare bitcoin with gas.

Why the step size matters

The same price on a fine and a coarse grid of steps Small step Big step lots of signals, lots of fees few signals, long waits
The same price. On the left, a fine grid: every pullback looks like a reversal. On the right, a coarse one: price only covers a couple of steps.
  • Too small — price keeps “tripping”, there are tons of trades, and we pay the exchange a fee for each one. Like paying for the bus at every stop.
  • Too big — price almost never reaches the target, and there are hardly any trades.

How it's chosen

A program called the calibrator takes a chunk of history, tries hundreds of step sizes and “replays” the past for each one: how many trades there would have been and how much they'd have made. The best option becomes STEP.

The honest takeaway from the tests: there's no perfect step. The best one for the past won't necessarily be the best tomorrow. We even tried changing the step on the fly as the market got wilder or calmer, and it didn't help. So right now the edge is being sought not in the step size, but in where and in which direction to enter.

Example. Cocoa, one trading day, two different steps: 0.144 and 0.214. The first gave 82 segments and +12 R, the second gave 60 segments and −10 R. A huge difference, but it's only one day, so you can't draw conclusions from it.

Definition

STEP is the unit of scale of the S0 segment system, set in the instrument's price points (not %, not ATR). All segment levels are expressed in it: KEY ±3, STOP ±2 (triggered with a buffer at ±1.5), PARTIAL ±6, TARGET ±8 STEP; reversal is a 3·STEP pullback from the close extreme; aiming shifts the keys by whole STEPs with a budget U + D ≤ 2.

Wording in the projects: “a characteristic degree of volatility; movement is divided into equal parts — steps” (cryptotrader), “STEP ≈ the range of a typical candle, a segment ≈ 8 such ranges”, “the instrument's pulse — the STEP at which it makes its main moves” (mamba).

1.01–1.11median STEP / median range, 5m…1d
R = pts / STEPtrade result
≥ 2·STEPto PARTIAL — real-trade admission
k·STEP, k = 2DH signal threshold

Author's calibrator (protocol v2, logic A)

  1. Window. 70 candles for the S0 search + a profile window per TF: 5M 2000, 15M 800, 1H 500, 4H 300, 1D 125, 1W 75 (the author did not set one for 30M; cryptotrader uses 650).
  2. Window S0. The extreme of the first 70 candles that is farther from the close of the 71st.
  3. Range profile. high − low is decomposed with a two-component Gaussian mixture (GMM): μA — quiet candles, μB — wide ones. Small range: μA/4 … 1.5·μA; large range: 1.5·μA … 2·μB.
  4. Grid. step = 10⌊log10(width/50)⌋ → 50…~500 candidates.
  5. Run. Each candidate is run through the core chain from S0 to the end of the window:
    score = avgPnL × (0.5 + 0.5·WR) × (1 − 0.5·min(1, maxDD / (10·median_range)))
  6. Selection. The first non-empty range (in practice always the small one) → max score. Commissions are not in the score; score is in points and grows with STEP.
STEP heatmap for BTCUSDT 1h: STEP as a fraction of the median on the vertical axis, colour is cumulative R
STEP heatmap, BTCUSDT 1h since 1 Sep 2025 (cryptotrader step_prot): all candidates from both ranges, cumulative R after costs over time; “× median” scale from 0.32× to 4.35×.

How it connects to the rest

  • Commission. A smaller STEP → more trades, and commission weighs more in R: ≈ 0.35 R at STEP 224 and ≈ 0.2 R at STEP 377 (BTC 30M); on 5m with m = 0.5 it is −0.58 R.
  • DH. DH signal thresholds are set in STEP (s_abs reversal at k·STEP, k = 2); in “STEP fit” the zones are DH < 3·STEP — lows, > 7·STEP — high. So DH signals depend on the chosen STEP: the protocol's best_step gives 2–3× more signals than the STEP from the author's snapshots.
  • STEP S and STEP M. S is the s01 chain STEP, M is the best large-range candidate (A_КРУПНЫЙ) or Andrey's STEP. RTS 110/267, MIX 250/675; STEP M ≈ 2.4–2.7 × STEP S.
  • Golden trend. Not part of the STEP rule; an “anchor body ≥ 2 STEP” filter exists in the code but did not make it into the rule.
  • Volatility phase. volatility_phase.py compares the current profile with the one STEP was chosen on (group μ ±1σ, median ±30%, share of wide candles ±20 pp) and outputs rescan_step.

Discrepancies and open questions

TopicCurrent state
Old calibrator → protocol v2Before: initial STEP = tick×10, then 2 × median and its own score. Since 2 Oct 2026 — the author's protocol (GMM, two ranges).
Calibrator model ≠ chart engineSTEP is fitted on Core v2 but traded on aimcore/Lab 01.10 → “optimal for the calibrator's model, not for the chart”.
0.125 grid (crypto)Rounding to the multiple changes the pick: BTC 15m 228.98 → 180, BTC 4h 1,000.56 → 809.25. In s01 — a multiple of tick_size.
Selection rules A, B, M_k, F_k, N (22 Oct)All negative on 5m–1h; no consistently better one. Added a “STEP ≥ median” filter.
mamba “STEP fit” (31 Oct) ⟳No GMM, grid of 1…10 medians in 0.1 increments, score Σ(DH weight × R). Status 🟡: results not yet reviewed with the owner.
Profile windows01: 2,000 → up to 5,000 candles. RTS: 111.7 → 124.3. Without weekends, crypto STEP is 2–24% larger.
Dynamic STEPTested twice (BTC 30M, 23 Oct; agent, 2 Nov) — no better than a fixed one: −202.5 R vs −75.5 R.
Owner's manual STEP ⟳BTC 15M 256.28 → 315; NG 0.015 → 0.004 → 0.015; Mini-MIX 0.608 → 3.6; IMOEXF 2.4665 → 3.5. No rule.

Numbers

  • BTCUSDT 1h, window 1–24 Jan 2026: median 378.95, μA 331.8, μB 875.6; picked 160.94 (71 trades, score −3.65), while the large range's 857.65 has score +1,619.79 on 4 trades; on the 0.125 grid — 158.375, segment ≈ 1.4% of price.
  • 27 runs (#151): the small range was picked in all of them, although the score maximum was in the large range in 19.
  • Crypto, as a share of price: the calibrator gives 0.15% on 5m, 0.26% on 15m, 0.43% on 30m; a positive result after commission appeared only with STEP at 1.5–3.5% of price.
  • ETH 1h: the author's pick 12.61 (0.46× median) → −5.1 R / 44 trades; with the “≥ median” filter 29.91 → +6.7 R / 12.
  • NG: STEP 0.015 → ΣR −31; 0.00345 (calibrator) → −43; plateau 0.00375–0.00405 → +101…+108 R.
s01 RIZ6, STEP 130: segments and a DH panel with a scale in STEP
s01, RIZ6, STEP 130: segments #192–#196, price levels on the right, DH at the bottom with a left-hand scale in STEP (0–15).

The projects' bottom line for now: “STEP size doesn't change the result… the edge should be sought not in STEP but in choosing the place and direction of entry.”

Sources in the projects (9)
  • cryptotrader/s0/base/step_protocol_v2.py — author's calibrator: GMM (l. 465), score (993), grid (1011), choice (1240)
  • cryptotrader/src/step.html — step-by-step calibrator walkthrough, BTC 15M example
  • cryptotrader/src/dynstep.html — dynamic vs fixed STEP (BTC 30M)
  • cryptotrader/step_prot/JOURNAL.md — comparison of selection rules A, B, M_k, F_k, N (22 Oct)
  • cryptotrader/step_prot/heatmap.py — STEP heatmap
  • mamba/lab/platform/s01/stepfit.py — new “STEP fit” (31 Oct): 1…10 medians grid, DH weighting
  • mamba/lab/platform/s01/steps.py — s01 “STEP calculation” on MOEX
  • mamba/lab/step/PLAN.md — “STEP fit” plan, status 🟡
  • mamba/PLAN.md — owner's manual STEPs: NG #294–#299, Mini-MIX #376, IMOEXF #98