іж 6%, але менше fс, виникає те ж саме. Вирішуючи рівняння g (f)=0,53log (l + f) + 0,47log (l - f)=0 чисельно на комп'ютері отримуємо fc=0,11973Ї. Так, якщо ставка більше ніж приблизно 12%, то навіть при тому, що Гравець А може тимчасово насолоджуватися швидкої швидкістю росту, можливі коливання вниз неодмінно призведуть величину Xn до нуля. Обчислення дає коефіцієнт зростання g (f *)=f (0,06)=0,001801 так, що після n послідовних ставок логарифм середнього величини капіталу Гравця А буде прагнути до значення в 0,001801 * n разів перевищує стартовий капітал. Прирівнюючи 0,001801n=log 2, отримуємо очікуваний час, необхідне для подвоєння капіталу приблизно рівне n=385.
Вище розглядалися гри з рівномірними виплатами. Але, Критерій Келлі може легко бути розширений на ігри з нерівними виплатами. Припустимо, Гравець А виграє b одиниць на кожну одиницю ставки. Далі припустимо, що на кожній спробі ймовірність перемоги p gt; 0 і pb - q gt; 0, так що гра вигідна для Гравця А. Методи, подібні розглянутим, можуть використовуватися для максимізації:
Обчислення дають f *=(bp - q)/(b - 1), ця формула є узагальненою формулою Келлі, яка б показала яку частку від поточної кількості грошей потрібно виділяти для кожної окремої ставки, щоб максимізувати коефіцієнт зростання g (f). Якщо адаптувати цю формулу для ставок на спорт, то вона набуває наступний вигляд:
С=(K * V) - 1)/(K - 1),
де
С - коефіцієнт розміру наступної ставки, - коефіцієнт букмекера, - оцінка ймовірності прохідності події гравцем.
Глава IV. Програмна реалізація
. 1 Приклад використання програми для розрахунку букмекерських вилок
Необхідно розробити програму, яка по заданих коефіцієнтах і сумі банку буде знаходити розміри ставок на кожен підсумок події, щоб мати гарантований прибуток незалежно від результату матчу. Також вона повинна обчислювати Маржеві прибуток.
Суть програми полягає в наступному:
Мається якоїсь БАНК (грошова сума) і КОЕФІЦІЄНТИ K1 і K2 (для двох вихідної події) і КОЕФІЦІЄНТИ K1, K2, KХ (для трьох вихідної події). Необхідно ввести значення в поле БАНК і в полі КОЕФІЦІЄНТ натиснути кнопку РОЗРАХУВАТИ. Програма розрахує нам маржу між цими коефіцієнтами (якщо вона позитивна, то арбітражна ситуація є, якщо вона негативна або дорівнює нулю - те, вилки немає) суму ставки на кожен результат, при якій ми виграємо однакову суму незалежно від результату події і кінцевий прибуток.
Діалогові вікна програми для розрахунку двох і трьох вихідної події зображені на малюнку 4.1. і малюнку 4.2. відповідно.
Малюнок 4.1. Діалогове вікно програми для двох вихідної події
Малюнок 4.2. Діалогове вікно програми для трьох вихідної події
Всі значення повинні бути представлені в числовій формі, при недотриманні цього правила програма видає повідомлення про помилку.
Приклади таких ситуацій представлені на малюнку 3.3. і малюнку 3.4.
Малюнок 4.3. Діалогове вікно Помилка введення даних для поля КОЕФІЦІЄНТ.
Малюнок 4.4. Діалогове вікно Помилка введення даних для поля БАНК.
. 2 Лістинг програми для розрахунку букмекерських вилок
Текст модуля форми
UnitMain ;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ,, Menus, StdCtrls;=class (TForm): TMainMenu ;: TMenuItem ;: TMenuItem ;: TLabel ;: TEdit;:TLabel ;: TLabel ;: TLabel ;: TLabel ;: TLabel ;: TLabel ;: TLabel ;: TEdit ;: TEdit ;: TEdit ;: TEdit ;: TEdit ;: TEdit ;: TEdit ;: TEdit ;: TEdit ;: TLabel ;: TLabel ;: TLabel; TrippleIssueClick (Sender: TObject); DoubleIssueClick (Sender: TObject); FormActivate (Sender: TObject); LabelCalcClick (Sender: TObject);
{Private declarations}
{Public declarations} ;: TMainForm; Math ;: boolean;// вказує на вибрану кількість результатів в розрахунку
{$ R * .dfm} TMainForm.TrippleIssueClick (Sender: TObject);:=False;
//змінюємо видимість полей.Visible:=True; .Visible:=True; .Visible:=True; .Visible:=True;
//обнуляем поля.Text:= raquo ;;. Text:= raquo ;;. Text:= raquo ;;. Text:= raquo ;;. Text := raquo ;;. Text:= raquo ;;. Caption:= 0% raquo ;;; TMainForm.DoubleIssueClick (Sender: TObject);:=True;
//змінюємо видимість полей.Visible:=False; .Visible:=False; .Visible:=False; .Visible:=False;
//обнуляем поля.Text:= raquo ;;. Text:= raquo ;;. ...