
Пока толстый сохнет, худой сдохнет
Старинная русская поговорка
Недавно @TraPhro опубликовал хорошую статью на тему Санкт-Петербургского парадокса, придуманного когда-то Даниилом Бернулли для иллюстрации фундаментального ограничения классической теории вероятности с точки зрения рисковых решений, принимающихся людьми.
Перед тем, как читать эту статью, рекомендуем ознакомиться с предложенными ссылками, дабы освежить в памяти суть предмета.
Назовем игрой Бернулли следующее. Игрок платит денежную сумму S (серебряных рублей Российской Империи) за игру, после чего подбрасывает честную математическую монетку до тех пор, пока не выпадет решка. Выигрыш игрока составляет , где H - число выпавших подряд орлов.
Легко показать, что матожидание такой игры стремится к бесконечности. С вероятностью 1/2 в последовательности не будет орлов и мы получим за неё 1 рубль. С вероятностью 1/4 выпадет один орел, и это 2 рубля. С вероятностью 1/8 вы получите 4 рубля, и так далее. Матожидание всех этих исходов: 1/2 + 2/4 + 4/8 + ... -> .
Однако вряд ли найдется человек, который согласился бы играть в эту игру даже при S=20.
Какова же справедливая цена игры?
В статье @TraPhro дается одно из возможных разрешений парадокса: через так называемую "Функцию полезности". Предполагается, что люди интуитивно оценивают свой потенциальный выигрыш не линейно, а согласно некой монотонно возрастающей функции со стремящейся к нулю производной. @TraPhro не дает явного выражения для функции полезности, в Википедии же в качестве простейшей модели предлагается логарифмическая функция , где
- выигрыш,
- стоимость игры. Можно показать, и в статье в Википедии показывается, что в этом случае справедливая цена игры S=2.
Логарифмическая функция полезности предполагает, что люди воспринимают приращения или убытки своего капитала не в абсолютных, а в относительных величинах. Радость богача, что ему удалось накопить $10 000 000 в то время, когда год назад у него было всего лишь $1 000 000 схожа с радостью не столь обеспеченного человека, наблюдающего увеличение своего капитала с $1000 до $10 000 , хотя в абсолютных величинах прирост капитала миллионера гораздо больше.
Однако всё это - лишь психология. Существует ли строгое математическое обоснование, способное объяснить, каким образом действующие абсолютно рационально экономические агенты могут отказаться играть в игру с бесконечным матожиданием? Может ли быть такое, что подсознательно воспринимаемая нами нелинейная полезность денежных средств - рациональное поведение по управлению рисками?
В данной статье мы обозначим три фундаментальных ограничения, препятствующих росту ставки S и поговорим о рисках, которые разумно и неразумно здесь принять.
Ограничение банка казино
Когда мы играем в игру Бернулли, например, с S=20, мы закладываем в эту игру возможность того, что с очень низким шансом, но всё-таки может случиться так, что игрок выбросит 20 и более орлов подряд, после чего казино окажется должно игроку = 1 048 576 рублей.
Говоря про времена Петра Первого, миллион тогдашних рублей - невообразимая сумма, наверняка значительно превышающая возможности казино. Но даже если бы мы играли на пшеничные зерна, а в обеспечении казино находилась бы вся экономика и вся сельскохозяйственная промышленность мира, из-за экспоненциальной природы выигрыша величина S, при которой банк казино способен гарантировать выплату, не могла бы превысить нескольких десятков.
Таким образом, мы получаем ограничение банка казино.
Здесь K - максимальный выигрыш, который готово выплатить казино, выраженный в денежных единицах, на которые ведется игра. Это небольшое число, двузначное практически при любых мыслимых сценариях.
Готовы сыграть в эту игру при S = 20? Чтобы выйти в плюс, вам нужно всего лишь выкинуть пять орлов подряд, а дальше - экспоненциальный рост вплоть до максимума в миллион с лишним! Кажется выгодной сделкой?
Ограничение длительности игры
Возьмем длинную случайную цепочку B[T] из последовательностей из серии орлов, оканчивающихся решкой. Перед нами больше четырех миллиардов игр Бернулли, случившихся подряд - достойная выборка, на которой должны проявиться все основные статистические эффекты нашей модели.
def generate_B(T, seed=42): """ Генерирует массив B длины T (uint8), где B[i] — число орлов в i-й игре Бернулли. """ rng = np.random.default_rng(seed) B = np.empty(T, dtype=np.uint8) chunk_size = 2**24 offset = 0 while offset < T: size = min(chunk_size, T - offset) B[offset:offset + size] = -np.log2(rng.random(size)) offset += size return B
Сгенерируем случайную последовательность:
B = generate_B(T) # Генерация идет у меня около 40 секунд
С такой длинной последовательностью у нас возникают проблемы даже при попытке посчитать её среднее арифметическое. Написав что-то вроде
np.mean(2 ** B) # 3.9998945547267795
мы получаем результат, близкий к 4, что совершенно не согласуется с теорией. Проблема в арифметике малых целых чисел. При возведении numpy пытается сохранить тип, что при значениях больше 256 дает ошибку переполнения, которую numpy просто обращает в 0. Отказаться от np.uint8 же мы не хотим; уже при int64 хранение последовательности займет 32 Gb RAM, а оперативная память нынче дорогая.
Нам повезло: если бы мы работали с int32, мы могли бы легко попасться в этом численном эксперименте на ту же ошибку в гораздо более редком сценарии и не заметили бы её.
Правильный путь такой:
B_values, B_counts = np.unique(B, return_counts=True) B_summ = 0 for i in range(len(B_values)): B_value = B_values[i] B_count = B_counts[i] B_summ += B_count*(2**int(B_value)) B_mean = B_summ/T # 16.525583560578525
Построим гистограмму распределения длин серий орлов:

