Skip to main content

· One min read

There is a new version of PioSolver 3.2.

There is a new feature that automates process of creating subtrees.

Now it's possible to load a flop save with e.g. one betsize everywhere and an option to seemlessly browse the tree on the turn and river with many betsizes - via subtrees created and solved autmoatically by the viewer.

Randomized suits in the trainer

Now there is a new option in the trainer to randomize suits while playing. So even if your solutions db has each representative flop only once (e.g. three-spades but not three-hearths) the trainer will randomly switch colors for each hand.

· One min read

In PioSolver there are many ways you can try to model non-GTO tendencies of your opponents to get insight into a proper way to exploit them.

Opponent profiling starts with preflop ranges where the best tool is your knowledge about your opponents. On the flop it's either node locking or the incentives, and on the turn and river you can use incentives to adjust opponent tendencies across all runouts in a quick efficient way.

The incentives feature came out from the discussions between our programmer Kuba with Hunter Cichy about this topic. We have recorded one conversation about the feature embedded below (or you can use the RSS link to listen in your preferred podcast player).

We also created a video which shows basic usage of incentives feature.

· 3 min read

We're pleased to announce the release of 3.0 PioSolver.

It brings a lot of changes. Most notably, there are new features, a new sales model without Basic version, and a shift in priorities.

New features

The most notable new features are:

  • Fast Loads - with PioSolver 3.0 new saves can be loaded in fast mode. It means that the solver will only read data from the disk on an as needed basis, which will hugely reduce the loading time - especially of the full saves
  • Incentives - the easy and powerful way to do player profiling
  • Filters in GTO trainer
  • HH exporter - the feature to let the solver play against itself and generate hand histories in a format that you can import into your preferred database

No PioSolver Basic

From version 3.0, we will be shipping only the Pro and Edge versions of PioSolver, and each will include only one activation.

The prices of the licence will be $249 for each Pro activation and $549 for each Edge activation.

We decided to modify the pricing model to be one activation per license by default, but for roughly half the price. Users that require more activations can still purchase them, and a two-activation license remains the same price as before.

With the new pricing model, we determined that there is no need for the for the basic tier anymore, and have decided to drop it.

New sales model

We have a new sales model. Customers of Pro and Edge licence will have a life-time access to a purchased version, but the future updates will require purchasing a support extension. At the moment of purchase you'll get one year of updates included.

The idea behind this model is that it encourages us to ship new features as soon as we build them without bundeling a lot of features for the next major version and still having a way for people to support us with recurring payments for updates if they like continuous development.

Discounts / upgrading from 2.0

The users who already own the PioSolver 2.0 licence will be eligible to upgrade to 3.0 by purchasing an update extension for a year (which costs 50% of the licence cost per year).

The licences purchased the past year can be upgraded to 3.0 for no cost for one year since the original purchase, and their update expire date will be set to 1 year from the date of original purchase.

New priorities

Having a small team with limited resources we tried to work on the improvements to the program, the algorithm as well as doing research and trying to build a muti-way solver, PLO solver etc. We made some progress in those areas but nowhere near to something of the quality we would like to make public.

From now on our major focus will be on improving the experience of our main product - PioSolver. So from now on you can expect much more frequent updates to the PioViewer and PioSolver with bugfixes, tiny usability improvements in the most used parts etc.


Interested in a new PioSolver 3.0 license or upgrading from 2.0? You can purchase Pro and Edge from our store.

· 2 min read

We are happy to announce PioSOLVER 2.0!

This is our first major version upgrade and it's a big one. There are many new features and improvements. Some of them are:

  • Big performance improvements, the solver is 2x faster on average and even up to 5x faster on some trees using new algorithm (especially simple trees)
  • GTO trainer
  • Job queue (much more convenient way to schedule tasks)
  • Redesigned and much easier to use node-locking interface
  • New tree-browsing features like Strategy+React, Hotness for one combo, Strategy Distribution Map
  • A lot of improvements for configuring the behavior of the solver and displayed information

You can get more details about the release watching our release video:

PioSOLVER 2.0 is an optional paid upgrade. The way it works:

  • If you decide not to upgrade your 1.10 license will continue to work indefinitely.
  • The upgrade is free for licenses issued on January 15th or later.
  • The upgrade costs 50% of the price for licenses issued on July 1st 2020 or later.
  • The upgrade costs 70% of the price for licenses issued before July 1st 2020.
  • Discounted upgrade can be claimed till December 31th 2021.
  • The cost of 2.0 version for new customers is the same as the old one
  • To find out which upgrade your license is eligible for please visit: and insert your license key.

