The cycle system is a system proposed by Mike Goodman in his book, Your Best Bet.
Its a very old book, first published in 1976. It is a progressive system but cycles through bets so you never hit the house limit. It is based on picking a dozen and sticking with that.
This diagram is for the first dozen. You start off betting 4 units on the corners as shown in {A}. If that wins, great, start again. If not, then you go on to (B), (C), (D) and (E). If you lose all 5 you go to the next betting round.
On this round, if you hit, you go in to the cycle progression. You put 5 unit chips on diagram C. If this loses, you put 10 chips on each spot and then 15 chips. If it wins, you exit the cycle with a profit.
An example.
This is quite complicated at first so best off jumping in to the Roulette Xtreme simulator to show you what is does in practice and run through an example and then through 10000 spins.
So there you have it, the system ends up massively negative after 10000 spins.
You can see the massive run of bad luck at the start which does recover to become positive but does end up being negative long term. So even if you did have enough bankroll to sustain the loss, you'd still be down in the end. I am guessing Mike Goodman didn't have a computer back then to test his system else he would have known it was destined to fail.
Code from Roulette Xtreme Simulator.
system "Cycle_Roulette.dgn"
{Cycle Roulette
Based from the book "Your Best Bet by Mike Goodman"
All Bets are expressed in Units.
Normal betting progression is 4,8,20,40,60 units
When in a Cycle the progression is: 100,200,300 units
A typical example: Normal betting units are $1.00/unit
A typical cycle units are $5.00/unit
The combinations are setup as Group A-C as follows:
Group A: 1st Dozen
Group B: 2nd Dozen
Group C: 3rd Dozen
}
method "main"
begin
While Starting a New Session
begin
Call "Initialize";
Call "Input data";
Call "Setup Dozen Layout";
call "Make Bet";
Exit;
end
if record "Layout in use" layout has not hit each time
begin
if Flag "In Cycle" is False
begin
Call "Determine Normal Progression";
end
Else
begin
Call "Determine Cycle Progression";
end
end
Else
begin
Put 1 on record "Progression" data index; //reset progression data index
if Flag "In Cycle" is True
begin
Call "Cycle Win";
end
Else
begin
Call "Figure Cycle Count";
end
end
Call "Make Bet";
end
method "Cycle Win"
begin
Subtract 1 unit on record "Number of Cycles" data;
Set Flag "In Cycle" to False;
end
method "Figure Cycle Count"
begin
While record "Number of Cycles" data not = 0
begin
Set Flag "In Cycle" to True;
//move progession data index to start of Cycle bet
Put 6 on record "Progression" data index;
end
end
method "Setup Dozen Layout"
begin
if record "Dozen Indicator" data = 1
begin
Copy 1st Dozen to the record "Layout in use" layout;
end
Else
begin
if record "Dozen Indicator" data = 2
begin
Copy 2nd Dozen to the record "Layout in use" layout;
end
Else
begin
if record "Dozen Indicator" data = 3
begin
Copy 3rd Dozen to the record "Layout in use" layout;
end
end
end
end
method "Determine Normal Progression"
begin
Add 1 unit on record "Progression" data index; //bump progression data index
//if progression data index > 5 then we are in a Cycle
//Add on Cycle and reset progression to start of first bet.
if record "Progression" data index > 5
begin
Add 1 on record "Number of Cycles" data;
Put 1 on record "Progression" data index; //reset Progression data index
end
end
method "Determine Cycle Progression"
begin
Add 1 unit on record "Progression" data index; //bump progression
//if progression data index > 8, then we are in another Cycle
//Add on Cycle and reset progression to start of first bet.
if record "Progression" data index > 8
begin
Add 1 unit on record "Number of Cycles" data;
Set Flag "In Cycle" to False;
Put 1 unit on record "Progression" data index; //reset Progression
end
end
method "Dozen 1 Layout - Progression 1"
begin
Put 100 % of record "Progression" data on Corner(1:5);
Put 100 % of record "Progression" data on Corner(2:6);
Put 100 % of record "Progression" data on Corner(8:12);
Put 100 % of record "Progression" data on Corner(7:11);
end
method "Dozen 1 Layout - Progression 2"
begin
Put 100 % of record "Progression" data on Split(2-3);
Put 100 % of record "Progression" data on Split(5-6);
Put 100 % of record "Progression" data on Split(8-9);
Put 100 % of record "Progression" data on Split(11-12);
Put 100 % of record "Progression" data on Split(1-2);
Put 100 % of record "Progression" data on Split(4-5);
Put 100 % of record "Progression" data on Split(7-8);
Put 100 % of record "Progression" data on Split(10-11);
end
method "Dozen 1 Layout - Progression 3-5"
begin
Put 100 % of record "Progression" data on Number 3;
Put 100 % of record "Progression" data on Split(2-3);
Put 100 % of record "Progression" data on Corner(2:6);
Put 100 % of record "Progression" data on Split(5-6);
Put 100 % of record "Progression" data on Corner(5:9);
Put 100 % of record "Progression" data on Split(6-9);
Put 100 % of record "Progression" data on Split(8-9);
Put 100 % of record "Progression" data on Corner(8:12);
Put 100 % of record "Progression" data on Split(11-12);
Put 100 % of record "Progression" data on Number 12;
Put 100 % of record "Progression" data on Number 1;
Put 100 % of record "Progression" data on Split(1-2);
Put 100 % of record "Progression" data on Corner(1:5);
Put 100 % of record "Progression" data on Split(4-5);
Put 100 % of record "Progression" data on Corner(4:8);
Put 100 % of record "Progression" data on Split(4-7);
Put 100 % of record "Progression" data on Split(7-8);
Put 100 % of record "Progression" data on Corner(7:11);
Put 100 % of record "Progression" data on Split(10-11);
Put 100 % of record "Progression" data on Number 10;
end
method "Dozen 2 Layout - Progression 1"
begin
Put 100 % of record "Progression" data on Corner(14:18);
Put 100 % of record "Progression" data on Corner(13:17);
Put 100 % of record "Progression" data on Corner(20:24);
Put 100 % of record "Progression" data on Corner(19:23);
end
method "Dozen 2 Layout - Progression 2"
begin
Put 100 % of record "Progression" data on Split(14-15);
Put 100 % of record "Progression" data on Split(17-18);
Put 100 % of record "Progression" data on Split(20-21);
Put 100 % of record "Progression" data on Split(23-24);
Put 100 % of record "Progression" data on Split(13-14);
Put 100 % of record "Progression" data on Split(16-17);
Put 100 % of record "Progression" data on Split(19-20);
Put 100 % of record "Progression" data on Split(22-23);
end
method "Dozen 2 Layout - Progression 3-5"
begin
Put 100 % of record "Progression" data on Number 15;
Put 100 % of record "Progression" data on Split(14-15);
Put 100 % of record "Progression" data on Corner(14:18);
Put 100 % of record "Progression" data on Split(17-18);
Put 100 % of record "Progression" data on Corner(17:21);
Put 100 % of record "Progression" data on Split(18-21);
Put 100 % of record "Progression" data on Split(20-21);
Put 100 % of record "Progression" data on Corner(20:24);
Put 100 % of record "Progression" data on Split(23-24);
Put 100 % of record "Progression" data on Number 24;
Put 100 % of record "Progression" data on Number 13;
Put 100 % of record "Progression" data on Split(13-14);
Put 100 % of record "Progression" data on Corner(13:17);
Put 100 % of record "Progression" data on Split(16-17);
Put 100 % of record "Progression" data on Corner(16:20);
Put 100 % of record "Progression" data on Split(16-19);
Put 100 % of record "Progression" data on Split(19-20);
Put 100 % of record "Progression" data on Corner(19:23);
Put 100 % of record "Progression" data on Split(22-23);
Put 100 % of record "Progression" data on Number 22;
end
method "Dozen 3 Layout - Progression 1"
begin
Put 100 % of record "Progression" data on Corner(26:30);
Put 100 % of record "Progression" data on Corner(25:29);
Put 100 % of record "Progression" data on Corner(32:36);
Put 100 % of record "Progression" data on Corner(31:35);
end
method "Dozen 3 Layout - Progression 2"
begin
Put 100 % of record "Progression" data on Split(26-27);
Put 100 % of record "Progression" data on Split(29-30);
Put 100 % of record "Progression" data on Split(32-33);
Put 100 % of record "Progression" data on Split(35-36);
Put 100 % of record "Progression" data on Split(25-26);
Put 100 % of record "Progression" data on Split(28-29);
Put 100 % of record "Progression" data on Split(31-32);
Put 100 % of record "Progression" data on Split(34-35);
end
method "Dozen 3 Layout - Progression 3-5"
begin
Put 100 % of record "Progression" data on Number 27;
Put 100 % of record "Progression" data on Number 25;
Put 100 % of record "Progression" data on Number 36;
Put 100 % of record "Progression" data on Number 34;
Put 100 % of record "Progression" data on Corner(26:30);
Put 100 % of record "Progression" data on Corner(25:29);
Put 100 % of record "Progression" data on Corner(32:36);
Put 100 % of record "Progression" data on Corner(31:35);
Put 100 % of record "Progression" data on Corner(28:32);
Put 100 % of record "Progression" data on Corner(29:33);
Put 100 % of record "Progression" data on Split(26-27);
Put 100 % of record "Progression" data on Split(29-30);
Put 100 % of record "Progression" data on Split(32-33);
Put 100 % of record "Progression" data on Split(35-36);
Put 100 % of record "Progression" data on Split(25-26);
Put 100 % of record "Progression" data on Split(28-29);
Put 100 % of record "Progression" data on Split(31-32);
Put 100 % of record "Progression" data on Split(34-35);
Put 100 % of record "Progression" data on Split(28-31);
Put 100 % of record "Progression" data on Split(30-33);
end
method "Make Bet"
begin
if record "Dozen Indicator" data = 1
begin
//1st Dozen selected
if record "Progression" data index = 1
begin
Call "Dozen 1 Layout - Progression 1";
end
if record "Progression" data index = 2
begin
Call "Dozen 1 Layout - Progression 2";
end
if record "Progression" data index > 2
begin
Call "Dozen 1 Layout - Progression 3-5";
end
end
Else
begin
if record "Dozen Indicator" data = 2
begin
//2nd Dozen selected
if record "Progression" data index = 1
begin
Call "Dozen 2 Layout - Progression 1";
end
if record "Progression" data index = 2
begin
Call "Dozen 2 Layout - Progression 2";
end
if record "Progression" data index > 2
begin
Call "Dozen 2 Layout - Progression 3-5";
end
end
Else
begin
if record "Dozen Indicator" data = 3
begin
//3rd Dozen selected
if record "Progression" data index = 1
begin
Call "Dozen 3 Layout - Progression 1";
end
if record "Progression" data index = 2
begin
Call "Dozen 3 Layout - Progression 2";
end
if record "Progression" data index > 2
begin
Call "Dozen 3 Layout - Progression 3-5";
end
end
end
end
end
method "Initialize"
begin
//Progression list for Normal and Cycle bets
Set List of [1,1,1,2,3,5,10,15] to record "Progression" data;
Set Flag "In Cycle" to False;
end
method "Input data"
begin
Input Dropdown "Enter starting Dozen
1:= 1st Dozen
2:= 2nd Dozen
3:= 3rd Dozen" to record "Dozen Indicator" data;
end