Видно, что за исключением последовательностей длиной 30, 31, 32, которых нам повезло получить по одной штуке, распределение очень близко к экспоненциальному. Ничего необычного в этом нет: мы убедились, что всё корректно работает.
Откуда берется число ? Попробуем взять T поменьше:
B_mean | |
|---|---|
32 | 16.52 |
30 | 19.05 |
28 | 13.49 |
26 | 13.80 |
24 | 12.78 |
22 | 11.59 |
20 | 13.76 |
16 | 11.00 |
12 | 5.96 |
Видно, что средний выигрыш "гуляет" где-то в районе , отклоняясь в ту или иную сторону на несколько пунктов при удаче или неудаче игрока. Это легко объяснить математически.
Шанс на выпадение на серии игр события, которое происходит с вероятностью
, составляет всего
. Это событие с высокой вероятностью не выпадет и не внесет свой вклад в общую сумму. Наш статистический аппарат качественно работает с теми событиями, которые выпадают много раз, то есть состоящими из относительно малого числа орлов. Мы видим, что в той серии, где мы бросали
, нам очень повезло, и среднее оказалось аж 19 - но у любого везения есть ограничения, и шансы на получение в такой серии среднего, отклоняющегося от половины логарифма экспоненциально падают с ростом этого отклонения.
Таким образом, мы получаем ограничение длительности игры.
UPD. Когда эта статья была опубликована, комментаторы указали на некоторую проблему с предложенным ограничением длительности. Что бы качественнее раскрыть тему, я решил провести дополнительное исследование.
Наша формула не учитывает отклонения от среднего. Они могут быть существенны, и, как мы увидим далее, имеет тенденцию сдвигаться вверх где-то на две единицы.
Возьмем и посмотрим средний выигрыш
для различных seed последовательности:
seed | |
|---|---|
0 | 14.6 |
1 | 11.7 |
2 | 13.5 |
3 | 12.1 |
4 | 12.0 |
5 | 24.7 |
6 | 14.5 |
7 | 13.9 |
8 | 12.3 |
9 | 12.1 |
23 | 81.1 |
34 | 33.0 |
74 | 10.9 |
77 | 144.0 |
341 | 269.5 |
504 | 285.0 |
Здесь приведены первые 10 seeds, а так же некоторые избранные рекордсмены из первых 1024 последовательностей, демонстрирующие аномально большие значения среднего. Нужно сказать, что мне не удалось сгенерировать последовательность со средним меньше 10 на этой выборке.

Мы не можем корректно усреднять значения по различным последовательностям фиксированной длины, поскольку из-за тяжёлого хвоста распределения такое усреднение нестабильно и фактически соответствует анализу одной более длинной последовательности, не устраняя проблему редких выбросов. Однако мы можем использовать другой статистический аппарат - медиану. Медиана в данном случае отражает типичное поведение процесса и устойчива к редким, но экстремально большим выигрышам, которые доминируют в среднем значении.
Я проверил медианы для средних 256 выборок по 32 последовательностей длиной в каждой и получил следующее распределение:

Видно, что для медиан выбросы отсутствуют: все медианы оказываются где-то в окрестности 11.5. Мы можем посчитать здесь среднее; для моего набора медиан оно получается 11.46.
Наш прогноз был таким, что для последовательности игр длиной не стоит играть со ставкой выше 10. Но видно, что это не совсем так: для игр такой длины можно играть со ставкой 10.5 вполне надежно, да и 11.5 не приведет к разорению.
Рассчитаем отклонения для медианных значений групп из 32 выборок различной длины от предсказанного ограничения по длительности:

