Right off the bat I was really baffled by this price because you know that most “serious” poker GTO solvers will charge somewhere in the range of $300 to $600 dollars for their postflop versions and somewhere around the $1000 mark for their preflop alternatives. This solver, for now, only solves postflop (it would be a big LOL if it solved preflop too for this price), but the price intrigued me, I want to see exactly what it can do and what features have been cut out to reach this price point, or maybe they haven’t and it’s a fully functional, usable solver.
Now, bear in mind that the creator of GTO+ is actually also the maker of Flopzilla and HoldEQ, one of the best range vs range equity distribution tools (there’s many more features) out there, which is also reasonably priced at 2 licences for $25. It does a lot and I used it to study for a long time before (and after) I moved to solvers. It’s a lot more convenient if you don’t have a powerhouse of a computer (which I didn’t have at the time by any means) and it will yield approximately the same results if you know what to do with it.
That being said, I’ve already launched the solver and selected two ranges and a board. The ranges selection screen, as you can see, looks very handy and the coloring makes it easier to see which hands are which, suited is blue, offsuit is red and all the pairs are green. I find color coding a great help to any learning experience so this is a nice bonus. You also get to see the amount of combos and save/load ranges. As you can see in the following picture I have saved an EP open and a BB call vs EP, which we will use in this article.
Now, when you click build tree you get to input some other essential aspects of tree building like pot size, effective stacks, rake % and cap. We input a single raised pot, EP vs BB, starting pot 45(4.5BB) chips and stacks behind 980 chips (98BB). We input NL500 Zoom rake, which is 5% with a cap of 3$ per pot which equates to 0.6BB cap, so 6 chips here. We see right off the bat that we’re in the basic decision tree, so this means that the bets will get automatically suggested for us depending on what stack sizes are input (nice feature!).
Let’s build this tree first, “as is” and then we’ll make an advanced tree with custom bet sizes and compare EVs. We see that the default bet size selected by the solver for these stacks is equivalent to around 57% pot. We click on Build Tree on the bottom left and then Run Solver turns blue. Upon clicking that, we get prompted to another window where we want to input solving requirements like precision (Target dEV) and number of processor threads used to solve the tree. There’s also an advanced mode here but more on that later.
The desired precision is a minimum of at least 0.25%, 0.5% being very borderline and I’d say 0.1% being super accurate but not needed precision. The difference between 0.25% solutions and 0.1% solutions will be minimal. Now, let’s see what time and RAM memory is required to run these solutions for a single raised pot. I’d believe that most people have a Quad Core processor with 2 threads per physical core (hyperthreading), so I’ll set my number of threads to only eight and make sure those eight threads aren’t taken which you should do too if solving poker trees.
The results are in! It took me on eight threads:
- 0.25% -> 207.21 seconds
- 0.5% -> 121.70 seconds
- 0.1% -> 384.86 seconds
The RAM memory used for all solution precisions is the same and approximately goes up to 1GB for a single raised pot which is impressive, but of course the lower amount of bet sizes will impact this. We’ll check with a more detailed tree onwards.
Now, you might think that it’s no big difference for the 0.1%, hey I’ll wait 7 minutes for a more accurate solution, but it’s almost twice as slow as the 0.25% with not much effect, and if you’re scripting 184 flops that will take a very long time instead of half the time allocated. You might also think along the same lines that 0.5% is also half of 0.25% time so why not solve to that if you’re scripting? Well, the deeper we go down the rabbit hole, the more deviation we get, so rivers could be very divergent between precision points. Now, for you guys out there that have stronger stations, I’ll run 20 threads on my Ryzen 3900x. Here’s the times:
- 0.5% – 78.21 seconds
- 0.25% – 130.00 seconds
- 0.1% – 241.27 seconds
Now, if we click on the root of the tree on the top left of the screen, we will see that we get to view the actual play in hand. There are three tabs, Combos, Percentages and EV, and we can view all these metrics for either the entire decision tree or each branch like several bet sizes or checking. The colors are very nice and distinguishable and although and actually editable from the tree edit screen.
Fun Fact #1 – The saved files have the *.gto extension. That’s LIT.
Let’s also remember that the EV for IP here is 28.2 for the total decision tree, so we can compare later to a more complex tree. That means that EP is owed in GTO terms 28.2 chips out of the total of 45 chips that the pot has. There’s also EV of betting and checking marked with their respective colors between the parantheses. This leaves an EV of 45-28.2 = 16.8 for the OOP. Considering our range has 60%+ equity and we have position so we realize more equity that is pretty much accurate.
Hovering over a specific hand will give you an overview of all the combos of that respective hand and how they play. This is very useful for learning because you want to know if you bet more or less in some situations, for example, hands that have overcards and backdoor flush draws, or pairs that also have BDFD, and many many other cases. For example, in the above chart we bet a lot more often AQo that have a club, considering that’s a BDFD added to our gutshot. You can keep navigating the tree from the menu up top, choose turns, and study this way. One really cool feature that you can do is node locking. I wasn’t expecting this, but it exists! All you need to do is press the Lock+edit decision button (see above image), then press under the range table the action that you want to do, where it says Current selection you can do for example Bet 26 – 100% and then double click on all the different hand groupings or individual hands that you want to bet 100% with. Also, by using the hand grouping sliders, you can make betting sets or air only 50% of the times. Here’s what a locked node tree will look like:
Now, we’re going to need to resolve the tree with the node lock to get the new solution.
Now that we have it node locked and solved, we see that the EV is lower, 27.11. Deviating from a pure GTO solution will always result in lowering EV(sometimes by a lot), but it will simplify your IRL decisions at the poker table, so it’s a trade-off that sometimes is worth it. Trees take a very small size to store, you’ll never be able to fill up that hard drive or SSD, 1GB can store around 100 trees here.
Now, let’s get into specifics here. Let’s build an advanced tree. We’re going to keep the same preflop ranges EP vs BB SRP and board, but add our own custom bet sizes. To make a simpler tree, all our raise sizes are 66%, which is pretty standard.
This is kind of how the tree is going to look in Advanced mode with added custom bet sizes. I added only 33%,66% for IP because that’s these are standard bet sizes with EP vs BB on boards where we have range advantage. We take out donking because BB is not supposed to on boards where he has range disadvantage. The bet sizes can also be saved in profiles so you don’t have to enter them every time. For example you can have a SRP profile, a 3bet pot, a 4bet pot etc. The “get the money in smoothly” feature is great because, for example, sometimes with 100 chips left, 100 pot, player would bet 75 chips and then the other would raise to 100 and other player would recalculate for 25 chips call the correct range which is the epitome of redundancy and this software eliminates that. 10/10 for thinking about this feature and implementing it.
As you can see, the final tree takes only 1.6GB of RAM which makes it extremely friendly for low-end machines, which I believe would also be the target market for this $70 solver. If you play NL10 and make 5bb/100 hands and an average of 500 hands per hour, you can get this solver when you make 7 buyins = 700 blinds = 140*5bb = 14000 hands = aprox 30 hrs of play. That’s great, and you only have to do this once, and then you can study and improve your game, boost your winrate and climb up the limits! It really seems like a very small effort considering the benefits.
We see here that the RAM estimation is legit, it’s actually only 1.6GB. Time to solve.
Ultrasurprisingly, adding so many bet sizes for the tree only resulted in EV of 28.26 for the full solution, not far from the basic tree form that had 28.2. That’s almost null. Let’s try locking node for full 1/3 pot bet.
We see that the EV only dropped to 27.86 which makes this a valid play IRL(obviously a lot easier to implement!). That’s studying with GTO+ for you! You can also edit the whole tree yourself with the Tree Editor tool (buttons on top right)
Now, one of the coolest things that I’ve seen in a solver is the feature that you get to play against your solution ( cards button on top right ).
You can play against your own solution and you have a few options here. You can either hide tips, show tips like I’m doing right here, or just make the software signal you when you make a mistake. That’s pretty cool! Speed is a factor, performance is a factor too, you get to see how you did. You can play as both players and you can also live export everything and watch the ranges in FlopZilla Pro which is the new version you can connect to the solver. Don’t worry, it’s not an additional buy if you already own Flopzilla, it’s free. You get to connect GTO+ to it and navigate the ranges as you play against your opponent here, which is also very good for learning.
Now, let’s get to that super cool part nobody talks about cause they don’t want you to know about it, hehehe. 🙂 Scripting.
Taking all accounts into consideration, it’s way faster to learn flop strategy by scripting flops and solving them all and getting a chart based on your solves. If you click on Run Solver and then go into the Advanced tab, you get “Activate database mode”. We see that we have a few options here, but I’m actually interested in the flop subsets. Let’s import a 74 strategic flop subset.
In Hold’em poker, there’s a total of 1755 possible unique flops. When creating a database for different flops, ideally, one would extensively need to include every single one of these flops. The disadvantage here would be that processing a database of 1755 flops would require considerable computation time.
In order to get around this, GTO+ offers several standard weighted subsets. These subsets are smaller sets of flops that represent the total possible number of 1755 flops as closely as possible. Currently subsets are available for the following numbers of flops: 5, 19, 23, 33, 37, 44, 55, 66, 80, 89, 111, 129, 141, 163. We’re going to go with the 80 mark. Just type in 80 and click on Import flops from file and voila. You’ll get a warning: Savefile will be very large. 2gb doesn’t seem that large! Let’s do it!
Remember that this will take a considerable amount of time so be patient, go out and get some strawberry and stracciatella ice cream and feel the breeze.
It took me about four hours and a half to solve all these flops on my complex tree build and 20 thread allocation, and that’s absolutely great! If you have a quad core CPU it would probably be perfect time to leave it overnight and it would be done when you wake up. Now that the database is completed, one of the first things that we want to do is get this chart and table and sort flops by EV or Equity for either BB or EP:
This way you can see which are the most advantageous flops for each player and how equity relates to EV and which flops are lower in equity but higher in EV and think about why that is, and you can also relate these metrics to your percentage of betting which size on the flop (here we used only 1/3 for examplification and speed of calculation, but this size is the most relevant to maximizing EV and simplifying gameplay). You can also get a raw textual input and paste this data in whichever word or spreadsheet processor and apply filters and colors and all that.
You can also check the EV of specific hands on all boards and sort them out, or see each hand in particular as an aggregation and generalized EV so you know which hands you can call 3bets for example, if they realize enough EV(compare total EV with how much you have to call pre).
You can, of course, browse all the trees in the database and continue afterwards to study all of them, node lock them and so on. The last feature that I want to talk about here is, again, the “play against your own solutions”, which is also expandable to the full database, so, I can play these ranges on 80 different solved boards that I just did, and train realistically in a GTO environment on as many flops as I can solve, with the ranges that I want to play! This is honestly amazing.
I’m legit thinking I’m going to have so much fun with this and also thinking to solve all 1755 flops to have my own GTO simulator for every pair of ranges out there. 🙂 Honestly this product is amazing and I just want to commend and offer applause *Clap* *Clap* to Scylla and the FlopZilla team for this awesome product and the super competitive pricing of $70. This is affordable for anyone and now you can get good at your game without spending thousands of dollars on equipment and tools.
You can visit GTO+ at https://www.gtoplus.com/ and try it out, you will be thoroughly pleased with this product. There are a series of features I have not shown in this article and also the software is constantly under development with many updates. I give this product a solid 11/10 and firm handshakes for the dev team.