В покере существует оптимальная стратегия, которая называется «равновесие Нэша». В начале 2013 года я в одиночку написал программу, которая вычисляет равновесие Нэша для самой популярной разновидности покера — No-Limit Holdem. Но сделать программу и выгодно продать ее — две разные задачи.

Эта статья про то как я выходил на сильнейших в мире игроков в покер, вел с ними переговоры о цене, убеждал их в корректности моего алгоритма и, в конце концов, смог заработать $500,000 за первый год.

Меня зовут Олег Остроумов, в онлайн-покере известен под ником Laegoose.

Чтобы следить за следующими статьями, подписывайтесь на мой телеграм-канал.

Покер и равновесие Нэша

Я познакомился с миром покера летом 2008 года, после первого курса мехмата МГУ, когда поехал в студенческий лагерь. Там был парень, который зарабатывал онлайн-покером на жизнь. Услышав его истории, я загорелся: «Вау, можно рубиться целый день в компьютерную игру, и получать за это деньги?!! Я должен этому научиться. Игра основана на теории вероятностей, поэтому у меня точно получится».

38755-1674564699.jpgВ студенческом лагере после первого курса.
Энтузиазма по поводу покера у меня было через край

Через полтора года я уже выиграл достаточно денег, чтобы снять квартиру и переехать от родителей.

В мире тысячи профессиональных игроков, для которых покер – это работа. Сильнейшие из них выигрывают миллионы долларов в год.

Сложность и красота покера заключается в том, что вы не видите карт оппонента, в отличие от тех же шахмат, где у вас перед глазами полное расположение фигур.

Тем не менее, в покере тоже существует оптимальная стратегия, так называемое «равновесие Нэша». В достаточно долгом поединке против любой другой стратегии, равновесие Нэша выиграет или сыграет вничью.

Существование равновесия Нэша в покере достаточно просто доказать, опираясь на материалы теории игр с первого курса мехмата. Но доказательство не дает практического способа это равновесие посчитать.

Вся эта ситуация раздражала тем, что в 11-ом классе я выиграл диплом всероссийской олимпиады по информатике, тогда я научился реализовывать сложнейшие алгоритмы. Но в решении реальной задачи – вычислить равновесие Нэша – ни один из них не помогал! В голове крутились мысли: «Я умею играть в покер, умею программировать, я должен быть в состоянии сделать долбаную программу для покера». Это стало для меня личным вызовом.

Сейчас AI для покера, равновесие Нэша и Game Theory Optimal — мейнстрим. А в конце 2012 даже Том ‘durrr’ Дван, один из сильнейших игроков в мире, на форуме twoplustwo писал, что не верит в существование равновесия Нэша в No-Limit Holdem.

38750-1674558992.png

К 2013 году доступные на рынке программы умели считать равновесие в тривиальных покерных ситуациях, о решении игры целиком речи вообще не шло.

Тем не менее, в январе 2013, после полугода экспериментов и кодинга, у меня получилось сделать программу, которая считала равновесия Нэша для самой популярной разновидности покера No-Limit Holdem..

Для знатоков: программа считала равновесия для No-Limit Holdem, начиная с флопа, с двумя активными игроками и при малом числе разрешенных размеров ставок. Алгоритм называется Monte-Carlo Counterfactual Regret Minimization.

Если вкратце, то программа начинала считать с полностью случайной стратегии, а дальше «эволюционировала», т.е. играла сама против себя, и в каждой следующей итерации повышала частоту более выгодных действий.

Технические подробности создания программы я расскажу в отдельной статье.

38751-1674563191.jpg

Я понимал, что создал уникальный продукт, и что игрокам, которые играют на высоких ставках, будет очень интересно и выгодно с его помощью углубить понимание игры. Название «солвер» (от глагола to solve — решать) программе позже дали мои англоговорящие клиенты.

Я был первым, кто создал подобный продукт. Десятки успешных профессионалов, игравших в плюс на самых высоких ставках, с которыми я общался, не имели доступа и не слышали про более ранние солверы для No-Limit Holdem. Академические статьи про алгоритмы вычисления равновесия Нэша были, и я на них опирался. Но готового продукта, с которым можно тренироваться и повышать мастерство, до этого не существовало.

