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