positive progression · 20,000 sessions per wheel

Does the Contra D’Alembert system work?

No. On 20,000 seeded European-wheel sessions, Contra D’Alembert walked away $200 up 67.8% of the time and still lost $159.65 per session on average: −$2.71 for every $100 wagered, the house edge within sampling noise.

67.8%
Walked away +$200
European wheel
31.4%
Busted
next stake didn't fit
−$160
Mean result
per session, from $1,000
−$2.71
Per $100 wagered
house edge: −$2.70

How Contra D’Alembert is played

  1. Start at one unit ($5) on red.
  2. After a win, raise the stake by one unit.
  3. After a loss, lower it by one unit (never below one).
  4. If the next stake would exceed the table maximum, restart at one unit.

What 20,000 sessions show

Sessions that finished ahead were up $229.49 on average; sessions that finished behind were down $979.36. 31.4% of sessions ended because the next stake no longer fit the bankroll or the table limit.

The reverse of D’Alembert presses winning runs instead of losing ones. Stakes are small after losses, but a choppy win-loss-win-loss sequence loses money at every level, and losses still outnumber wins.

The median session lasted 175 spins. The median longest losing run was 6 spins in a row (the worst of 20,000 was 21), and one session in ten put at least $95 on the table in a single spin.

$0–99
6,292
$100–199
12
$200–299
15
$300–399
28
$400–499
24
$500–599
18
$600–699
20
$700–799
13
$800–899
8
$900–999
8
$1,000–1,099
2
$1,100–1,199
2
$1,200+
13,558
Final bankroll across 20,000 European-wheel sessions, starting at $1,000. Empty bands omitted. Green is the walk-away line; red bands finished below $1,000.
$1,235$885round 94
One disclosed session (seed 1592639710, European wheel). It reached the +$200 walk-away line after 94 spins at $1,235. Open it in Engineer mode to replay the identical run.

European versus American wheel

The same 20,000 seeds, replayed on a double-zero wheel. The second zero roughly doubles the edge to $5.26 per $100 wagered. Measured return goes from −$2.71 to −$5.30 per $100, and the mean session from −$160 to −$330.

Contra D’Alembert results on European and American wheels
MetricEuropean (one zero)American (two zeros)
Walked away +$20067.8%54.0%
Busted (stake no longer fit)31.4%45.4%
Hit the 500-spin cap0.8%0.6%
Finished in profit67.8%54.0%
Mean result per session−$160−$330
Median final bankroll$1,210$1,200
10th / 90th percentile$0 / $1,255$0 / $1,250
Mean amount wagered$5,885$6,211
Return per $100 wagered−$2.71−$5.30

The code that produced these numbers

This Lua is the strategy as Engineer mode runs it, inside the same sandbox and kernel. A test in the repository replays it against the bulk generator on fixed seeds and fails the build if the two ever disagree by a single dollar.

-- Contra D’Alembert: add one unit after a win, remove one after a loss.
-- Session rules shared by every 0xroulette.com/systems page:
-- $5 unit, $500 table max, walk away at +$200, and stop the moment
-- the next stake can't be covered by the bankroll or the table limit.
local UNIT, TABLE_MAX, TARGET = 5, 500, 200

local level

local function reset() level = 1 end

local function place(ctx)
  return { { type = "red", amount = UNIT * level } }
end

local function settle(result)
  if result.net > 0 then level = level + 1 else level = math.max(1, level - 1) end
  if UNIT * level > TABLE_MAX then level = 1 end
end

-- Shared wrapper: enforces the session rules around place/settle.
strategy = {}
local start, stopped

function strategy.setup(ctx)
  start, stopped = ctx.bankroll, false
  reset()
end

function strategy.bet(ctx)
  if stopped or ctx.bankroll >= start + TARGET then
    stopped = true
    return {}
  end
  local bets, stake = place(ctx), 0
  for _, b in ipairs(bets) do
    if b.amount > TABLE_MAX then stopped = true end
    stake = stake + b.amount
  end
  if stake > ctx.bankroll then stopped = true end
  if stopped then return {} end
  return bets
end

function strategy.on_spin(ctx, result)
  if not stopped then settle(result) end
end
Run it yourself.Opens Engineer mode with this code and seed 1592639710, the session charted above. Change a line, press run, see what moves.

Session rules

Bankroll / unit
$1,000 / $5
Exit rules
walk away at +$200 ($1,200); 500 spins; stop when the next stake exceeds the bankroll or the table maximum
Table maximum
$500 per bet
Seeds
20,000 per wheel from master seed 0x6d2e6c8b, identical for every system

Limitations

One bankroll, one unit size, one table limit, and one walk-away target. A bigger bankroll or a higher limit moves where a progression breaks; it does not change the return per dollar wagered. Spins are fair and independent, as on a correctly functioning wheel or a certified RNG. Physical wheel bias is a separate question, covered on Physics.

Related