Data Adventures

266
Статистика
Статистика
266
Статистика темы
  • Популярность
    Топ-378
  • Постов
    690
  • Просмотров
    108,154
  • Подписок
    266
  • Карма автора
    +5,160
Лучшие посты автора
Лучшие посты читателей
1 2 3 35
Какие темы вам наиболее интересны?
  • MTT
    25%
    13
  • NLH cash
    25%
    13
  • Omaha
    13%
    7
  • Spins
    4%
    2
  • "Философские"
    34%
    18
  • Привет, уважаемое комьюнити

     

    меня зовут Дмитрий, в покере давно (больше 15 лет). Начиналось всё достаточно забавно, мы студенты математики пили портвейн 777 и после пар (а иногда в вместо) играли в карты на заднем дворе общаги на детской площадке. называли эту игру party poker, просто потому что единственный чувак, который знал правила холдема уже играл иногда онлайн и делал это на party poker. Я долгое время относился к покеру как к хобби, даже когда тратил примерно 1/3 своего времени на игру помимо основной работы. Так как я программист с математическим бэкграундом на покере мне было гораздо веселее обучаться чему-то новому, всегда можно найти какие-то истории, которые так или иначе приводят к деньгам, можно кому-то продать и т.д. Очень сложно начать изучать какой-либо data science на данных, на которые тебе абсолютно насрать. А вот когда это становится более жизненной историей и успех закрепляется живыми долларами, процесс идёт гораздо легче. Перестал воспринимать как хобби только когда основательно задолбался работать в электроэнергетике, решил несколько своих контактов как-то монетизировать, и начал работать на одну ныне не существующую школу в качестве аналитика данных. Был немного резкий шаг и многое осталось позади. В конце концов я дослужился до главного программиста в одной московской конторе на 200 человек, имел непыльную работу, на которой меня ценили. Но как-то очередной раз отдыхая на берегу океана я подумал, что отдыхать не люблю. Ну, вернее я уставать не люблю. Мне не нравится момент психологического выгорания, когда я говорил себе, ну всё, мне нужен отпуск. поеду куда-то в европу или ещё чего-то подобное.  Если для того чтобы сесть работать мне нужно себя как-то переломать и заставить, то я как-будто бы делаю что-то противоестественное. И никакие деньги к сожалению для меня никак не делали этот момент легче. 

     

    через 2-3 года игры совмещаемой с продажей своих услуг в анализе данных и около того я понял, что мой $/час как у программиста существенно выше, чем в покере. Да и диспы никакой. Много с кем успел поработать, из последнего - PLO Trainer для Jnandez. Десктопная его часть вся моя. Но я всегда был многостаночником и делал разное даже когда какая-то одна контора полностью выкупала моё время. Накопилась приличная база кода и ещё больше нереализованных идей. Надеюсь себя как-то мотивировать продолжать дальше изучать ML. В качестве промежуточной цели хочу повесить себе бейджик на linkedin что я прошёл какой-то крупный курс например от Andrew Ng. Ну и имея хоть какой-то фидбек от вас я смогу скорректировать свой план исследований, всегда интересно работать с кем-то, а не просто делать что-то прикольное и сохранять на диске. 

     

    Данный блог я воспринимаю как исследовательский дневник. Пишу большей частью для собственной мотивации развиваться в data science и находить что-то интересное в покерных данных. Постараюсь писать по возможности часто, но качество у меня в приоритете над количеством.

     

    МТТ серия 1 2 3 4 5 6 7 8 9 10

    Философская серия 1 2

    Омаха 1 2 3 4

    Алгоритмы, математика 1 2

    Спины 1

    Солверы 1

    Холдем 1

    Развлекательное 1

    Сообщение отредактировал SnowBeaver - 24.5.2024, 19:11
    Ответить Цитировать
    1/328
    + 48
  • Решился начать с серии статей по МТТ. На текущий момент на рабочем столе есть задачка, у которой лояльный заказчик, который не против в целом если я результатами поделюсь с широкой аудиторией. Задачка поставлена достаточно просто - хочется построить адекватные чарты для МТТ с анте (потом возможно прогнать весь анализ для МТТ без анте). Надо сразу сказать, что МТТ я профессионально не играл никогда, но поиск чартов и сим-паков довольно удручает. Мне реально нужна обратная связь, если вы подскажите мне что я делаю не так, что можно делать лучше и т.д, то я готов буду поделиться с вами более детальным результатом. Типа в общий доступ выложу пару стеков, а вам скину всё с шагом 5бб. И да, майнинг я пока купил довольно небольшой чтобы было на чём код писать, потом когда доберусь до отсчёта эксплойта, то мне потребуется большой объём рук. Если у кого-то уже есть, то тоже welcome. 

     

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

     

    Я немного погуглил что есть на тему чартов. Повторяюсь, очень буду рад если уже существуют адекватные, мне будет проще отталкиваться от них и анализировать насколько они хороши, чем делать свои с нуля. Первое что удалось нагуглить это вот это https://pokercoaching.com/tools/downloadable-preflop-charts/ что в них хорошо - совершенно бесплатно мы получаем какую-то инфу по 75, 40, 25 и 15бб. Уже неплохо, можем сказать спасибо парням. 

     

    гуглим дальше, находим памятник человеческой жадности 

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

     

    "Such as UTG+1 raises, BTN 3-bets, how should you proceed from the big blind including fold range/call range/raise range and the GTO frequencies (many hands will mix)." - я б на такое сказал, что после открытия из UTG+1 и 3бета с BTN у меня не будет call range на блайндах :) просто из опыта в GTO, но ребятам виднее. 

     

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

     

    из брезгливости ссылку на сайт не привожу :)

     

    Далее для разнообразия идём в профессиональный сегмент и находим пак на https://www.monkerguy.com/

     

     

    за уже адекватные деньги предлагают купить пак с шагом 5-10бб и есть даже дипы в 200 и 300. я правда не знаю нахрена они в мтт, где средний стек обычно 40бб, я б остановился на отметке 100. Но наверное они хорошие сервера использовали для этих расчётов. Видим тут что они обещают лимпы с баттона начиная со стека в 20ББ. И явно подобранный GTO-шный сайз у них, скорее всего тестировали разные и выбрали самый частый, что как-бы тоже работа. Смотрим что у нас в чартах от pokercoaching

    в 15 бб как видим лимпы с баттона отстутствуют. И вообще в pokercoaching нет разделения на сайзы, нет какого-то анализа какой оптимальный. Но от monkerguy я халтуры и не ждал, а бесплатному чарту в EV не смотрят. 

     

    Что я хочу сделать по шагам:

    1. Проанализировать сайзы открытия с разных позиций

    2. Посчитать как можно больше лимпов и реакции на них. 

    3. На купленном майнинге проанализировать во первых самые популярные стеки для рассмотрения (вангую что это 30,40), а потом проанализировать статистики открытия, 3бетов и ещё чего-нибудь что можно потом загнать в солвер и отсчитать эксплойт

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

    Ответить Цитировать
    2/328
    + 11
  • Закончилась моя первая порция расчётов на серверах, список чего я пока сделал выглядит вот так

    У меня сейчас нет в наличии свободных серверов с большим количеством оперативки, делаю на 96-256 все расчёты. Имхо пока хватает, если добавлю, то можно поднять детализацию, но для черновика норм. 

     

    Снимаю шляпу перед el_supertramp. Комрад мне рассказал таки про gtowizard. Я такой олень ничего про этот сервис не знал, наверное потому что последние 3 года в основном занимался омахой. Все остальные источники чартов выглядят куда менее презентабельно и качественно, поэтому если мне будут нужны референсы на чужую работу, то буду сравнивать с этим сервисом. 

     

    Что самое важное на мой взгляд надо понимать при сравнении своих расчётов с какими-либо другими:  

     

    - итоговые проценты и стратегии будут очень сильно зависеть от даже небольших вариаций в дереве если мы будем смотреть отдельные руки. Также они будут зависеть от методики расчёта (на каком I/N и volatility остановились, какой солвер использовали и т.д.)

     

    - GTO чарты это не про то как надо играть. GTO чарты это про то как можно играть чтобы быть неэксплуатируемым. (baseline решение)

     

    и в связи с этим можно сказать, что если мы в какой-то момент арендовали какой-то лютый сервер с 5Tb оперативки и пересчитали какой-то популярный пак с более сложным деревом и с большей "точностью", то это не значит что наш расчёт объективно лучше и имеет более высокую ценность для игры по нему. Так же это не значит, что надо бежать и лихорадочно сверять свои handhistory с популярными gto решениями. Сравнение нужно только для развития понимания процесса и решения своих задач с этим новым знанием, а это творческий процесс. Далее просто приведу пример своего творчества :)

     

    1. Сайзы

     

    Изначально я знал сайзы открытия из паков (и gtowizard), но не стал их использовать, считал по умолчанию всё с 3мя сайзами 2,3,4 bb. например для стека 50бб открытие из UTG выглядит так

    minraise 17.2 (gtowizard 17.7), остальные рейзы пренебрежительно малы. где-то к MP появляется сайз в 3бб, но тоже в пренебрежительно малом количестве и типа частоты рук не больше 12%. Начиная с BU уже появляется микс сайзов, который не хочется игнорировать

    здесь мы видим, что солвер почти 10% нашего диапазона предпочитает разыгрывать не минрейзом. при желании можно выделить руки которые имеют высокий процент в этих сайзах и сделать чарт, где эти руки будут полностью уходить на например в 3.5бб сайз. Но основная ценность отсчёта нескольких сайзов для меня это возможность получить чарты с реакцией на эти сайзы. Например если hero на SB, то какой у него GTO-ответ на минрейз, рейз 3 и рейз 4 с баттона? Gtowizard не даст такой ответ и рисует что на ставку в 2.3bb нужно играть 3бет в 15% случаев. Мой же расчёт показывает что на 2бб - 3бет будет 20%, на 3бб - 15%, а на 4бб - 10%. Т.е. 3бет здесь очень чувствителен к сайзу открытия. 
     

    3bet с SB vs 2bb & 4bb open from BU

     

    По сути если оп лепит вам рейз нестандартного размера, то вы ему уже не отвечаете по GTO если у вас чарт этого не учитывает. Это не то чтобы проблема, но думаю прикольно понимать динамику, какие руки уйдут из 3бет диапазона при увеличении сайза, а какие добавятся. Также интересно развить знание как играть потив чарта gtowizard. Раз уж он сейчас самый качественный на рынке и более менее стандартен, то можно получить дополнительный edge помечая игроков, которые играют по статам на него похожим (надо ещё знать эти статы) и вот так вот аджаститься делая им сложно на блайндах, где они и так имеют наиболее сложное решение. 

     

    2. Лимпы

     

    Я хотел найти границы лимпа по разным стекам и позициям, а также разумеется я хотел иметь на них реакцию. Gtowizard выбрал для себя границу в 25bb, выше они видимо лимпов не ждут. Ну или оперативной памяти надо существенно больше чтобы своё дерево построить с лимпами выше. Не знаю их конкретных затруднений, у меня с довольно ограниченными ресурсами это получилось до стека 40бб, и я предполагаю, что и выше он тоже имеет смысл. Особенно на поздних позициях в играх с анте. Если что, то в 40bb по разным деревьям у меня получалось около 10% на лимп с BU и CO. На MP не хватило оперативки уже не хватило, но я делаю черновик. Если захочу влить реальные ресурсы, то почти наверняка проделаю такую работу. Почему это считаю вообще важным? Во первых это любопытно. Можно сложных составах играть сложно. Изучить как играть постфлоп в этих диапазонах в лимппотах и ломать об одно место регов мтт, т.к. они выше 25 лимпить не будут, а на лимп с MP будут нотс писать, что ты фиш. Во вторых - ну поле лимпит же. Можно научиться играть если не против реального диапазона лимпа поля, то хотябы против идеального. Скорее всего ваша игра будет лучше, чем этого вообще не уметь. 

     

    Дальше я начал сравнивать что насчитал в коротких по лимпу у себя и у GTO wizard, и тут меня слегка накрыло. What? где ошибка, что я сделал не так? В моих расчётах выстраивается тенденция, что есть определённый стек, где лимп максимальный, а дальше вверх и вниз по размеру стека значения падают. По разным позициям причём по разному. А в gto wizard первый скромный лимп в 2% мы видим с CO в 25бб, а дальше по нарастающей. чем короче стек, тем больше лимп до какого-то момента, где становится просто пуш. Я разумеется стал искать ошибку у себя, т.к. я эту работу делаю в первый раз, а у парней рабочий продукт. Я взял их 10бб дерево и мне пришлось полностью повторить его сайзы и действия у себя, ребята в дискордовом чатике проигнорили мою просьбу поделиться деревом для манкера, в котором они очевидно эту работу проделали :)

     

    c UTG в 10ББ в визарде мы видим вот такую картину. Открытие с EP QQ+, A6s и ещё по мелочи за лимп, в общей сумме 4.4%

    У меня же, хотя такие руки есть в диапазоне, но они всегда меньше 50%. и общий процент кола в 1% меня бы мотивировал вообще так никогда не играть. я тупо не смогу замиксовать свои АА и буду очень уязвимо играть

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

    Сидел медитировал, а что же не так с моим. Особенно люблю это чувство на пороге открытия :) Потом вспомнил, что я не во все позиции добавлял лимп, когда делал реплику расчёта gtowizard. Если вы там сделаете лимп из EP, то потом будет до CO только хардкор, только изолейт, никакого оверлимпа

    вот оно чё )))

    Удалил у себя соответствующие линии, и получил тот же расчёт с высоким UTG лимпом. 

     

    Не хочу высказываться резко о способе упрощения у gtowizard, но я бы в расчёте с лимпами сэкономил бы на чём-то ещё, а не на этом (например на дереве постфлоп, которое можно упросить до оллина и фолда). Всё же картину сильно сдвигает в сторону того, что на UTG нормально лимпить приличный %. А на деле же оверлимпы есть как в GTO, так и реальной игре. И они с каждым добавленным лимпом только увеличивают свой % в этом стеке (и других). Ну и да, авторы чарта отобрали у игрока лимп с трёх позиций, как и реакцию на него. А так то да, если я знаю что после моего лимпа с UTG я не получу оверлимпов и всё что останется опам это меня рейзить, то QQ+ конечно отличные руки для лимпа.

     

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

     

    Получился уже лонгрид, жду комменты здесь и личку. Надо ли мне быть более подробным или более лаконичным? Следующий раз уже собираюсь по полной испачкать руки и залезть в майнинг. Начать сравнивать реальность с GTO и пытаться к этой реальности подстроиться с помощью солверов.

    Сообщение отредактировал SnowBeaver - 30.6.2023, 14:45
    Ответить Цитировать
    3/328
    + 27
  • Думаю есть смысл сделать более ветвистое дерево префлопа и чуть ограничить постфлоп (но скорее в ОР ветке а не лимп) + больше всего смысла разбирать именно ранние позиции и стеки 30-40ББ (в 10бб просто потолок эксплойта низкий даже если идеально эксплойтить)

    Ответить Цитировать
    1/2
    + 3
  • SnowBeaver @ 30.06.23 

    - GTO чарты это не про то как надо играть. GTO чарты это про то как можно играть чтобы быть неэксплуатируемым. (baseline решение)

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

     

    SnowBeaver @ 30.06.23 

    А в gto wizard первый скромный лимп в 2% мы видим с CO в 25бб, а дальше по нарастающей. чем короче стек, тем больше лимп до какого-то момента, где становится просто пуш.

     

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

     Рост лимпа с уменьшением стека происходит вследствие уменьшения SPR и увеличения реализации эквити ранее слишком маргинальных рук, которые теперь мотивированы заходить в банк задёшево (лимпом). Также с уменьшением SPR у сильной части диапазона появляется больше мотивации слоуплеить, параллельно балансируя низ диапазона лимпа, не давая оппу слишком часто изолейтить, выбивая много рук.

     Все эти "исследования" не более чем мартышкин труд, если не понимать логику действий солвера. Намного полезнее для понимания покера (теоретического) посмотреть ВОДы какого-нибудь Инвокера или Бумбака.

    Ответить Цитировать
    1/1
    + 0
  • BootieInUFace @ 01.07.23 

    Думаю есть смысл сделать более ветвистое дерево префлопа и чуть ограничить постфлоп (но скорее в ОР ветке а не лимп) + больше всего смысла разбирать именно ранние позиции и стеки 30-40ББ (в 10бб просто потолок эксплойта низкий даже если идеально эксплойтить)

    Ага, ок. принял. Мне ещё предстоит поизучать данные чтобы как раз сфокусироваться на той части игры, где больше всего разыгрывается денег и там где поле сильнее всего уходит от GTO чтобы эксплойт построить. И я пока очень слабо представляю "потолок эксплойта". Иногда покер подбрасывает сюрпризы в анализе данных, где получаешь неожиданно больше ев чем ждёшь.

    Ответить Цитировать
    4/328
    + 0
  • Femenist @ 01.07.23 

    Одно другому не мешает. 

    всегда лучше знать чем не знать, конечно :)

    Ответить Цитировать
    5/328
    + 0
  • Femenist @ 01.07.23 

    Очень часто ГТО (включая префлоп) бывает про то как надо играть, например, против неизвестного или сильного рега, которого не видишь как эксплойтить.

    Это вопрос ресурсов. Если ты игрок без команды поддержки, которая пишет софт и анализирует данные, то да, максимум что ты можешь сделать это использовать GTO базу из публичного источника. Я же типа предлагаю инструменты перейти на следующий уровень. Играть не против условно незнакомого игрока, а против поля в целом. И против регов этого поля. Если проанализировать скажем базу МТТ в 20-30М раздач, то у тебя неизвестный игрок будет иметь определённые очертания, которые можно и нужно эксплойтить. Это сложно, но интересно.

    Ответить Цитировать
    6/328
    + 0
  • Femenist @ 01.07.23 

    Рост лимпа с уменьшением стека происходит вследствие уменьшения SPR 

    В данном случае я типа сравнил было-стало при уменьшении сложности дерева и увидел, что при более сложном дереве там лимпа почти нет где его gtowizard нарисовал. И да, увеличение лимпа и значение SPR не имеет прямо таки прямой зависимости, грубо говоря есть игры где уменьшая стек ты вообще теряешь лимп из диапазона. Я пока такую тенденцию наблюдаю в моих расчётах, но я ещё раз это проверю. Пока у меня по сути черновик.

    Сообщение отредактировал SnowBeaver - 1.7.2023, 10:51
    Ответить Цитировать
    7/328
    + 0
  • Femenist @ 01.07.23 

     Все эти "исследования" не более чем мартышкин труд, если не понимать логику действий солвера. Намного полезнее для понимания покера (теоретического) посмотреть ВОДы какого-нибудь Инвокера или Бумбака.

    Моё мнение такое - у солвера нет логики :) Есть определённые закономерности, которые можно наблюдать, но с какого-то момента солвер просто раскидывает данные в балансе без всякого паттерна. Я может однажды доберусь до серии статей на эту тему. Иногда бывает легко объяснять готовый расчёт логикой, но практически невозможно предсказать что будет если изменить условия, т.е. описание просто описывает наблюдение. Те кто пишут видос расказывая про логику солвера просто нашли благодатные уши кто им за это платит интерпретируя результаты по факту используя человеческий подход. Понятно, что этим необходимо заниматься, но тут есть свои ограничения метода. Так уж случилось, что некоторые авторы видео частенько привлекают меня для анализа данных. Т.е. сначала идёт анализ данных профессионалами, а потом именитый тренер продаёт это аудитории, а не наоборот профессионалы учатся у тренеров. Типа тут свой конвейер.

    Ответить Цитировать
    8/328
    + 3
  • Сегодня я расскажу про важнейший инструмент покериста, а именно про SQL. Буду делать это на примере базы pokertracker и купленной базы MTT со старзов. Если вам не интересно постигать SQL, то просто не открывайте соответствующие спойлеры где указано (sql)

     

    План таков

     

    0. Что у нас на старте, что значит эффективный стек в MTT.

    1. Где деньги, Лебовский?

    2. Первые мысли по игре в целом

    3. Сравниваем с GTO

     

    Начали

     

    За скромные 11$ я купил майнинг на популярые старзовые турниры. Выбрал специально без баунти, классические гарантеды, из которых наверное многие МТТ-шники свой турнирный график набивают. 

    Order: Pokerstars WCOOP Edition: Big $55 [18947]
    Pokerstars Big $55 - Guarantee Boost! [12863]
    Pokerstars Bigger $55 - Guarantee Boost! [13832]
    Pokerstars Big $55 [11726]
    Pokerstars Bigger $55 [11999]
    Pokerstars WCOOP Edition: Big $44 [18984]
    Pokerstars $44 NLHE [Turbo] [11817]
    Pokerstars Big $44 [11794]
    Pokerstars Hotter $44 [12013]
    Pokerstars Hot $44 [11730]
    Pokerstars $44 NLHE [6-Max, Turbo] [11831]
    Pokerstars Bigger $44 [11873]
    Pokerstars Hotter $33 - High Roller Club Ticket Drop! [13511]
    Pokerstars Summer Series 49: $33 NLHE [Turbo] [13557]
    Pokerstars Summer Series 70: $33 NLHE [8-Max] [13576]
    Pokerstars Summer Series 79: $33 NLHE [6-Max, Turbo] [13583]
    Pokerstars Summer Series 85: $33 NLHE [13588]
    Pokerstars Summer Series 107: $33 NLHE [6-Max] [13617]
    Pokerstars Summer Series 111: $33 NLHE [13621]
    Pokerstars Summer Series 121: $33 NLHE [Turbo] [13632]
    Pokerstars Summer Series 132: $33 NLHE [Turbo] [13643]
    Pokerstars Bigger $...


    Amount: 676843 Hands

    Price: $11

    На деле оказалось даже 812642 рук, данный продавец часто косячит в деталях, зато у него low price. Мне для черновика такого объёма рук достаточно. Чтобы реально строить стратегии, анализировать диапазоны и т.д. этого конечно критически мало. Но думаю общие тенденции поля можно проанализировать и на такой крохотной базе, ну и к тому же запросы будут отрабатываться за секунды на рабочем ноуте и мне не придётся тратить время на оптимизацию.

     

    Далее нужно определиться, что мы считаем эффективным стеком в турнире. Это не так очевидно, как кажется на первый взгляд. У трекера есть на это своя метрика, которую оно уточняет для всех игроков в процессе действий на префлопе. Возможно она самая адекватная, но давайте попробуем другие. Буду считать по-разному и смотреть метрику по всей базе. В итоге выберу только одну для дальнейшего анализа, но оставшиеся нам возможно ещё пригодятся

     

    average short - если за столом коротыши, то берётся самый короткий коротыш в раздаче (sql)

    select round(avg(s.amt_short_stack *1.0 / b.amt_bb),2) as avg_short from tourney_hand_summary s
    join tourney_blinds b on b.id_blinds = s.id_blinds
    where b.amt_bb != 0

    = 22.97

     

    average effective - как считает pokertracker (sql)

    with avg_stacks as
    (select id_hand, avg(amt_p_effective_stack) as avg_stack from tourney_hand_player_statistics group by id_hand)

    select round(avg(a.avg_stack *1.0 / b.amt_bb),2) as avg_stack 
    from tourney_hand_summary s
    join avg_stacks a on a.id_hand = s.id_hand
    join tourney_blinds b on b.id_blinds = s.id_blinds
    where b.amt_bb != 0 

    = 40.42

     

    simple average - просто средний стек за столом (sql)

    -- average
    with avg_stacks as
    (select id_hand, avg(amt_before) as avg_stack from tourney_hand_player_statistics group by id_hand)

    select round(avg(a.avg_stack *1.0 / b.amt_bb),2) as avg_short 
    from tourney_hand_summary s
    join avg_stacks a on a.id_hand = s.id_hand
    join tourney_blinds b on b.id_blinds = s.id_blinds
    where b.amt_bb != 0 

    = 47.25

     

    med stack - медианный стек (половина стеков на столе больше, половина меньше этого размера) (sql)


    with med_stacks as
    (SELECT id_hand, percentile_cont(0.5) WITHIN GROUP (ORDER BY amt_before) AS med_stack
    FROM tourney_hand_player_statistics
    GROUP BY id_hand)

    select avg(a.med_stack *1.0 / b.amt_bb) as avg_short 
    from tourney_hand_summary s
    join med_stacks a on a.id_hand = s.id_hand
    join tourney_blinds b on b.id_blinds = s.id_blinds
    where b.amt_bb != 0 

    = 42.55

     

    average no chipleader - средний стек без учёта чиплидера (sql)

    with chip_lead as 
    (select id_hand, max(amt_before) as max_stack 
    from tourney_hand_player_statistics group by id_hand),

    avg_stacks as
    (select s.id_hand, avg(s.amt_before) as avg_stack 
    from tourney_hand_player_statistics s
    join chip_lead cl on cl.id_hand = s.id_hand
    where cl.max_stack != s.amt_before
    group by s.id_hand)

    select round(avg(a.avg_stack *1.0 / b.amt_bb),2) as avg_short 
    from tourney_hand_summary s
    join avg_stacks a on a.id_hand = s.id_hand
    join tourney_blinds b on b.id_blinds = s.id_blinds
    where b.amt_bb != 0 

    = 40.08

     

    Какую информацию можно почерпнуть из этих чисел? Во первых у нас 2 оценки почти совпали, и трекеровская похожа на среднюю оценку без чиплидера. Дальше буду использовать трекеровскую, т.к. её проще считать. Во вторых - игнорировать игру против коротышей (или когда мы с коротким стеком) скорее всего нельзя, т.к. дофига раздач с коротышами и частенько эффективный стек в раздаче будет переключаться с условных 40бб на 23. Можно на этом моменте как-то дополнительно сфокусироваться.

     

    Где деньги?

     

    Ок, с тем, что будем называть эффективным стеком определились. Теперь давайте решим что будем считать целевой функцией. Тут есть определённая ловушка начать изучать в глубь ситуации, где мы играем чаще всего и начать анализировать соответственно в первую очередь средний эффективный стек. Информация про то, где мы проводим больше всего времени в мтт конечно нужна, но хотелось бы анализировать что-то более близкое к деньгам. Если выкинуть из рассмотрения ICM (для которого у меня всё равно в майнинге нет данных), то будем считать что на момент старта турнира мы обменяли какое-то количество денег на какое-то количество фишек. И выигранные фишки для нас эквивалентны выигранным деньгам. Тогда о стоимости ситуации я смогу судить по тому как много мы выигрываем \ проигрываем фишек в какой-то игровой момент в среднем. 

     

    меня будет интересовать средний пот в ситуации, количество рук по данной ситуации и собственно expected won трекеровский суммированный по модулю. Мне не важно в данном случае проигран пот или нет, важно понять объём движения фишек, который создаёт игрок. Все эти значения мне нужны в процентном выражении, т.е. надо поделить ещё на общие суммы по данным показателям за всю базу. Построим данные показатели с группировкой по количеству игроков за столом. значения столбов в процентах (в сумме 100 по каждому столбцу кроме первого).

    (sql)

    with ttl as
    (select sum(amt_pot) as total, count(*) as hh from tourney_hand_summary),

    exp_wl as
    (select id_hand, avg(abs(amt_expected_won)) as exp_won from tourney_hand_player_statistics group by id_hand),

    total_exp_wl as
    (select sum(exp_won) as total_exp_won from exp_wl)

    select cnt_players, round(sum(amt_pot)*100.0/t.total,2) as total_pot_share, round(count(*)*100.0/t.hh,2) as hands_share,
          round(sum(e.exp_won)*100.0/et.total_exp_won,2) as exp_won_share
    from tourney_hand_summary s
    cross join ttl t
    join exp_wl e on e.id_hand = s.id_hand
    cross join total_exp_wl et
    group by cnt_players, t.total, t.hh, et.total_exp_won
    order by 1

    Можно видеть как непропорционально распределены усилия игрока по сравнению с экономическим эффектом. Если слегка округлить, то мы по сути наблюдаем классический принцип Парето, где 80% рук (7-8 игроков) нам приносит 20% от expected won share. Всё как в жизни. Но тут возможны некоторые искажения майнинга, т.к. я всё же думаю что ХА игр должно быть в среднем поменьше чем 2%, так что возможно на большей выборке данных будет более аккуратная картинка. А то получается, что треть всего что зарабатывает игрок в MTT он делает в ХА. 

     

    Далее для анализа я отброшу короткие столы и сфокусируюсь на столах с 4+ игроков. Для этого я построю expected share по всем уровням effective stacks, используя для этого показатель из трекера и мой expected won. 

    (sql)

    with avg_stacks as
    (select id_hand, avg(amt_p_effective_stack) as avg_stack, min(amt_before) as short_stack, avg(abs(amt_expected_won)) as exp
    from tourney_hand_player_statistics group by id_hand),

    total_exp as
    (select sum(exp) as total_exp from avg_stacks),

    shorts as
    (select round(s.avg_stack / b.amt_bb) as avg_stack, round(avg(s.short_stack / b.amt_bb)) as short_stack
    from avg_stacks s
    join tourney_hand_summary ts on ts.id_hand = s.id_hand
    join tourney_blinds b on b.id_blinds = ts.id_blinds
    where b.amt_bb != 0
    group by round(s.avg_stack / b.amt_bb)),

    subq as
    (select round(a.avg_stack *1.0 / b.amt_bb) as avg_stack, 
          round(sum(a.exp)*100/tt.total_exp,2) as exp_share, count(*) as hands
    from tourney_hand_summary s
    join avg_stacks a on a.id_hand = s.id_hand
    cross join total_exp tt
    join tourney_blinds b on b.id_blinds = s.id_blinds
    where b.amt_bb != 0 and s.cnt_players > 3
    group by round(a.avg_stack *1.0 / b.amt_bb),tt.total_exp
    having count(*) > 1000
    order by 1)

    select q.avg_stack, s.short_stack, q.exp_share, q.hands from subq q
    join shorts s on s.avg_stack = q.avg_stack
    where q.exp_share > 0

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

    по оси x здесь эффективный стек. а по y общая сумма движений фишек игрока. Можно наблюдать, что большая часть игры проходит примерно в 20-30бб, дальше идёт спад. т.е. надо понимать, что при обучении можно выставить приоритеты и если мы хотим играть такие турниры, то наверное стоит очень сильно позадротствовать в стеках 15-35, и совершенно проигнорировать то что происходит в 50+, т.к. там хоть и есть игра, но она на общий результат влияет крайне слабо. 

     

    Причём с точки зрения количества наигранных рук +/- тоже самое здесь

    но если смотреть только на руки, то можно подумать, что самый важный стек у нас где-то около 30, а дальше типа уже не так важно. Но на предыдущем графике мы видим, что денег в 30 разыгрывается столько же сколько в 20. А в 40 вообще уже в разы меньше. А на графике рук у 20 и 40 примерно одинаковые значения. 

     

    Далее если мы построим рядом графики effective stack и short stack

    то увидим, что short относительно не сильно отклоняется от effective в глубоких, зато очень сильно отличается в коротких. если увеличить картинку в 0-20

    то видно, что в 20ББ коротыш сильнее всего будет отличаться от среднего (и/или эффективного) стека и надо скажем играя в 20 бб хорошо понимать игру в 10 чтобы переключаться.

     

    Что там с GTO

     

    Попробую сравнить с моими солверными расчётами реальную игру из базы. Для этого посчитаю 3 простые статистики

     

    Raise first in (RFI), First limp (limp), Limp with previous limpers (limp+

     

    И ограничусь для иллюстрации одним стеком в 20bb. В базе сделаю выборку 19-21 чтобы получить побольше рук.

    что мы имеем в итоге? Поле в целом лимпит мало и делает это в основном на SB. Если сравнивать с солвером, то RFI на ранних слегка уже, чем в солвере, потом выравнивается. Но вот лимп в солвере в этом стеке существенно выше. Можете если хотите пойти за референсными значениями в gtowizard, я же просто возьму в своих расчётах. У меня лимп на баттоне аж 19%, на CO - 5.5%, HJ - 4.2%

    SB в игре с анте в стеке 20ББ в солвере вообще почти не фолдит

    а в базе игрок на SB выбрасывается приличным %. 

     

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

     

    Что с сайзами?

     

    Я не закладывал опцию открытия оллином в данном стеке, но в gtowizard есть, и начинается такой мув с BU и 5%. на SB 10%. посмотрим какие сайзы у поля. 

    (sql)

    with hands_filter as 
    (select st.id_hand, avg(amt_p_effective_stack)/b.amt_bb as avg_stack
    from tourney_hand_player_statistics st
    join tourney_hand_summary sm on sm.id_hand = st.id_hand
    join tourney_blinds b on b.id_blinds = sm.id_blinds
    where sm.cnt_players > 3 and b.amt_bb != 0
    group by st.id_hand, b.amt_bb
    having avg(amt_p_effective_stack)/b.amt_bb between 19 and 21),

    sizes as
    (select p.position,        
          round(avg(s.amt_p_raise_made * 1.0 / b.amt_bb),2) as avg_size,           
       round(sum(case when round(s.amt_p_raise_made * 1.0 / b.amt_bb,1) between 2 and 2.2 then 1 else 0 end)*100.0/count(*),2) as x2,
       round(sum(case when round(s.amt_p_raise_made * 1.0 / b.amt_bb,1) between 2.3 and 2.6 then 1 else 0 end)*100.0/count(*),2) as x25,
       round(sum(case when round(s.amt_p_raise_made * 1.0 / b.amt_bb,1) between 2.7 and 3.2 then 1 else 0 end)*100.0/count(*),2) as x3,
       round(sum(case when round(s.amt_p_raise_made * 1.0 / b.amt_bb,1) between 3.3 and 3.6 then 1 else 0 end)*100.0/count(*),2) as x35,
       round(sum(case when round(s.amt_p_raise_made * 1.0 / b.amt_bb,1) between 3.7 and 4.2 then 1 else 0 end)*100.0/count(*),2) as x4,
       round(sum(case when round(s.amt_p_raise_made * 1.0 / b.amt_bb,1) > 4.2 then 1 else 0 end)*100.0/count(*),2) as xbig        
        
    from tourney_hand_player_statistics s
    join hands_filter f on f.id_hand = s.id_hand
    join tourney_hand_summary ts on ts.id_hand = s.id_hand
    join tourney_blinds b on b.id_blinds = ts.id_blinds
    join lookup_positions p on p.position = s.position and p.cnt_players = 9
    where flg_p_first_raise and b.amt_bb > 0
    group by p.position, p.description
    having count(*) > 100)

    select p.position, p.description as pos_str, 
          round(sum(case when flg_p_open_opp and flg_p_first_raise then 1 else 0 end) * 100.0 / 
                sum(case when flg_p_open_opp then 1 else 0 end),2) as rfi, 
        round(sum(case when flg_p_open_opp and flg_p_limp then 1 else 0 end) * 100.0 / 
                sum(case when flg_p_open_opp then 1 else 0 end),2) as first_limp,
       round(sum(case when cnt_p_face_limpers > 0 and flg_p_limp and cnt_p_face_limpers > 0 then 1 else 0 end) * 100.0 / 
                nullif(sum(case when cnt_p_face_limpers > 0 then 1 else 0 end),0),2) as limp_w_other,              
          sz.avg_size, sz.x2, sz.x25, sz.x3, sz.x35, sz.x4, sz.xbig, count(*) as hands     
          
    from tourney_hand_player_statistics s
    join hands_filter f on f.id_hand = s.id_hand
    join tourney_hand_summary ts on ts.id_hand = s.id_hand
    join lookup_positions p on p.position = s.position and p.cnt_players = 9
    join sizes sz on sz.position = p.position
    group by p.position, p.description, sz.avg_size, sz.x2, sz.x25, sz.x3, sz.x35, sz.x4, sz.xbig
    having count(*) > 100
    order by p.position

    Основной сайз открытия здесь минрейз, но ставки больше 4х бб тоже очень часты (xbig), т.е. поле пихает куда как чаще, чем по GTO, это обязательно надо использовать. 

     

    Итого:

     

    - Я пока не знаю какой уровень ББ наиболее эксплойтный, но 20бб (и другие типа 15-40) очень сильно отличаются от солвера, а значит там вагон ЕV для эксплойта.

    - поле почти нихрена не лимпит

    - короткие стеки сильно влияют на игру. Наиболее ярко в районе 20бб эффективного стека. 

    - обучение скорее всего должно иметь жёсткий фокус на рабочем диапазоне стеков (15-40)

    ХА правит миром, и всё равно все бабки на финалке

     

    P.S. Не стоит воспринимать то что я написал как руководство к действию. Это просто мой рабочий процесс, в нём точно где-то будут ошибки, я скорее демонстрирую метод, чем какой-то работающий результат здесь. Я тут я просто делюсь способом смотреть на данные.

    Сообщение отредактировал SnowBeaver - 7.7.2023, 17:42
    Ответить Цитировать
    9/328
    + 34
  • Привет, прикольно ты сделал! Я правильно же понимаю, что после того как покертрекер построил базу по импорту рук - в ней уже появляются готовые таблицы со всеми посчитанными трекером статами, к которым мы просто обращаемся sql запросами? Тоже хотел таким позаниматься, но подумал, что это будет намного сложнее - и забил 

    Ответить Цитировать
    1/17
    + 0
  • https://www.pokerstars.com/en/poker/room/prohibited/

    Ответить Цитировать
    1/2
    + 0
  • leksafim @ 08.07.23 

    Привет, прикольно ты сделал! Я правильно же понимаю, что после того как покертрекер построил базу по импорту рук - в ней уже появляются готовые таблицы со всеми посчитанными трекером статами, к которым мы просто обращаемся sql запросами? Тоже хотел таким позаниматься, но подумал, что это будет намного сложнее - и забил 

    Всё правильно понял, это охрененный инструмент для анализа. Разобраться очень несложно с pokertracker, т.к. в самой программе есть настройка стат и можно понять какая стата в какие столбцы попадает. Получается профессиональный инструмент в котором можно сделать почти всё что в голову взбредёт, а не этот всякий х2н...

    Ответить Цитировать
    10/328
    + 2
  • ahegao @ 08.07.23 

    https://www.pokerstars.com/en/poker/room/prohibited/

    люди в покере делятся на два типа. Одни зарабатывают деньги, другие следуют правилам покерстарз :) Надо просто один раз для себя сказать "нет надо мной твоей власти, Завулон".

    Ответить Цитировать
    11/328
    + -1
  • SnowBeaver @ 08.07.23 

    люди в покере делятся на два типа. Одни зарабатывают деньги, другие следуют правилам покерстарз :) Надо просто один раз для себя сказать "нет надо мной твоей власти, Завулон".

    понял тебя 😀

    когда на форуме будет очередная истерика на тему ботоводства, сошлюсь на твой пост 😀

    Ответить Цитировать
    2/2
    + 2
  • ahegao, 🤣🤣🤣

     

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

    Ответить Цитировать
    2/17
    + 3
  • ahegao @ 08.07.23 

    понял тебя 😀

    когда на форуме будет очередная истерика на тему ботоводства, сошлюсь на твой пост 😀

    Да, мне нужна аудитория. Ссылайся конечно. У нас на темной стороне есть печеньки, а игра в минусы мне до лампочки :)

    Ответить Цитировать
    12/328
    + 0
  • SnowBeaver, анализ интересный. Единственное что мне кажется не очень корректно за основу брать именно чипЕВ. Я не мттшный игрок, но мне кажется например весьма очевидным что при такой целевой функции основной профит покажет в ХА играх, ведь там собираются все фишки с турнира и само собой в хедзапе именно в абсолютном значении фишек зарабатывается наибольшее их количество. 

     

     

    SnowBeaver @ 07.07.23 

     

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

    по оси x здесь эффективный стек. а по y общая сумма движений фишек игрока. Можно наблюдать, что большая часть игры проходит примерно в 20-30бб, дальше идёт спад. т.е. надо понимать, что при обучении можно выставить приоритеты и если мы хотим играть такие турниры, то наверное стоит очень сильно позадротствовать в стеках 15-35, и совершенно проигнорировать то что происходит в 50+, т.к. там хоть и есть игра, но она на общий результат влияет крайне слабо. 

     

    Причём с точки зрения количества наигранных рук +/- тоже самое здесь

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

    Ответить Цитировать
    1/2
    + 1
  • leksafim @ 08.07.23 

    ahegao, 🤣🤣🤣

     

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

    Вопрос в уровнях абстракций на которых находишься. Когда смотришь например вод по стратегии от какой-то школы, то там если это хороший материал, то кто-то в штате делал работу типа моей. А если просто кто-то раскрутил личный бренд и показал свой график эрегированный устремлённый в бесконечность, то это развлекательный контент. Что впускать себе в голову - исключительно личный выбор. Чтобы его сделать надо понять зачем зашёл в покер. Развлекаться а покере тоже нормально, и я не осуждаю. Просто я про другое в целом

    Ответить Цитировать
    13/328
    + 0
1 2 3 35
1 человек читает эту тему (1 гость):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.