Поиск клиентов

Я принял решение дорого продавать свой продукт маленькому числу профессионалов, игравших по самым высоким ставкам, а не широкой аудитории дешево.

Существование программы было выгодно держать в секрете. Ведь если твой оппонент подозревает, что ты изучил и воспроизводишь оптимальную стратегию, то, во-первых, он не будет с тобой слишком много играть, а, во-вторых, будет копировать твою стратегию. А если он ничего не подозревает, то есть шансы, что он будет считать тебя чудаком со странной стратегией, которому просто везет.

В тот момент я играл в покер на профессиональном уровне с суммой на столе в $200, и умел программировать, но в продажах софта и ведении бизнеса опыта у меня не было.

Дополнительной сложностью было то, что с одной стороны, существование программы выгодно держать в секрете, а с другой, нужно искать потенциальных клиентов.

Но как определить цену, когда конкурентов на рынке не существует? Мой мыслительный процесс был примерно следующий.

Продукты, которые считают равновесия Нэша в простых ситуациях стоили 50$, другой софт для анализа игры столько же. Моя программа была круче, поэтому первая идея была брать по 500$ с человека. Потом решил, что можно и по $2,000. Постепенно я осмелел до мыслей: «Раз программа крутая, может быть продавать ее за $10,000?». А на следующий день решил ещё более радикально: «А почему бы не за $50,000? Как раз нормальная цена. Ух, е***ь, разбогатею!!»

В мире большого бизнеса софт за сотни тысяч и миллионы долларов – это обычное дело, но я собирался продавать конкретным людям, а не корпорациям. Все мои знакомые в то время получали в лучшем случае $5,000 в месяц.

Я тогда прочитал книжку Гэвина Кеннеди «Договориться можно обо всем». Один из тезисов там был про то, что начинать переговоры нужно с цены выше той, на которую покупатель в итоге согласится. Я хожу и думаю, а может и больше $50,000 можно попросить, например, $100,000?

На руку мне было то, что найти хорошего учителя в покере максимально сложно: лучшим игрокам выгоднее зарабатывать самим, чем делиться секретами. Сильные, но не сильнейшие игроки тогда иногда тренировали за $1,000 в час и больше. А программа была идеальным учителем с неограниченным временем использования.

38747-1674558878.png

На большую цену я замахнулся не только в фантазиях – у меня был потенциальный покупатель, настроенный серьезно – Трутеллер.

Трутеллер был очень успешным игроком, который всего за полтора года поднялся до самых высоких ставок и выиграл больше $2,000,000 в разновидность покера, на которой я сам специализировался (20бб стеки на PokerStars). Кроме перспективы заработать денег, было интересно пообщаться с сильнейшим из моих оппонентов и понять, в чем его магия.

Контакт Трутеллера в скайпе мне дал наш общий знакомый. Изначально была идея заключить эксклюзивную сделку с Трутеллером на шестизначную сумму. Мы оба понимали, что продукт уникальный и может дать большой перевес в игре. Но переговоры за полтора месяца почти не продвинулись — стороны не особо доверяли друг другу.

У него в то время шла игра с $40,000 на столе, он буквально целыми днями катал и не мог найти время для звонка. В какой-то момент он взял неделю подумать. Я стеснялся, не напоминал ему, прождал две недели. Потом созваниваемся: я злой, а он просто ушел в игру с головой и забыл. Диалог был следующий:

Я (раздраженно): «С переговорами ты тормозишь, а эксклюзивность на этот период получаешь вне зависимости от исхода. Предлагаю тебе платить $5,000 в неделю на время переговоров».

Трутеллер (тоже раздраженно): «А давай ты мне будешь платить $2,000 в час, пока мы разговариваем, это мое матожидание в игре сейчас».

Я испугался, что мы так поссоримся и вообще сделки не будет, и не стал настаивать. Но понял, что теряю время и нужно искать других клиентов, о чём и сообщил Трутеллеру.

