Idea #9: Holdem Simulator


There’s an aphorism out there (amongst people fond of aphorisms) claiming that “me-ware” is the most common kind of new software in the small-business software industry.

The best source control systems are written by people who, themselves, need source control.

The best photo-editing software is written by people with a passion for photography.

You get the idea.

And I tend to agree. Me-ware is probably the most prevalent model for the development of new software by small (read: tiny) software companies.

As for myself (among numerous other things), I have a passion for poker.

It’s not so much the gambling that interests me (though without money at stake, it’s an entirely different game). For me, it’s about the strategy of the game. Ever since I started building the proof-of-concept for my AI-Coder.com project, I’ve been fascinated by the underlying mechanics of the game of poker.

And have you ever seen the move Rounders? There’s a very seductive mystique surrounding the game of poker, in all its variants.

Especially Texas Holdem.

During the earliest phases of my research into artificially intelligent poker strategies, I started developing software to analyze my own game-play strategy, as well as the strategies of my opponents. For instance, one of my applications sits quietly in the background, watching me play poker. It keeps a complete record of my hole cards, the cards on the table, and the complete sequence of bets made by all players at the table. After an hour or so of watching me play, it spits out a statistical report describing my night on the tables. It quantifies my typical level of aggressiveness, my average hand-quality thresholds for betting and raising, my average win and loss margins, and a few dozen other helpful statistics. It also generates the same kinds of reports for all other players at the table. And it remembers players that I encountered from previous days on the tables.

(quick disclaimer: so far, I’ve only ever played the pretend-money tables.)

I’ve also developed a handy GUI application for calculating, on the fly, my odds of winning based on the current table-state. It looks like this:



HoldemSimulator

The software scrapes the screen (which, by the way, is an enormous pain in the ass) to determine the complete table state of my current game. Which players are still in? Which players have folded? What cards am I holding? Which cards are on the table? How much money has each opponent put into the pot? Which players are likely holding weak cards, and which players are most likely to win the current hand?

Based on all that information, the application runs a complex simulation, capable of scoring nearly 200,000 hands per second (on my ancient Athlon 1.5 GHZ) to determine the strength of my current hand, compared to the potential hands of all my opponents. The software also keeps track of each player’s actions (for example, the software notices when a player suddenly starts raising against a strong flush draw), and it employs a probabilistic model to estimate the strength of each opponent’s hidden cards. Based on the results of that simulation, it recommends a particular move (fold, check, call, raise).

Most forms of poker (including Texas Holdem) are fantastically complex, from a strategic perspective. But, in my opinion, my software is pretty cool, and the underlying AI rivals some of the best algorithms developed by the researchers at the University of Alberta’s poker group.

I’m very proud of it.

And I think I could sell it.

Beyond the capabilities of the simple UI shown above, the software is actually fully capable (in its current incarnation) of playing fully automated games against human opponents, at one of the internet’s most popular poker destinations.

Of course, in many cases, it loses a hand.

But it wins often enough, over the last 20,000 hands, to have a positively-trending balance. (About 18 big-bets in winnings per 100 hands. At least, on the play-money tables.)

Although I’ve been researching poker AI algorithms for more than six months, I’ve never actually put any real cash money into the games, because my only intent was to study the process of developing a winning poker AI agent. But at this point, I could certainly do so. And I don’t think I’d have a hard time selling the software. There are plenty of people interesting in gaining an unfair advantage over their opponents in online poker tables.

But do I really want to do that?

Do I really want to release a product that–while being financially viable–is also ethically questionable?

I don’t know.

At least for the moment, since I’ve already developed some pretty advanced software in this problem domain, I’d be silly not to include it in my list of ideas.

Whether I’m willing to build a business based on gaming the online casinos is another question entirely.

Pros:

  • I have already done lots of unique, innovative research into this field. I’ve developed a set of novel algorithms that I think work very well. And I’ve proven my results over tens of thousands of trials against real-world opponents.
  • This is an area of research that interests me very much. Games of hidden information (like holdem, and other similar variants) are so strategically complex that a simple brute-force algorithm is incapable of navigating a winning path through the game’s decision tree. A winning strategy needs to accommodate the individual personalities of the current set of opponents, in addition to the standard probabilistic models. That’s the kind of problem that interests me very much.
  • I have no doubt: people would pay for this software.

Cons:

  • By definition, my software would rely on the implicit API of another software company. A company that, in all likelihood, would not appreciate the presence of an AI application. I’d probably spend a lot of time fighting their detection mechanisms.
  • The whole thing is ethically questionable. I don’t know if I want to be involved in that kind of market.
  • There are a few other poker AI products on the market. Generally, I’m familiar with their architecture, and I think they’re technically inferior to my own software, from an AI perspective. But in most cases, those products support a stunning variety of poker clients. My software is not nearly so flexible (because I never intended it to be a “product.” It could potentially take a lot of work to make the software technically compatible with so many different game clients.
  • Due to a few implementation details, my software requires the 1.6 version of Sun’s JDK. The only people who have installed this JDK version are Java developers. Anyone else would be required to download a 15 MB JRE update.

This is the ninth of 30 business ideas that I’ll be writing about over the course of 30 days. Some of them are nearly-complete products that are already sitting in my own source-code repostitory. Others would be entirely new development efforts, requiring a great deal of time to design and code. One of them will become a product over the next six months, and the foundation of my new software business.

7 Responses to “Idea #9: Holdem Simulator”

  1. jay graves Says:

    Wired had a story on this last year.

    http://www.wired.com/wired/archive/13.09/pokerbots.html

  2. James Says:

    Is this a joke?

    If not, then you need to keep it to yourself, start winning money, and make enough to take you and your girlfriend to the moon.

  3. Vladimir Dyuzhev Says:

    James’s right. It’s not a product to sell, it’s an application to use. Make it running in a dedicated home machine, and make money for you. Focus on some other idea meanwhile.

  4. Vladimir Dyuzhev Says:

    On the second thought … don’t do it. Poker sites seems to explicitely prohibit bots, and it’s better not to go into anything illegal, be it using or selling the poker bot application.

  5. Derek Says:

    This idea reminds me of this person I know who wants to develop an online system for horse betting, to sell as a service. The only dilemma is this question, “If the system is so good, and provides a real advantage, why is the owner selling it as opposed to finding investors?”.

  6. Keeran Says:

    Hmm another idea that we’ve shared. I kept tripping up on the scraping aspects of the direction I was heading and abandoned it in the end. Is there a java lib available for character recognition etc?

    Stop reading my mind! ;)

  7. benji Says:

    Keeran says:
    “Is there a java lib available for character recognition etc?”

    Not that I know of. I ended up writing my own.

Leave a Reply

You must be logged in to post a comment.