As this is a big release with many new features and changes it's expected some bugs and problems are going to surface even though this version has been tested thoroughly. To mitigate potential problems your 1.10 license will continue to work for some time along with 2.0 after the upgrade for a month or two.

We welcome all the feedback and feature suggestions. There are many ideas to improve the software. We prefer to get some feedback from our users first to help us focus on the most important parts.

· One min read

PioSOLVER 1.10.15 is now available. This is another bugfix release. Most people won't see any functional change. Some of the things that were fixed:

  1. Subtree configuration for some edge cases
  2. Aggregation reports are now a bit faster and have more error checks
  3. Checks for new version (About in the top menu)
  4. More checks for errors in tree config
  5. Convergence issues on some trees (mainly the ones with small initial ranges)
  6. A bug in eliminate path feature is fixed.

Run the updater to get the 1.10.15 version. If you don't have it in your installation folder you can find it here (top of the page)

Have fun!

· 4 min read

Choosing a subset of flops to represent the whole game

There are 22100 possible flops in Holdem out of which 1755 are strategically different. This is quite a big number which makes attempts to approximate preflop EV for chosen spots as well as upcoming preflop solving quite a difficult task. One needs a few terabytes of RAM to fit even very simple games (assuming full postflop play) and using a disc storage slows things down very significantly.

It's no surprise then that players and programmers are attracted to the idea of simplifying the game a bit. One of the natural ideas is to reduce the number of flops from 1755 to something more manageable hoping that the preflop results stays approximately the same. First publicly known attempt to do that was described by Will Tipton, here: 2p2 discussion about subset of flops.

Tipton's method was based on first creating conditions a good subset must satisfy and then finding the minimum size subset which satisfies all them. Example conditions are a frequency of every card appearing, a frequency of any given pair being a top pair etc.

While this method makes sense and was improved upon by others since the original publications we have chosen a bit different road. Our method is based on defining some metrics which a good subset must satisfy and then running a solver of sorts to find the best subsets of N elements which scores the best on the metric. The metrics used are equity (against full range, against 50% of the range, against AA etc.) as well as EVs from all 1755 sets which we got access to thanks to several of our users who run high volume analysis before (see credits at the bottom of this post).

The algorithm starts from a random set and "evolves" at every iteration. We have used a random walk approach - at every step the subset is mutated in some ways and if the improvement is found that new subset becomes a new current one - rinse and repeat. The real EV results we got were divided into a training set and a testing set to avoid a situation where the same data is used for both training and testing.

We tried many metrics trying to determine the best one. Interestingly it seems a mix of EV and EQ performs better than other even if we grade the set using EV only.

The results we got are quite promising. To measure how good a subset of flops is we have used least square measure, that is a sum of squares of EV differences for every possible hand. That method punishes big deviations which is what we want. We got big improvements over Tipton's method (which contains 103 flops). Tipton's subset is performing on par with our 25 element subsets and signficantly worse than 50+ element subsets.

Without further ado let's go to the benchmarks. You can find comparison of our subsets to the real results (ones calculated on all 1755 flops) below. We are presenting 5 subsets we've developed: 25 element one, 49 element one, 75 element one, 95 element one as well as 184 element one. Additionally original Tipton's subset is added to the comparison.

  1. Equity against full range
  2. IP players in 3-bet pot, BTNvsBB; 100bb
  3. IP player in single raised pot, BTNvsBB 6max, 100bb
  4. OOP player in 3-bet pot, BTNvsBB 100bb
  5. OOP player in single raised pot, BTNvsBB 6max, 100bb
  6. IP player in single raised pot, SBvsBB 6max, 100bb
  7. OOP player in single raised pot, SBvsBB 6max, 100bb

It seems that 184 element subset performs really well but the smaller one should offer very good accuracy when the goal is get preflop EV, adjust, repeat. We've uploaded more benchmarks, HERE.

We hope making those subset available will make estimating preflop EVs faster and more productive process. We hope those subsets can also be used to obtain preflop solutions once the preflop solver is available. Preliminary tests look very promising.

Have fun!


The testing data was provided by our very helpful users, among others:

  • Selcouth
  • Ilya "SM0LK0" Smolko


Since posting this blog entry we have improved on the process and let it run on our server for much longer. The flop subsets included in preflop_subsets folder in PioSolver installation perform much better than those from the article and include larger variety of sizes from 3 to 362 flops.