Тимофей рассказывал о покупке первого солвера в одном из наших интервью:

– Расскажи про первый солвер. Ты рассказывал, что купил его в 2013-м за $100k, Рауль с другими игроками примерно в то же время – за $200k. Это был разный софт?

– Нет, тот же самый. Покупали все у одного человека, просто разные сделки – Рауль объединился с несколькими игроками, а я был один.

– Тебе наверняка не раз предлагали откровенный скам. А как понять, что это что-то полезное? Тебе уже тогда было понятно, что в покере есть оптимальная игра?

– Да, были совсем неадекватные предложения, типа вот возьми софт, который стоит $3 млн, серьезно такое не рассматривал. А то, что в покере существует стратегия, которая соответствует равновесию Нэша, я понял сразу, как только начал играть. Потому что мы это проходили на мехмате. Еще до того, как появились солверы, в каких-то самых простых спотах я просто на бумажке прикидывал, каким будет равновесие Нэша. Условно на ривере это не очень сложно сделать. Потом появился Олег и предложил купить программу, которая сама считает равновесие. Я ответил: «О! Круто, давай».

Поиск продвигался со скрипом. Я связался с парой знакомых игроков, но они абсолютно не видели ценности в программе, предложили от $50 до $500. Разговоры про пятизначные суммы за лицензию вызывали у них недоумение или насмешку.

Хорошо помню, как я написал одной звезде тех лет и предложил ему демонстрацию софта, но он проигнорировал мое холодное сообщение и пинг через общего знакомого. Как я узнал сильно позже, он не верил, что равновесие Нэша можно посчитать, и был уверен что я какой-то скамер. Забавно, что именно он потом стал одним из моих самых заинтересованных клиентов

38745-1674558876.png

Потом я написал Алексу ‘Kanu7’ Миллару, игроку из топ-10 мира, на форуме twoplustwo.

Я был новым пользователем на форуме и не мог отправлять другим личные сообщения, поэтому попросил аккаунт у своего друга Ивана Богатого. Написал Алексу, а потом начал тревожиться — вдруг он решит, что какой-то русский его пытается обмануть. Ещё я погуглил и выяснил, что ник Вани светился на каком-то хакерском форуме. Ну всё, думаю, пи***ц. К счастью, это не помешало нам с Алексом начать общение.

Я показал ему демо, и мы договорились, что он приведёт несколько друзей, которые тоже дорого играют, а затем мы обсудим эксклюзивность для их группы. Так и получилось – он привлёк друзей, я им все показал. Эта группа игроков была заинтересована, но до сделки и оплаты было еще далеко. А время поджимало.

Из интервью Алекса:

Еще до появления Pio у меня уже был доступ к закрытому солверу…

– Подожди, что ты имеешь в виду? Та самая «Dream Machine»?

– Да, наконец-то мы ее нашли. На самом деле, когда еще никто не слышал про солверы, я получил письмо на 2+2. Сначала не понял, что это? Может, какой-то спам? Там подробно описывалась работа солвера. Мы начали общаться, потом я собрал небольшую команду, и мы заплатили некую 6-значную сумму за эксклюзивные права на программу. Когда у меня появился софт, которого больше ни у кого не было, мне хотелось все время не только играть, но и работать. Все свое время посвящал покеру.

В покере всегда есть возможность делать что-то, чего другие игроки пока не делают. Например, во времена, когда был только Holdem Manager, я после каждой хедз-ап сессии по 4-5 часов изучал игру соперников, чтобы подготовиться к следующему матчу. Если этого не делать, другие игроки тебя обгонят.

К тому моменту я уже 7 месяцев занимался только программированием и переговорами, в покер не играл. Деньги у меня заканчивались.

В той же книге «Договориться можно обо всем» сказано – кто торопится, тот получает меньше. Я хотел получить больше, поэтому когда делал потенциальным клиентам предложение, и они уходили подумать, я не подавал виду, что скоро меня выселят из квартиры, не теребил их. При этом новым людям я не мог рассказывать про программу.

В итоге я торговался с клиентами за $200,000, не соглашался на их предложения и не торопил с ответами. У меня оставалось $6,000, при том что только оплата квартиры стоила $1,500 в месяц.

