Kalman
Engine
Documentation menu

Strategies

Four systematic strategies across ten bots and seven markets, one allocation each. Each page below gives the model, the exact rules, the live parameters, and the ways it loses money.

Allocation

The desk runs a deliberately small live allocation: $100 of capital split evenly, $10 per bot. That is a live-test size, not a performance claim — the point is that real orders hit real venues with real fees before any larger number is put behind them. It also makes the cost problem honest: a strategy that clears its costs at $10 is a very different claim from one that only clears them at $10,000, which is why the desk reports costs as a percentage of capital.

Four strategies, ten bots. Each strategy that can run on more than one market runs one bot per market rather than one bot holding several, so a market's ledger, risk state and pause are its own. Each bot has its own capital too. They do not pool, net, or hedge each other, and one bot pausing does not pause the others.

BotMarketVenueCapitalOrder capDirection
dca-solSOL/USDJupiter$1072% ($7.20)Long only
dca-ethETH/USDJupiter$1072% ($7.20)Long only
dca-btcBTC/USDJupiter$1072% ($7.20)Long only
grid-solSOL/USDJupiter$1025% ($2.50)Long only
grid-ethETH/USDJupiter$1025% ($2.50)Long only
grid-btcBTC/USDJupiter$1025% ($2.50)Long only
momentum-solSOL-PERPPhoenix$10100% ($10)Long only (shorts disabled)
momentum-ethETH-PERPPhoenix$10100% ($10)Long only (shorts disabled)
momentum-btcBTC-PERPPhoenix$10100% ($10)Long only (shorts disabled)
statarb-lstSOL/USD + JitoSOLJupiter$1060% ($6)Long only (rotation)

The order cap is the largest notional a single order may carry, as a percentage of that bot's capital. The caps differ because the strategies differ: the grid places $1 parcels and the momentum bot deploys its whole allocation in one entry by design. A cap is a per-bot override of a 10% default, and the risk gate re-derives the limit from the override rather than trusting a number the config asserts.

A cap is sized against the largest order its strategy can emit, which is not always the largest order it obviously places. DCA's is the take-profit at full ladder depth, $7.07, not its $2.70 deepest buy; the grid's is a $1.00 parcel resting at the bottom of the range, which the gate values at $2.00 because it prices an order at spot rather than at the limit it is waiting on. Both are stated on the strategy pages, because a cap chosen against the wrong order is how a position ends up unable to close.

The four strategies

What every strategy runs behind

The strategies themselves are small — a few dozen lines each — because everything that keeps them from doing something stupid lives outside them, in machinery every bot shares.

  • One-minute bars. Strategies see closed one-minute candles, never ticks. The momentum bot resamples those to four hours itself.
  • Staleness withholding. A bar whose age at receipt exceeds 90 seconds is never delivered to the strategy at all. The strategy is not told the price is stale — it simply gets no bar and emits no order. A per-source allowance is subtracted first, because a polled source legitimately serves a candle up to a minute after it closed; that is a healthy feed, not a stale one.
  • A risk gate on every order.Nothing reaches a venue without passing it. It checks a kill switch that is engaged unless explicitly set to run, rejects any non-finite number outright (every comparison against a NaN is false, so an unvalidated NaN would pass every limit), then checks pause state, price age, the daily-loss floor, the order-size cap and the leverage ceiling. Its approval is a token burned on creation, so an approved order cannot be copied with a larger quantity.
  • A 5% daily-loss floor. Equity below 95% of the day's starting equity pauses the bot.
  • De-risking is never blocked. An order that genuinely reduces an open position — the flag and the gate's own position data agreeing, not the flag alone — passes even while paused or past the daily-loss floor. Rejecting a stop-loss would pause a bot with its position still open and let the exposure grow unbounded, which is the opposite of what a pause is for.
  • A 2x leverage ceiling. A hard platform limit carried by the gate itself rather than read from configuration. Only the three momentum bots use leverage at all.
  • A 100 bps slippage ceiling. A config may ask for less, never more: the ceiling is validated when the configuration loads, and re-checked on the execution path immediately before an order is sent. An order past the bound is rejected rather than silently clamped, because a rejection leaves a record and a clamp does not.
  • Simulate before send. Every transaction is simulated and dropped if the simulation fails. Orders routed to Phoenix are additionally checked instruction by instruction against the Phoenix program before anything is signed.
  • The ledger is the truth. A strategy's internal idea of its own position is a belief, reconciled against the fills actually recorded and corrected when the two disagree.

Costs

Paper sessions price fills at a 10 bps fee and 10 bps slippage, matching the published backtests so the curves stay comparable. Live orders carry the real venue cost and are bounded by the 100 bps slippage ceiling. Fees and slippage are reported as separate line items next to every return figure and are never netted into it. Kalman charges you nothing on top of that; see the FAQ.

The strategy pages below state live parameters exactly as configured, including the parameters that differ between one strategy's bots. Where a strategy's published backtest was run on different values, or where the backtest cannot model what the live version does — the momentum bots' short side, for instance — the page says so rather than letting the two blur together.