Таким образом, обновим нашу формулу на ограничение длительности игры:
где - рисковый коэффициент, отражающий вклад флуктуаций и экстремальных исходов. Наш численный эксперимент показывает, что для практических значений
он стабильно лежит в диапазоне от 1 до 2.
Ограничение риска игры
Будем считать банк казино условно-неограниченным. Также будем считать, что агент имеет 0 рублей начального капитала, однако может неограниченно брать кредит под игру.
Промоделируем историю игр 16 агентов, которые играют в одну и ту же ранее сгенерированную цепочку игр B, однако условия по S для них различаются: стоимость игры растет от 1 до 16 рублей. На серии игр в с S>16 игра не выгодна из-за отсечения низковероятных хвостов.
Введем функцию C(S) как максимальный долг банку со стороны агента S за всю историю. Можно воспринимать C(S) как стартовый капитал на игру, при котором агент никогда не уйдет в минус и не будет вынужден брать кредит.
def calc_C(S, B, chunk_size=2**24): """ Быстро вычисляет C(S) для массива B (uint8), обрабатывая данные чанками. """ capital = 0 min_capital = 0 T = len(B) offset = 0 while offset < T: size = min(chunk_size, T - offset) # Небольшая оптимизация cs = np.cumsum((1 << B[offset:offset + size].astype(np.int64)) - S) local_min = capital + cs.min() if local_min < min_capital: min_capital = local_min capital += cs[-1] offset += size return -min_capital C_values = [] S_values = np.arange(1, 17) for S in S_values: C = calc_C(S, B) C_values.append(C)

При C(S) не зависит от длины последовательности T, поскольку агент с высокой долей вероятности либо сливается в начале игры, либо ему удается заработать достаточный капитал, чтобы уверенно чувствовать себя при заданном S всю дальнейшую игру.
Видно, что максимальная сумма риска агента в игре Бернулли растёт экспоненциально с ростом стоимости игры. Причина в том, что компенсация линейного дрейфа возможна только за счёт экспоненциально редких событий, и ожидание таких событий требует экспоненциального же стартового капитала.
Характер экспоненциального роста близок к где
- коэффициент где-то от 0 до 1.