Я был занят мыслями о сделке 100% времени. Доходило до абсурда…

Комп стоял в спальне, а я сам лежал в гостиной и читал книгу. Колонки были включены на максимальную громкость, и когда приходил «Кульк!» от сообщения в скайпе, я бежал к компу.

Однажды я услышал «Кульк!», подошел, а сообщения не было. Подумал, что это странный глюк. Потом на следующий день вновь услышал звук, но сообщения опять не было. Я был сбит с толку. Позже нашел объяснение: на кухне стоял старый холодильник, и у него булькал компрессор. Обычно эти звуки невозможно перепутать, но я был максимально чувствительно настроен на сообщения в скайпе, и все похожие звуки интерпретировал как нотификации.

Со скайпом была еще одна забавная история…

Трутеллер, несмотря на свою известность, скрывал свою личность, почти ни с кем не общался, и никто даже не знал, как его зовут. Мы с ним общались по скайпу, без видео.

Я регулярно демонстрировал свой экран по Teamviewer, а у скайпа была особенность, что как его ни настраивай, он все равно иногда выскакивал поверх всех окон. Это было опасно, потому что я оберегал конфиденциальность клиентов (в том числе потенциальных), и без обоюдного согласия им друг про друга не рассказывал. Поэтому я в скайпе переименовывал всех в разные русские имена. Трутеллера переименовал в Тиму (первое что пришло в голову, потому что первая буква одинаковая).

Как-то раз показываю ему очередную версию программы, и он случайно видит, как я его записал в скайпе.

Трутеллер: «А разве я тебе говорил, как меня зовут?»

Я: «Нет…»

Повисает пауза на 2 секунды

Трутеллер (улыбаясь): «Ладно, будем знакомы».

Он понял, что спалился, и что я это тоже понял.

Сделку мы продумывали долго. Проблем была куча.

Проблема 1: Клиенты боятся, что я возьму деньги за эксклюзивность, а потом продам кому-то еще. Такие истории реально иногда происходят.

Решение: Тут остается просто поверить разработчику, поддерживать контакт с другими игроками, и платить по месяцам, а не всю сумму сразу.

Проблема 2: Я боюсь, что клиент заплатит за себя, а будет делиться программой с друзьями. У любого профессионального игрока в покер, как правило, есть 1-2 напарника, с которыми они обсуждают стратегию. С чужими делиться опасно, потому что они же потом за столами обыграют. Но если ты придумал или нашел что-то новое и интересное, то не поделиться с напарником нереально.

Решение: Я с самого начала это понимал, и напарников каждого клиента мы изначально включали в сделку. Это еще удобно тем, что у клиента будет с кем обсудить стратегию, кроме меня

Проблема 3: Если заплатить все сразу, то у клиента рычагов влияния на меня не остается, а апдейты наверняка будут нужны. А если платить по месяцам, то клиент за первые три месяца всю стратегию выучит, и дальше платить не будет.

Решение: оплата по месяцам, но первые месяцы дороже последних.

В апреле я договорился на сделку с группой из 6 игроков во главе с Алексом Милларом, а также отдельно с Трутеллером. Они знали о наличии других участников в сделке, но знакомиться не хотели.

Они получали эксклюзивный доступ к программе. Моё вознаграждение составляло $200,000 за полтора года, с неравномерной оплатой по месяцам. $10,000 в конце первого месяца, за следующие несколько месяцев по $15,000 и потом по убывающей.

Логика была такая: в первый месяц они знакомятся с программой и перепроверяют, что все сходится и разумно выглядит. При этом эксклюзивность они уже получают, поэтому совсем бесплатно месяц им давать было бы несправедливо.

38754-1674564310.jpg

Через пару дней после заключения сделки мне пишет Рауль, один из клиентов, и просит добавить какую-то фичу в интерфейс.

Интерфейс, конечно, был тогда абсолютно базовый. Уже спустя годы мы поняли, что интерфейс еще важнее, чем алгоритм, потому что удобство занятий критично.

