Dooglus, what a lot of hot air about a simple thing.
As discussed before if many whales are at it at the same time volatility on the house side will obviously go down.
Why not change the edge based on number of whales (fewer whales = higher house edge and visa versa) that way we encourage more whales to encourage more whales. We NEED whales after all.
I just knocked this together for those satoshi martingalers all over JD...
// Just-Dice martingale :
public JDMartingale() {
// Values are in BTC :
final double SATOSHI = 0.00000001;
double equity = 10.0;
double initialBetSize = 1;
double betsize = initialBetSize;
final SecureRandom R = new SecureRandom();
DecimalFormat df = new DecimalFormat("#.########");
int counter = 0;
int wins = 0;
int loses = 0;
// Print out params :
System.out.println("equity = " + equity + ", initialBetSize = " + initialBetSize + ":");
// run bet loop :
while (true) {
// (floating value from 0 to 1 inclusive) :
final double d = R.nextDouble();
// Check the state of affairs :
// No equity? :
if (equity <= 0.0) {
System.out.println("GAME OVER.");
break;
}
// We cant keep doubling? oh dear...
if (equity < betsize) {
final double oldBetsize = betsize;
betsize = equity * .25;
betsize = Double.parseDouble(df.format(betsize)); // format to satoshi units.
if (betsize < SATOSHI) {
betsize = SATOSHI;
}
initialBetSize = betsize;
System.out.println("Cannot bet " + oldBetsize + "... So reducing betsize to " + betsize + ".");
}
// Apply outcome :
String str = "bet " + betsize + ", ";
// WIN :
if (d < 0.495) { // (1% house edge)
str += "WIN, ";
equity += betsize;
betsize = initialBetSize;
wins++;
}
// LOSE :
else {
str += "LOSE, ";
equity -= betsize;
betsize *= 2;
loses++;
}
// Print results and stop at some arbitrary point :
str += "equity = " + equity + ", ";
System.out.println(str);
counter++;
if (counter == 100) {
break;
}
}
// Print some basic stats :
System.out.println();
System.out.println("Total bets " + counter);
System.out.println("Total wins " + wins);
System.out.println("Total loses " + loses);
}
Example :
equity = 10.0, initialBetSize = 1.0:
bet 1.0, WIN, equity = 11.0,
bet 1.0, LOSE, equity = 10.0,
bet 2.0, WIN, equity = 12.0,
bet 1.0, WIN, equity = 13.0,
bet 1.0, LOSE, equity = 12.0,
bet 2.0, LOSE, equity = 10.0,
bet 4.0, LOSE, equity = 6.0,
Cannot bet 8.0... So reducing betsize to 1.5.
bet 1.5, WIN, equity = 7.5,
bet 1.5, WIN, equity = 9.0,
bet 1.5, LOSE, equity = 7.5,
bet 3.0, LOSE, equity = 4.5,
Cannot bet 6.0... So reducing betsize to 1.125.
bet 1.125, LOSE, equity = 3.375,
bet 2.25, LOSE, equity = 1.125,
Cannot bet 4.5... So reducing betsize to 0.28125.
bet 0.28125, LOSE, equity = 0.84375,
bet 0.5625, WIN, equity = 1.40625,
bet 0.28125, LOSE, equity = 1.125,
bet 0.5625, LOSE, equity = 0.5625,
Cannot bet 1.125... So reducing betsize to 0.140625.
bet 0.140625, WIN, equity = 0.703125,
bet 0.140625, LOSE, equity = 0.5625,
bet 0.28125, WIN, equity = 0.84375,
bet 0.140625, WIN, equity = 0.984375,
bet 0.140625, WIN, equity = 1.125,
bet 0.140625, LOSE, equity = 0.984375,
bet 0.28125, LOSE, equity = 0.703125,
bet 0.5625, LOSE, equity = 0.140625,
Cannot bet 1.125... So reducing betsize to 0.03515625.
bet 0.03515625, LOSE, equity = 0.10546875,
bet 0.0703125, WIN, equity = 0.17578125,
bet 0.03515625, WIN, equity = 0.2109375,
bet 0.03515625, WIN, equity = 0.24609375,
bet 0.03515625, WIN, equity = 0.28125,
bet 0.03515625, WIN, equity = 0.31640625,
bet 0.03515625, LOSE, equity = 0.28125,
bet 0.0703125, WIN, equity = 0.3515625,
bet 0.03515625, LOSE, equity = 0.31640625,
bet 0.0703125, WIN, equity = 0.38671875,
bet 0.03515625, LOSE, equity = 0.3515625,
bet 0.0703125, WIN, equity = 0.421875,
bet 0.03515625, WIN, equity = 0.45703125,
bet 0.03515625, LOSE, equity = 0.421875,
bet 0.0703125, WIN, equity = 0.4921875,
bet 0.03515625, WIN, equity = 0.52734375,
bet 0.03515625, LOSE, equity = 0.4921875,
bet 0.0703125, LOSE, equity = 0.421875,
bet 0.140625, LOSE, equity = 0.28125,
bet 0.28125, LOSE, equity = 0.0,
GAME OVER.