Таким образом, мы получаем ограничение риска игры.
Коэффициент риска R подбирается исходя из готовности игрока рисковать. Можно предположить R=0.5.
Откуда берется 4 в основании логарифма?
Типичный сценарий выживания игрока подразумевает каскад редких событий, до которых он стремится дожить, растрачивая капитал за счет S и лишь частично компенсируя дрейф в полной мере за счет частых событий. К примеру, если S = 10, то для выживания игроку нужно дождаться хотя бы одного события один-на-миллион с двадцатью и более орлами. В противном случае, матожидание прибыли от более частых событий не перекрывает дрейф S. Среднее время ожидания для такого события:
Во время ожидания капитал игрока будет тратиться, в среднем, со скоростью 0.5 (более частые, но не спасающие игрока в полной мере события вроде 19 орлов он, вероятно, дождется).
Значит, для выживания необходимо, что бы выполнялось
, что дает нам
= 0.5 и степень, равную 4. Однако спасительное событие может прийти раньше или позже намеченного срока, что заставляет нас в некоторых случаях калибровать
в ту или иную сторону.
Управление рисками
Мы получили три независимых фундаментальных ограничения на ставку S:
Ограничение банка:
(зависит от размера банка казино)
Ограничение времени:
(зависит от числа игр, в которых мы готовы участвовать и рискового коэффициента времени
от 1 до 2)
Ограничение риска:
(зависит от начального капитала игрока и его склонности рисковать, выраженной в рисковом коэффициенте капитала
от 0 до 1)
Эти ограничения распространяются куда шире игры Бернулли.
Первое ограничение учит нас, что никакой рост не может быть экспоненциальным бесконечно или даже в течение длительного промежутка времени. Рано или поздно ресурс, поддерживающий рост, иссякнет и произойдет выход на плато. Это особенно актуально сейчас, в начале 2026 года, в период технологического бума LLM, когда кажется, что экспоненциальное развитие экономики ИИ не ограничено. Это актуально и для любого другого технологического пузыря, порожденного технологией с огромным, сложно обозримым потенциалом.
Второе ограничение говорит нам, что нельзя достичь успеха, ожидая редчайших событий. Даже очень редкие события должны происходить более-менее регулярно на обозримом горизонте планирования. Иначе мы рискуем просто не дождаться.
Третье ограничение - самое интересное. Для его иллюстрации взглянем ещё раз на пример из исходной статьи.
Богатый шоумен MrBeast, желая развлечь свою аудиторию, предлагает случайному обывателю выбор: получить $1 000 000 с шансом 100% либо в десять раз больше, но с шансом в 50%. С точки зрения матожидания следует рисковать. Однако многие предпочтут забрать гарантированную сумму.
Закон убывающей полезности говорит нам, что для среднего обывателя как $1 000 000, так и $10 000 000 - огромные, плохо различимые в своей огромности суммы, на которые он может полностью обеспечить свои потребности на текущий момент. Но здесь есть что-то более глубокое.
Предположим, что наш счастливчик, оказавшись на шаге от $1 000 000 , обладал до встречи MrBeast совокупным капиталом в $500 000 , куда включается всё его имущество от трусов до бабушкиной квартиры. MrBeast не раздает людям просто так большие деньги -- они должны служить интересам его шоу -- значит наш герой прошел уже через многое, дабы послужить интересам шоу MrBeast. К моменту, когда нашего героя ставят перед выбором, его виртуальный капитал составляет не $500 000 а $1 500 000 , поскольку он как бы уже "заработал" своей удачей и ловкостью свой приз. В этой ситуации ему треб��ется рискнуть 2/3 своего капитала.
Это плохой риск; многие инвестфонды не решились бы на это точно так же, как и наш герой. Экономисты фонда сказали бы что-то про установленный потолок инвестиций в рисковый проект. Аналогично мы видим в игре Бернулли, что в некоторых ситуациях глупо инвестировать в рисковую игру, если не располагаешь достаточными капиталами, чтобы выдержать этот риск.
Рассмотрим другой пример, когда тот же самый обыватель выиграл либо $100 либо право побороться с шансом в 50% за $1000 - в этом случае многие предпочли бы журавля синице, поскольку $100 для человека с капиталом в $500 000 - куда менее чувствительная сумма.
Психология обывателя здесь работает через закон убывающей полезности именно потому, что у нас довольно умное, прокаченное миллиардами лет эволюции подсознание, которое хорошо разбирается в рисках.
Не следует думать, что игра Бернулли - абстрактный, оторванный от жизни пример. Инвестфонды, инвестируя в сотни стартапов в надежде получить прибыль с нескольких, которые отобьют все затраты, играют в игру Бернулли.
Огромное количество бизнесов, сами того не ведая, играют в игру Бернулли со стороны казино. Они закрепились в своей рыночной нише и постоянно получают доход (ставку S), превышающий непостоянные затраты. Но иногда пролетает черный лебедь - и их капитал в одночасье обнуляется. Им нужно закладывать в свою прибыль риски событий с экспоненциально малой вероятностью и экспоненциально значимым эффектом.
В классической теории инвестиций Келли ставка рассчитывается из общего банка игрока. Данная теория рассматривает ставку как долю от банка игрока; эта доля рассчитывается из оценок события со стороны игрока и со стороны биржи. Теория Келли хороша, но по сюжету Бернулли видно, что она не так уж хорошо работает со сценариями, когда мы обрабатываем редкие шансы.
Мы получили наш результат - логарифмический закон соотношения рисковой ставки с капиталом - через численный эксперимент. Можно ли построить строгое математическое обоснование нашей модели? Оказывается, да!
Непрерывная игра Бернулли
Пусть есть случайная величина, распределенная по закону где L - некий фиксированный параметр. Предложим игроку заплатить S рублей и сгенерировать число по этому закону; в этом случае он получит
выигрыша.
Оказывается, распределение выигрыша не зависит от L:
Отсюда:
,
но хвост настолько тяжёлый, что среднее неинформативно.
Мы получили непрерывный аналог Санкт-Петербургской игры.
Рассмотрим процесс, в котором ты раз за разом меняешь величину своего капитала , играя в эту игру.
где - выигрыш.
Ты желаешь никогда не достичь состояния банкротства . Каков максимальный S, при котором вероятность разорения за разумное время мала?
Закон допустимого риска
Из хвоста:
Вероятность получить выигрыш :
Чтобы компенсировать потери порядка , нужен выигрыш:
Вероятность дождаться его:
Среднее время ожидания:
Мы теряем капитал со скоростью . Наш запас прочности — время
. Чтобы выжить, нам нужно, чтобы за это время случилось крупное событие, перекрывающее убытки. Вероятность такого события
Отсюда:
Почему это не психологический феномен, а закон природы процесса?
Потому что:
распределение выигрышей — степенное;
капитал — конечен;
разорение — поглощающее состояние;
большие выигрыши редки экспоненциально;
дожить до них можно только с логарифмически растущим капиталом.
А значит, мы приходим к главной формуле для любой игры Бернулли:
Риск должен быть долей логарифма капитала.
Вот чему учит нас Санкт-Петербургский парадокс.
