Here you guys go,
edit: I had dealer hitting on soft 17, on stake ogs dealer always stands on soft 17.
https://pastebin.com/MekZgDt2you can check that the simulator is accurately using stake's original bj formula, as it will print out the card order for test1/test1 nonce 1- or anything else you switch in near the bottom there, it can be your own seed pair, so long as it's unhashed of course.
One thing I had to do was count naturals as 1.5 wins, not just 1. This brings the winrate much closer to what is expected, because you're getting back 1.5 units when you win, not just 1. I think this was discussed earlier in the thread.
Without doubling, and when using an imprecise/poor strategy, the house edge is very high. Before I implemented doubling properly to this, it was hard to get less than 5% edge.
It is also worth noting that on Stake, when you have a draw/push, it doesn't count as a loss or a win. So the playthrough goes up in the stats, but it doesn't say there was a game at all.
Here is the strategy I used:
Always hit 11 or below
12: Hit vs 2,3,7+ | Stand vs 4,5,6
13-16: Hit vs 7+ | Stand vs 2-6
17+: Always stand
Soft Totals:
A,2 through A,6: Always hit
A,7 (soft 18): Hit vs 9,10,A | Stand vs 2-8
A,8+ (soft 19+): Always stand
Pairs:
Always split Aces and 8s
Never split 5s or 10s
Split 2s,3s,7s vs 2-7
Split 4s vs 5,6
Split 6s vs 2-6
Split 9s vs 2-6,8,9
Doubling:
Double 11 vs anything
Double 10 vs 2-9
Double 9 vs 3-6
Double soft 13-18 vs 5,6
Insurance:
Never take insurance
There are some small changes from standard blackjack strategy, because of how OGs use an infinite deck, so there is no considering that it may be more or less likely to draw certain cards; every card always has an equal chance of being next. It's mostly that you can be slightly more aggressive in certain situations.
Here is a random result of 100,000 games:
Simulation Results (100,000 games):
Server Seed: eb4ecccbd4e5b26ad5b2073e7f80c48ae890717838e36216ecc0af9806ec1a8d
Client Seed: 5f3f15412deb
Win Units: 50,764.5 (47.22%)
Losses: 48,081 (44.73%)
Pushes: 8,658 (8.05%)
House Edge: 0.89%
Average Return: -0.0089
Variance: 0.9678
Time: 11.68s
==================================================
an additional 500k, with the fixed dealer standing on soft 17 change-
Running with random seeds...
==================================================
Simulation Results (500,000 games):
Server Seed: 35361f7221bfadc89b0201b2437ff368fa21124e90fff35dbc15725417de1dfa
Client Seed: 85ecfeeff3bd
Win Units: 256253.5 (47.43%)
Losses: 240,761 (44.57%)
Pushes: 43,218 (8.00%)
House Edge: 1.09%
Average Return: -0.0109
Variance: 0.9692
Time: 60.97s
==================================================
You can adjust how many games are run in the code, it by default does 100k- you can do any number you like, even their supposed 10 million. It might just take a minute though
How to use: I do not suggest running random code without checking it first. But, this is entirely open source, so check it before running it. You need python.
`py originalblackjack.py` in any cli. You could also run this from an online python environment, but if it's a free one, it may have issues simulating too many games. I'm sure you can figure it out if you care this much.
Takeaways: it's hard to approach the house edge without a lot of games, and playing perfect strategy, including all proper doubles with no fear or balance worries. The edge is quite low in that case. When naturals only count as 1 win, it can feel low, even though it's not. There is a reason mass-playing perfect strategy og blackjack on a bot was one of the best ways to farm wager, if you had those tools.
This simulator follows stake's implementation 1:1; there are no liberties taken here.
Thanks for reading
@FoxyMethoxy – Oh, so now Stake is "open-source"? Since when do gambling companies just hand over their source code for public verification? That’s not how online casinos work. If Stake’s games were truly open-source and verifiable, they wouldn’t be wiping stakeexposed.com from archives, refusing GDPR requests, or manipulating RTP beyond statistical probability.
🔹 You dumped a wall of Python code like it's some sacred truth—who wrote it? Where’s the actual verification that it matches Stake’s real backend logic? Oh wait—you have none. Instead, you expect everyone to trust your homemade simulator as gospel while ignoring Stake’s history of deception.
🔹 Where’s the official Stake repository? Where’s the verifiable source that proves this script is their actual implementation? If you can’t provide it, then your code is as good as Monopoly money.
🔹 Let’s be real: If this script actually proved Stake’s fairness, Stake would have linked it themselves. But they haven’t—because they don’t want players analyzing real data.
🔹 A real test would involve comparing Stake’s actual bet history against expected outcomes, not some third-party script that could be tweaked to fit a narrative. But guess what? Stake refuses to give players their full betting history.
So tell me, Foxy—why would a billion-dollar gambling company give away its actual backend code but refuse to give users their own bet data?
Next time, instead of dumping code like it’s some divine truth, show me proof that this script is an exact replica of Stake’s real mechanics. Until then, your “simulator” is just another smokescreen designed to distract from Stake’s real, verifiable fraud.