Я: «Первый месяц у нас тестовый, когда вам все понравится и заплатите за него, я продолжу разработку».

Рауль: «Ок, сейчас переведу», и кидает мне на Moneybookers свою долю от оплаты за первый месяц – $2000.

Я: «Фичи я делаю для всей группы, поэтому оплата должна быть за всю группу»

Рауль: не отвечает на сообщение, просто кидает еще $8000

Было приятно увидеть реальные деньги на счету и почувствовать, что человеку не терпится продолжить со мной работать.

Рауль вообще был самым большим фанатом моего солвера. После очередного апдейта с удобными фичами для игры против солвера, Рауль улетел на две недели на какой-то остров, отрубил себе вай-фай, чтобы не отвлекаться, и тренировался с программой целыми днями.

Рауль тоже вспоминал покупку первого солвера в одном из интервью.

– Расскажи про покупку солвера в 2013-м. Как тебе вообще пришла эта идея в голову?

– За исключением двух игроков, все остальные были моими близкими знакомыми, с которыми мы вместе работали над игрой. Сам я о покупке даже не задумывался. Забавно, что чуть раньше разработчик написал мне тут в личке, но я его проигнорировал. Подумал, что это какой-то явный развод. Но потом солвер дошел до меня через третьих людей, подробности я даже не знаю. Был ошеломлен, когда увидел, что NLHE действительно можно решить.

Итоги

На основе солвера для холдема я в том же году дополнительно сделал солвер для омахи (еще одна популярная разновидность покера), который в итоге продал за $300,000. Вместе с $200,000 от холдема это принесло мне $500,000.

При этом про добытую кучу денег я никому не рассказывал, а главное – почти ничего не тратил, потому что жить хорошо я себе тогда не позволял. Это, конечно, был не очень здоровый подход.

Два года спустя, в 2015, на рынке появился мой первый публичный конкурент, другой солвер для No-Limit Holdem. Они продавали лицензии долларов по $500 за пользователя. Я не стал ввязываться в борьбу за копейки и сфокусировался на других проектах.

Сам факт посчитанного мною равновесия Нэша в покере вызывал радость и гордость. Во-первых, эта задача висела у меня открытой в течение 4 лет. Во-вторых, всё профессиональное комьюнити игроков в покер годами размышляло про оптимальную стратегию и пыталось приблизиться к ней, а у меня (и только у меня) появился окончательный ответ.

Я осознал, что создавать сложные программы мне интереснее, чем играть в покер. Дополнительным источником гордости для меня было то, что этот бизнес я создал полностью в одиночку, заработав за год в 8 раз больше, чем в предыдущий.

С тех пор, кроме солверов, я занимался разработкой покер-рума, инструментов для трейдеров и инвестициями.

Мои клиенты, сильнейшие в мире игроки в покер, с которыми у нас были изматывающие дискуссии в попытке договориться об условиях, в итоге стали моими друзьями. Мы продолжаем работать вместе, а уровень доверия, которого мы достигли, стал основой нашей дружбы и совместного бизнеса.

В следующих статьях я расскажу про техническую историю создания солвера и другие бизнес-приключения. Чтобы следить за следующими публикациями, подписывайтесь на мой Телеграм-канал.

Особая благодарность Ивану Богатому, без помощи которого я бы не записал эту историю.

Иван много лет вдохновлял меня своими эпичными публикациями про свои дерзкие и глубоко технические приключения: Иван сделал первый в мире фронтран на блокчейне, взломал криптовалюту Grin, прочитал лекцию о своей работе в Google AI Research.

Иван рассказывает про свою яркую карьеру исследователя/предпринимателя/инвестора в Кремниевой Долине с технической стороны в Твиттере, а с личной стороны – в Телеграм-канале, подписывайтесь и там, и там.

Спасибо Андрею Сомову за фотографии.

Спасибо Илье Лауту, Андрашу Густи, Сергею Бартунову, Тимофею Кузнецову, Дарье Фещенко, Екатерине Луриной, Александру Еленскому, Илье Городецкому, Дмитрию Филонову и Андрею Шеломенцеву за помощь в работе над статьей.