Расчет вероятности серии убыточных сделок в серии игр.

Чтобы рассчитать вероятность P(n) того, что произойдет n проигрышей подряд в серии из N игр при заданной вероятности проигрыша p , можно использовать следующие шаги:

  1. Вероятность одного проигрыша: p = 1 - 0.475 = 0.525

  2. Вероятность n проигрышей подряд: Вероятность n подряд идущих проигрышей равна p^n.

  3. Количество возможных позиций для n проигрышей подряд в N играх: В серии из N игр есть N - n + 1 возможных начальных позиций для n подряд идущих проигрышей.

  4. Вероятность отсутствия n проигрышей подряд: Для расчета этой вероятности будем использовать обратный подход - сначала рассчитаем вероятность того, что в серии игр n подряд идущих проигрышей не произойдет, а затем вычтем это значение из единицы.

Для упрощения расчета можно воспользоваться методом численного моделирования или аналитическими методами из теории вероятностей.

Пусть:

  • p - вероятность проигрыша p = 0.525

  • q - вероятность выигрыша q = 1 - p = 0.475

  • N - количество игр

  • n - количество подряд идущих проигрышей

Таблица для различных значений n и N может выглядеть следующим образом:

Количество игр (N)5 проигрышей подряд10 проигрышей подряд15 проигрышей подряд

1000

P(5,1000)

P(10,1000)

P(15,1000)

10000 ​

P(5,10000) ​

P(10,10000) ​

P(15,10000) ​

100000

P(5,100000) ​

P(10,100000) ​

P(15,100000) ​

Для расчета P(n, N) будем использовать формулу для вероятности отсутствия n подряд идущих проигрышей, основанную на методах теории Марковских цепей.

Проведем вычисления для заданных значений.

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# Функция для расчета вероятности n последовательных проигрышей в N играх
def probability_consecutive_losses(n, N, p):
    # Вероятность n последовательных проигрышей
    prob_consecutive_losses = p ** n
    # Количество возможных позиций для n последовательных проигрышей в N играх
    positions = N - n + 1
    # Общая вероятность того, что хотя бы одна последовательность из n проигрышей произойдет
    total_prob = 1 - (1 - prob_consecutive_losses) ** positions
    return total_prob

# Заданные вероятности и количество игр
p_loss = 0.525

# Диапазон значений для n и N
n_min = 5
n_max = 20
n_step = 5

N_min = 100
N_max = 100000
N_step = 10

# Генерация значений n и N
n_values = list(range(n_min, n_max + 1, n_step))
N_values = list(np.logspace(np.log10(N_min), np.log10(N_max), num=N_step, dtype=int))

# Создаем таблицу для хранения результатов
results = np.zeros((len(N_values), len(n_values)))

# Рассчитываем вероятности
for i, N in enumerate(N_values):
    for j, n in enumerate(n_values):
        results[i, j] = probability_consecutive_losses(n, N, p_loss)

# Преобразуем результаты в DataFrame для удобного отображения
df_results = pd.DataFrame(results, columns=[f'{n} проигрышей подряд' for n in n_values], index=[f'{N} игр' for N in N_values])

# Вывод таблицы результатов
print(df_results)

# Построение графика
plt.figure(figsize=(10, 6))
for j, n in enumerate(n_values):
    plt.plot(N_values, results[:, j], label=f'{n} проигрышей подряд', marker='o')

plt.title('Вероятность последовательных проигрышей в зависимости от количества игр')
plt.xlabel('Количество игр')
plt.ylabel('Вероятность')
plt.legend()
plt.grid(True)
plt.xscale('log')
plt.yscale('log')
plt.show()
```

Вот таблица с вероятностями того, что произойдет 5, 10 или 15 проигрышей подряд в серии из 1000, 10000 и 100000 игр при вероятности проигрыша 52.5%:

Количество игр (N)5 проигрышей подряд10 проигрышей подряд15 проигрышей подрядКоличество игр (N)

1000

1.0000

0.7935

0.0606

10000

1.0000

0.9999

0.4693

100000

1.0000

1.0000 ​

0.9982

Из таблицы видно, что вероятность возникновения 5 проигрышей подряд при N = 1000, N = 10000, и N = 100000 близка к 1 (т.е. практически гарантирована). Вероятность 10 проигрышей подряд существенно возрастает с увеличением числа игр, достигая практически 1 при N = 100000. Вероятность 15 проигрышей подряд существенно меньше, но также растет с увеличением количества игр, достигая почти 100% при N = 100000.

Ссылка на код статьи

Last updated