Перепрыгнеть в содержание


- - - - -

ТРИГГЕР_ТЕННИС_ЗАМРИ_УМРИ_ВОСКРЕСНИ


29 ответов в эту тему

#1 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 17 September 2016 - 13:42

Почитав опусы в интернете на тему прогнозов и моделей по теннису решил целесообразным иметь мнение супротив оных опусов.
Сразу хочу дать пояснение--на теннис я не ставил, не ставлю и ставить не собираюсь...в теннисе ни ХУ не понимаю...но я буду говорить языком цифр..надеюсь не напрасно.

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

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

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

Для некоторых вероятностей есть аналитические выражения но я их не буду приводить ибо они очень громозские и тока в основном на гейм---дело в том что например для 5-ти сетового матча нам придётся расписывать ХЗ скока вариантов окончания каждого сета и сочетать с другими..... и нах это надо---намного проще пойти колхозным путём и генерить 10000-20000 матчей а потом тупо считать частоты (ну они будут немного плавать около среднего но для оценок может вполне покатить...)....Будем считать что расчёт у нас есть.

Для расчёта по такой модели (ну тут уже были темы на форуме на эту тему поэтому можно там подсмотреть что-то) нам надо Р взять очко со своей подачи для игрока 1 и Р взять очко для игр2.

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

Начнём-с с функции листа ехсель определяющей вин матча и распределение и тотал.(напоминаю---это для одной ветви триггера)

теперь ОСНОВА ОСНОВ ТРИГГЕРНОЙ КОНЦЕПЦИИ.

матч может срельнуть в два состояния---вин или лоз вероятность реализации того или иного состояния мы априорно можем оценить
ну тупо вот так в данных по прецедентам 0.6(60%) вин 0.4 (40%) лоз так вот у каждого такого состояния будут свои средние по Р-взять очко для игрока 1 и для игрока 2 (пока на этом не будем заострять внимание---в смысле --как определить...это отдельный базар-вокзал)..
Так вот ВСЁ (подчёркиваю все --и тоталы и моталы и вины и хуи..) всё считаем по одной хрени

Ртригер_вин*Рсобытия ветвь вин+(1-Ртригер_вин)*Рсобытия ветвь лоз.

Пока ни ХУ не понятно но далее поясню на конкретных примерах.


=Tns(A9;B9;C9;D9;tb;mark1;0;J9;E9;F9;G9;H9)
A9-вероятность игрока1 выиграть гейм со своей подачи (нужны для расч. Сета)
B9-вер. Иг.2 выиграть гейм при своей подаче
C9-вероятность для игр.1 взять очко со своей подачи (по ней можно рассчитать Р в яч A9)
D9-вероятность для игр.2 взять очко со своей подачи (по ней можно рассчитать Р в яч В9)
tb- маркер тай-брейка (1—с тай-бр. 0-без тай-бр.)
mark1-маркер подачи в сете (1-ПОДАЧА 1-ГО ИГР. 0-ПОДАЧА ВТОРОГО)
0-маркер генератора жеребьёвки 1-ой подачи (не используется…генератор не встроен в функцию)
J9-число сетов (3 или 5 можно указать и непосредственно в функции как числа)
E9-текущий счёт по сетам для игр.1( это счёт матча типа 1-1 2-1-уже вин и так не может для 3-ёх сетового, например )
F9-тек. счёт по сетам для игр.2
G9-текущий счёт в сете по геймам для игрока.1 (типа 5-4)
H9 тек. счёт в сете для игр.2
mtb,mark1 вводим в какие-то яч excel и указываем адреса в функции
=FGeim(C9;0;0)—функция нахождения вероятности выигрыша гейма при своей подаче
C9-вероятность взять очко со своей подачи (с первой подачи). Можно вводить значение Р непосредственно в функию =FGeim(0,68;0;0)
0-счёт игр 1
0-счёт игр.2 (так понятнее =FGeim(C9;s1;s2) например FGeim(C9;0;0) вставляем в яч A9 для передачи потом в функцию Tns)
В ячейку B9 соответственно вставим FGeim(D9;0;0).
Теперь этих инструментов достаточно для нахождения вероятности вин. матча (или сета) с любой точки счёта по счёту в матче, сета и гейма. Вопрос—как? Чтоб понять надо посмотреть и разобраться в работе
=FGeim. Мы передаём вероятность для игрока 1 которому соответствует счёт гейма s1 (причём счёт условно 1,2,3…по числу выигрышей итд, а не как принято в теннисе 15-0 30-….итд)

Тогда для игрока 2 для вычисления вероятности вин. гейм со своей подачи (кроме счёта 0-0 …то есть счёт не открыт) есть два варианта найти Р2вин.гейм
1.Вставить вероятность Р2 взять очко с подачи и поменять счёт в функции местами FGeim(Р2;s2;s1)


2.Вставить в функцию FGeim вместо вероятности Р2 вер. 1-Р2 (это вероятность для первого игрока взять гейм при подаче второго игрока). Полученное значение вычесть из 1

Формула так будет выглядеть Р2вин.гейм =1- FGeim(1-Р2;s1;s2)

Теперь надо понять алгоритм позволяющий найти вероятность при любом счёте в игре.
Для этого воспользуемся куском(звеном) цепи Маркова. Предположим у нас идёт какой-то
Гейм и там счёт s1:s2 в матче по сетам m1- m2 а в сете st1-st2
Тогда одна функция=Tns(A9;B9;C9;D9;1;1;0;J9;m1;m2;st1;st2) нам не даёт ответа на наш вопрос.

Пусть счёт гейма s1:s2 сета a:b при подаче игрока 1 (или 2) имеем расчётную вероятность выиграть
гейм Pwin_i пусть для определённости будем всегда искать вероятность для игр.1 (ибо для второго она
1- Pwin_1 для всех раскладов). Тогда возможны переходы в счёт a+1:b или в a:b+1 при этом
в a+1:b игрок 1 переходит при своей подаче с Pwin_1= FGeim(P1;s1;s2) в a:b+1 с вероятностью 1-Pwin_1.

Рассматривая такое звено Марковской цепи приходим к выражению для вероятности P1 win math

8]P1 win math =Pwin1* Tns(…….a+1:b ) + (1- Pwin1)* Tns(…….a +1:b )

8]Где для Tns выставляем mark1=в соответствии с игроком начавшим подавать в сете

8](1—для игрока 1 и 0--- для игр2) Если имеем распределения то складываем их сообразно данной формулы.

8]Если подаёт игрок 2 то для игрока 1(для которого и будем считать) Pwin_1= FGeim(1-P2;s1;s2) где P2 –вер. взять очко со своей подачи для игр.2



Function Gen(ByVal P As Double, Optional VolatileOn As Boolean = True) As Variant
Application.Volatile VolatileOn

Dim Pg, t As Double
Pg = P
t = Rnd()
t = Rnd()
If t <= Pg Then
Gen = 1
Else
Gen = 0
End If
End Function

Function Tns(ByRef rp1st As Range, ByRef rp2st As Range, ByRef rp1g As Range, ByRef rp2g As Range, ByRef Mmarktb As Range _
, ByRef Vmark_1 As Range, ByVal Mmarkmany As Integer, ByRef Mnst As Range, ByRef fshm1 As Range, ByRef fshm2 As Range _
, ByRef fshst1 As Range, ByRef fshst2 As Range, Optional VolatileOn As Boolean = True) As Variant
Application.Volatile VolatileOn
Dim Rasp(13) As Single
Dim m1, m2, st1, st2, marktb, mark1, markmany, G, n, ws1, ws2 As Integer
Dim i, j, k, sumws1, sumws2, g1, g2 As Long
Dim Pp1st, Pp2st, Pp1g, Pp2g, shm1, shm2, shst1, shst2, z, nst, mtb As Variant
Dim Pwin1, Pwin2, p1g, p2g, p1st, p2st, tb_0, tb_1, summRasp As Single
Set Pp1st = rp1st
Set Pp2st = rp2st
Set Pp1g = rp1g
Set Pp2g = rp2g

markmany = Mmarkmany
Set nst = Mnst
Set shm1 = fshm1
Set shm2 = fshm2
Set shst1 = fshst1
Set shst2 = fshst2
Set z = Vmark_1
Set mtb = Mmarktb
p1g = Pp1g.Value
p2g = Pp2g.Value
tb_0 = 0
tb_1 = 0
If nst.Value = 3 Then
n = 2
Else
n = 3
End If
marktb = mtb.Value
summRasp = 0
For j = 0 To 13
Rasp(j) = 0
Next j

For k = 1 To 25000 Step 1
mark1 = z.Value
m1 = shm1.Value
m2 = shm2.Value
st1 = shst1.Value
st2 = shst2.Value
ws1 = m1
ws2 = m2
Do Until (ws1 = n And ws2 < n) Or (ws2 = n And ws1 < n)

If mark1 = 1 Then
p1st = Pp1st.Value
p2st = Pp2st.Value
ElseIf mark1 = 0 Then
p1st = 1 - Pp2st.Value
p2st = 1 - Pp1st.Value
End If

If marktb = 0 Then 'без тай-брейка
Do Until (st1 >= 6 And st1 - st2 >= 2) Or (st2 >= 6 And st2 - st1 >= 2)
i = st1 + st2 + 1
If Not (i Mod 2 = 0) Then 'нечет
G = Gen(p1st)
st1 = st1 + G
st2 = st2 + 1 - G
Else
G = Gen(p2st)
st2 = st2 + G
st1 = st1 + 1 - G
End If

If st1 = 6 And st2 = 0 Then
Rasp(1) = Rasp(1) + 1
ElseIf st1 = 6 And st2 = 1 Then
Rasp(2) = Rasp(2) + 1
ElseIf st1 = 6 And st2 = 2 Then
Rasp(3) = Rasp(3) + 1
ElseIf st1 = 6 And st2 = 3 Then
Rasp(4) = Rasp(4) + 1
ElseIf st1 = 6 And st2 = 4 Then
Rasp(5) = Rasp(5) + 1
ElseIf st1 = 7 And st2 = 5 Then
Rasp(6) = Rasp(6) + 1
ElseIf st1 = 6 And st2 = 6 Then
Rasp(7) = Rasp(7) + 1
ElseIf st1 = 5 And st2 = 7 Then
Rasp(8) = Rasp(8) + 1
ElseIf st1 = 4 And st2 = 6 Then
Rasp(9) = Rasp(9) + 1
ElseIf st1 = 3 And st2 = 6 Then
Rasp(10) = Rasp(10) + 1
ElseIf st1 = 2 And st2 = 6 Then
Rasp(11) = Rasp(11) + 1
ElseIf st1 = 1 And st2 = 6 Then
Rasp(12) = Rasp(12) + 1
ElseIf st1 = 0 And st2 = 6 Then
Rasp(13) = Rasp(13) + 1
End If
Loop
If st1 >= 6 And st1 - st2 >= 2 Then
ws1 = ws1 + 1
Else
ws2 = ws2 + 1
End If
If mark1 = 1 And Not (i Mod 2 = 0) Then
mark1 = 0
ElseIf mark1 = 1 And i Mod 2 = 0 Then
mark1 = 1
ElseIf mark1 = 0 And i Mod 2 = 0 Then
mark1 = 0
ElseIf mark1 = 0 And Not (i Mod 2 = 0) Then
mark1 = 1
End If
st1 = 0
st2 = 0
End If

If marktb = 0 Then GoTo M 'с тай-брейком

Do Until (st1 = 6 And st1 - st2 >= 2) Or (st2 = 6 And st2 - st1 >= 2) Or (st1 = 6 And st2 = 6) Or (st1 = 7 And st2 = 5) Or (st2 = 7 And st1 = 5)

i = st1 + st2 + 1
If Not (i Mod 2 = 0) Then 'нечет
G = Gen(p1st)
st1 = st1 + G
st2 = st2 + 1 - G
Else
G = Gen(p2st)
st2 = st2 + G
st1 = st1 + 1 - G
End If
Loop

If st1 = 6 And st2 = 0 Then
Rasp(1) = Rasp(1) + 1
ElseIf st1 = 6 And st2 = 1 Then
Rasp(2) = Rasp(2) + 1
ElseIf st1 = 6 And st2 = 2 Then
Rasp(3) = Rasp(3) + 1
ElseIf st1 = 6 And st2 = 3 Then
Rasp(4) = Rasp(4) + 1
ElseIf st1 = 6 And st2 = 4 Then
Rasp(5) = Rasp(5) + 1
ElseIf st1 = 7 And st2 = 5 Then
Rasp(6) = Rasp(6) + 1
ElseIf st1 = 6 And st2 = 6 Then
Rasp(7) = Rasp(7) + 1
ElseIf st1 = 5 And st2 = 7 Then
Rasp(8) = Rasp(8) + 1
ElseIf st1 = 4 And st2 = 6 Then
Rasp(9) = Rasp(9) + 1
ElseIf st1 = 3 And st2 = 6 Then
Rasp(10) = Rasp(10) + 1
ElseIf st1 = 2 And st2 = 6 Then
Rasp(11) = Rasp(11) + 1
ElseIf st1 = 1 And st2 = 6 Then
Rasp(12) = Rasp(12) + 1
ElseIf st1 = 0 And st2 = 6 Then
Rasp(13) = Rasp(13) + 1
End If

If Not (st1 = 6 And st2 = 6) Then
If st1 >= 6 And st1 - st2 >= 2 Then
ws1 = ws1 + 1
ElseIf st2 >= 6 And st2 - st1 >= 2 Then
ws2 = ws2 + 1
End If

If mark1 = 1 And Not (i Mod 2 = 0) Then
mark1 = 0
ElseIf mark1 = 1 And i Mod 2 = 0 Then
mark1 = 1
ElseIf mark1 = 0 And i Mod 2 = 0 Then
mark1 = 0
Else
mark1 = 1
End If
st1 = 0
st2 = 0

End If

If Not (st1 = 6 And st2 = 6) Then GoTo M
'тай-брейк
tb_1 = tb_1 + 1
g1 = 0
g2 = 0
If mark1 = 1 Then
G = Gen(p1g)
g1 = g1 + G
g2 = g2 + 1 - G
Else
G = Gen(p2g)
g2 = g2 + G
g1 = g1 + 1 - G
End If

If mark1 = 1 Then
Do
G = Gen(p2g)
g2 = g2 + G
g1 = g1 + 1 - G
If (g1 >= 7 And g1 - g2 >= 2) Or (g2 >= 7 And g2 - g1 >= 2) Then

Exit Do
End If
G = Gen(p2g)
g2 = g2 + G
g1 = g1 + 1 - G
If (g1 >= 7 And g1 - g2 >= 2) Or (g2 >= 7 And g2 - g1 >= 2) Then

Exit Do
End If
G = Gen(p1g)
g1 = g1 + G
g2 = g2 + 1 - G
If (g1 >= 7 And g1 - g2 >= 2) Or (g2 >= 7 And g2 - g1 >= 2) Then

Exit Do
End If
G = Gen(p1g)
g1 = g1 + G
g2 = g2 + 1 - G
If (g1 >= 7 And g1 - g2 >= 2) Or (g2 >= 7 And g2 - g1 >= 2) Then

Exit Do
End If
Loop
mark1 = 0
Else
Do
G = Gen(p1g)
g1 = g1 + G
g2 = g2 + 1 - G
If (g1 >= 7 And g1 - g2 >= 2) Or (g2 >= 7 And g2 - g1 >= 2) Then

Exit Do
End If
G = Gen(p1g)
g1 = g1 + G
g2 = g2 + 1 - G
If (g1 >= 7 And g1 - g2 >= 2) Or (g2 >= 7 And g2 - g1 >= 2) Then

Exit Do
End If
G = Gen(p2g)
g2 = g2 + G
g1 = g1 + 1 - G
If (g1 >= 7 And g1 - g2 >= 2) Or (g2 >= 7 And g2 - g1 >= 2) Then

Exit Do
End If
G = Gen(p2g)
g2 = g2 + G
g1 = g1 + 1 - G
If (g1 >= 7 And g1 - g2 >= 2) Or (g2 >= 7 And g2 - g1 >= 2) Then

Exit Do
End If
Loop
mark1 = 1
End If

If g1 > g2 Then
ws1 = ws1 + 1
Else
ws2 = ws2 + 1
End If

st1 = 0
st2 = 0

M: Loop

If ws1 > ws2 Then
sumws1 = sumws1 + 1
Else
sumws2 = sumws2 + 1
End If

Next k

Pwin1 = sumws1 / 25000
Rasp(0) = Pwin1

For j = 1 To 13
Rasp(j) = Rasp(j) / 25000
Next j

For j = 1 To 13
summRasp = summRasp + Rasp(j)
Next j

For j = 1 To 13
Rasp(j) = Rasp(j) / summRasp
Next j

Tns = Rasp
End Function



Function FGeim(ByVal Pi As Double, ByVal si As Double, ByVal sj As Double, Optional VolatileOn As Boolean = True) As Variant
Application.Volatile VolatileOn

Dim P, s1, s2, win1 As Double
Dim j As Long
P = Pi
For j = 1 To 50000
s1 = si
s2 = sj

Do Until (s1 >= 4 And s1 - s2 >= 2) Or (s2 >= 4 And s2 - s1 >= 2)
G = Gen(P)
s1 = s1 + G
s2 = s2 + 1 - G
Loop
If s1 > s2 Then
win1 = win1 + 1
End If
Next j

FGeim = win1 / 50000

End Function





Function FGeim_Rasp(ByVal Pi As Double, ByVal si As Double, ByVal sj As Double, Optional VolatileOn As Boolean = True) As Variant
Application.Volatile VolatileOn
Dim Rasp(11) As Single
Dim P, s1, s2, win1 As Double
Dim j As Long
P = Pi

For j = 0 To 11
Rasp(j) = 0
Next j



For j = 1 To 50000
s1 = si
s2 = sj

Do Until (s1 >= 4 And s1 - s2 >= 2) Or (s2 >= 4 And s2 - s1 >= 2)
G = Gen(P)
s1 = s1 + G
s2 = s2 + 1 - G
Loop
If s1 > s2 Then
win1 = win1 + 1
End If

If s1 = 4 And s2 = 0 Then
Rasp(1) = Rasp(1) + 1
ElseIf s1 = 4 And s2 = 1 Then
Rasp(2) = Rasp(2) + 1
ElseIf s1 = 4 And s2 = 2 Then
Rasp(3) = Rasp(3) + 1
ElseIf s1 = 5 And s2 = 3 Then
Rasp(4) = Rasp(4) + 1
ElseIf s1 = 6 And s2 = 4 Then
Rasp(5) = Rasp(5) + 1
ElseIf s1 >= 5 And s2 >= 5 Then
Rasp(6) = Rasp(6) + 1
ElseIf s1 = 4 And s2 = 6 Then
Rasp(7) = Rasp(7) + 1
ElseIf s1 = 3 And s2 = 5 Then
Rasp(8) = Rasp(8) + 1
ElseIf s1 = 2 And s2 = 4 Then
Rasp(9) = Rasp(9) + 1
ElseIf s1 = 1 And s2 = 4 Then
Rasp(10) = Rasp(10) + 1
ElseIf s1 = 0 And s2 = 4 Then
Rasp(11) = Rasp(11) + 1
End If


Next j
Rasp(0) = win1 / 50000

For j = 1 To 11
Rasp(j) = Rasp(j) / 50000
Next j


FGeim_Rasp = Rasp

End Function



Function FPP(ByVal P As Single, Optional VolatileOn As Boolean = True) As Variant
Application.Volatile VolatileOn
Dim i As Integer
Dim Pg, f As Single
Pg = P
f = 0.5
For i = 1 To 100
f = 0.5 * (Pg * (1 + 2 * f ^ 2) - f ^ 4 * ((15 - 4 * f) * (1 - 2 * f * (1 - f)) - 10 * f ^ 2)) / Pg
Next i
FPP = f

End Function






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

Pwin_geim = p^4*( 15-4*p-10*p^2/(1-2*p*(1-p)) )

Но нам надо уметь находить и обратную функцию p=F(Pwin_geim) это может например понадобиться
Для проверки адекватности модели по экспериментальным данным или попыток вычислить вероятность взять очко через частоты вин-лоз гейма со своей подачи через какие-то кучи данных итд итп.

Воспользуемся принципом сжатых отображений и перепишем равенство в виде

p(i+1) = 0.5 * (Pwin_geim * (1 + 2 * pi ^ 2) - pi ^ 4 * ((15 - 4 * pi) * (1 - 2 * pi* (1 - pi)) - 10 * pi ^ 2)) / Pwin_geim

таким образом начав итерационный процесс с некоторого значения p (можно взять его равным 0,5)
мы будем вычислять каждое новое значение вероятности на основании значения предыдущего значения p.

Функцию можно сделать например так ( встроенную в excel)

Function FPP(ByVal P As Single, Optional VolatileOn As Boolean = True) As Variant
Application.Volatile VolatileOn
Dim i As Integer
Dim Pg, f As Single
Pg = P
f = 0.5
For i = 1 To 100
f = 0.5 * (Pg * (1 + 2 * f ^ 2) - f ^ 4 * ((15 - 4 * f) * (1 - 2 * f * (1 - f)) - 10 * f ^ 2)) / Pg
Next i
FPP = f
End Function



Примеры ввода данных
Если мы указали для m1,m2,st1,st2 нули то естественно мы получим вероятность выигрыша матча . а если m1=1 m2=1 то если сетов 3 в матче получим вероятность выиграть сет.
Допустим Вам интересно кто выиграет тай-брейк (или кто победит при счёте в сете 6-6 (или поровну))
Тогда m1=1,m2=1,st=61,st2=6 получим соответствующую Р для вин. тай-брейка….и так далее ….
Всё получаем для игрока1 (которому соответствуют параметры m1 , st1) маркер первой подачи надо установить по первой подаче текущего сета (а когда неизвестно то можно менять маркер (mark1) с1 на 0 или с 0 на 1).


=Tns(A9;B9;C9;D9;tb;mark1;0;J9;E9;F9;G9;H9)
Вводится сразу в 14 ячеек листа как функция ТРАНСП() так как Tns возвращает массив.
Будет так в окне {=Tns(A9;B9;C9;D9;tb;mark1;0;J9;E9;F9;G9;H9)}



Если нам потребуется разнести частоты распределения 6-6 по тайбреку (или условно тай-бр—когда по 6-6 и играется до перевеса в 2 очка) то мы можем поступить так
Взять частоту 6-6 в распределении и найти вероятность для первого игрока выиграть ситуацию
отражённую в функции {Tns(A9;B9;C9;D9;K9;I9;0;J9;E9;F9;G9;H9)}, где в функцию передано
m1=1 m2=1 st1=6 st2=6 (ячейки E9;F9;G9;H9) тогда частоты разнесутся согласно
f66* Tns ---для игрока 1 и f66*(1-Tns)---для игрока 2

функция {=FGeim_Rasp(W34;P29;Q29)} возвращает вероятность вин.гейм и распределение
4-0 4-1 4-2 5-3 6-4 s1&s2>=5 4-6 3-5 2-4 1-4 0-4

Можно при желании имея распределение по экспериментальным данным найти парамтр
Вероятности взять очко при своей подачи не только по обратной функции FPP а используя
инструмент «поиск решения» (или свой алгоритм оптимизации) –для этого находим сумму
квадратов разности исходного(экспериментального) и распред. функции FGeim_Rasp.
Число итераций в цикле уменьшаем до 10000 и можно добавить условие для поиска Р_очко
0<=Р_очко<=1 (по сути надо два условия забить в поиск 0<=Р_очко и Р_очко<=1 )



Функция аналогичная Tns но возвращающая ещё и вероятность тотала геймов в матче
{=Tns_tot(A9;B9;C9;D9;K9;I9;0;J9;E9;F9;G9;H9;A7;B7)}

A7-значение текущего тотала при выставленном счёте в функции;B7—тотал букмекера.
Функция возвращает вероятность появления события ТОТ матча меньше значения в B7
В ячейки A9;B9 можно ввести приближённое аналитическое выражение для вероятности win
гейм при своей подаче (описывается формулой Ргейма =C9^4*(15-4*C9-10*C9^2/(1-2*C9*(1-C9)))
C9—вероятность взятия очка. (для B9 по аналогии)

Могут пригодится формулы для вероятности выиграть матч при известной вероятности выиграть сет.
Для 3-ёх сетового матча Pwin_match = p^2*(1+2*(1-p))
Для 5-ти сетового матча Pwin_match =p^3*(1+3*(1-p)+6*(1-p)^2)
Раскрыв скобки получим компоненты по вероятности 2-0 2-1 1-2 0-2 (для 5-ти сетов по аналогии).
Допустим 2-0 Р= p^2 (для 3-ёх сетового)
Function Tns_tot(ByRef rp1st As Range, ByRef rp2st As Range, ByRef rp1g As Range, ByRef rp2g As Range, ByRef Mmarktb As Range _
, ByRef Vmark_1 As Range, ByVal Mmarkmany As Integer, ByRef Mnst As Range, ByRef fshm1 As Range, ByRef fshm2 As Range _
, ByRef fshst1 As Range, ByRef fshst2 As Range, ByRef Tec_tot As Range, ByRef TOT_Buk As Range, Optional VolatileOn As Boolean = True) As Variant
Application.Volatile VolatileOn
Dim Rasp(14) As Single
Dim m1, m2, st1, st2, marktb, mark1, markmany, G, n, ws1, ws2 As Integer
Dim i, j, k, sumws1, sumws2, g1, g2 As Long
Dim Pp1st, Pp2st, Pp1g, Pp2g, shm1, shm2, shst1, shst2, z, nst, mtb As Variant
Dim Pwin1, Pwin2, p1g, p2g, p1st, p2st, tb_0, tb_1, summRasp, Tt, Tb, summtot, t_if As Single
Set Pp1st = rp1st
Set Pp2st = rp2st
Set Pp1g = rp1g
Set Pp2g = rp2g
Set Tc_tot = Tec_tot
Set T_buk = TOT_Buk
Tt = Tc_tot.Value
Tb = T_buk.Value
t_if = 0
markmany = Mmarkmany
Set nst = Mnst
Set shm1 = fshm1
Set shm2 = fshm2
Set shst1 = fshst1
Set shst2 = fshst2
Set z = Vmark_1
Set mtb = Mmarktb
p1g = Pp1g.Value
p2g = Pp2g.Value
tb_0 = 0
tb_1 = 0
If nst.Value = 3 Then
n = 2
Else
n = 3
End If
marktb = mtb.Value
summRasp = 0
For j = 0 To 14
Rasp(j) = 0
Next j

For k = 1 To 25000 Step 1
mark1 = z.Value
m1 = shm1.Value
m2 = shm2.Value
st1 = shst1.Value
st2 = shst2.Value
ws1 = m1
ws2 = m2
summtot = 0
Do Until (ws1 = n And ws2 < n) Or (ws2 = n And ws1 < n)

If mark1 = 1 Then
p1st = Pp1st.Value
p2st = Pp2st.Value
ElseIf mark1 = 0 Then
p1st = 1 - Pp2st.Value
p2st = 1 - Pp1st.Value
End If

If marktb = 0 Then 'без тай-брейка
Do Until (st1 >= 6 And st1 - st2 >= 2) Or (st2 >= 6 And st2 - st1 >= 2)
i = st1 + st2 + 1
If Not (i Mod 2 = 0) Then 'нечет
G = Gen(p1st)
st1 = st1 + G
st2 = st2 + 1 - G
Else
G = Gen(p2st)
st2 = st2 + G
st1 = st1 + 1 - G
End If

If st1 = 6 And st2 = 0 Then
Rasp(1) = Rasp(1) + 1
ElseIf st1 = 6 And st2 = 1 Then
Rasp(2) = Rasp(2) + 1
ElseIf st1 = 6 And st2 = 2 Then
Rasp(3) = Rasp(3) + 1
ElseIf st1 = 6 And st2 = 3 Then
Rasp(4) = Rasp(4) + 1
ElseIf st1 = 6 And st2 = 4 Then
Rasp(5) = Rasp(5) + 1
ElseIf st1 = 7 And st2 = 5 Then
Rasp(6) = Rasp(6) + 1
ElseIf st1 = 6 And st2 = 6 Then
Rasp(7) = Rasp(7) + 1
ElseIf st1 = 5 And st2 = 7 Then
Rasp(8) = Rasp(8) + 1
ElseIf st1 = 4 And st2 = 6 Then
Rasp(9) = Rasp(9) + 1
ElseIf st1 = 3 And st2 = 6 Then
Rasp(10) = Rasp(10) + 1
ElseIf st1 = 2 And st2 = 6 Then
Rasp(11) = Rasp(11) + 1
ElseIf st1 = 1 And st2 = 6 Then
Rasp(12) = Rasp(12) + 1
ElseIf st1 = 0 And st2 = 6 Then
Rasp(13) = Rasp(13) + 1
End If
Loop
If st1 >= 6 And st1 - st2 >= 2 Then
ws1 = ws1 + 1
Else
ws2 = ws2 + 1
End If
If mark1 = 1 And Not (i Mod 2 = 0) Then
mark1 = 0
ElseIf mark1 = 1 And i Mod 2 = 0 Then
mark1 = 1
ElseIf mark1 = 0 And i Mod 2 = 0 Then
mark1 = 0
ElseIf mark1 = 0 And Not (i Mod 2 = 0) Then
mark1 = 1
End If

If st1 >= 6 And st2 >= 6 Then
summtot = summtot + 13
Else
summtot = summtot + st1 + st2
End If

st1 = 0
st2 = 0
End If

If marktb = 0 Then GoTo M 'с тай-брейком

Do Until (st1 = 6 And st1 - st2 >= 2) Or (st2 = 6 And st2 - st1 >= 2) Or (st1 = 6 And st2 = 6) Or (st1 = 7 And st2 = 5) Or (st2 = 7 And st1 = 5)

i = st1 + st2 + 1
If Not (i Mod 2 = 0) Then 'нечет
G = Gen(p1st)
st1 = st1 + G
st2 = st2 + 1 - G
Else
G = Gen(p2st)
st2 = st2 + G
st1 = st1 + 1 - G
End If
Loop

If st1 = 6 And st2 = 0 Then
Rasp(1) = Rasp(1) + 1
ElseIf st1 = 6 And st2 = 1 Then
Rasp(2) = Rasp(2) + 1
ElseIf st1 = 6 And st2 = 2 Then
Rasp(3) = Rasp(3) + 1
ElseIf st1 = 6 And st2 = 3 Then
Rasp(4) = Rasp(4) + 1
ElseIf st1 = 6 And st2 = 4 Then
Rasp(5) = Rasp(5) + 1
ElseIf st1 = 7 And st2 = 5 Then
Rasp(6) = Rasp(6) + 1
ElseIf st1 = 6 And st2 = 6 Then
Rasp(7) = Rasp(7) + 1
ElseIf st1 = 5 And st2 = 7 Then
Rasp(8) = Rasp(8) + 1
ElseIf st1 = 4 And st2 = 6 Then
Rasp(9) = Rasp(9) + 1
ElseIf st1 = 3 And st2 = 6 Then
Rasp(10) = Rasp(10) + 1
ElseIf st1 = 2 And st2 = 6 Then
Rasp(11) = Rasp(11) + 1
ElseIf st1 = 1 And st2 = 6 Then
Rasp(12) = Rasp(12) + 1
ElseIf st1 = 0 And st2 = 6 Then
Rasp(13) = Rasp(13) + 1
End If

If Not (st1 = 6 And st2 = 6) Then
If st1 >= 6 And st1 - st2 >= 2 Then
ws1 = ws1 + 1
ElseIf st2 >= 6 And st2 - st1 >= 2 Then
ws2 = ws2 + 1
End If

If mark1 = 1 And Not (i Mod 2 = 0) Then
mark1 = 0
ElseIf mark1 = 1 And i Mod 2 = 0 Then
mark1 = 1
ElseIf mark1 = 0 And i Mod 2 = 0 Then
mark1 = 0
Else
mark1 = 1
End If

If st1 = 6 And st2 = 6 Then
summtot = summtot + 13
Else
summtot = summtot + st1 + st2
End If

st1 = 0
st2 = 0

End If

If Not (st1 = 6 And st2 = 6) Then GoTo M
'тай-брейк
tb_1 = tb_1 + 1
g1 = 0
g2 = 0
If mark1 = 1 Then
G = Gen(p1g)
g1 = g1 + G
g2 = g2 + 1 - G
Else
G = Gen(p2g)
g2 = g2 + G
g1 = g1 + 1 - G
End If

If mark1 = 1 Then
Do
G = Gen(p2g)
g2 = g2 + G
g1 = g1 + 1 - G
If (g1 >= 7 And g1 - g2 >= 2) Or (g2 >= 7 And g2 - g1 >= 2) Then

Exit Do
End If
G = Gen(p2g)
g2 = g2 + G
g1 = g1 + 1 - G
If (g1 >= 7 And g1 - g2 >= 2) Or (g2 >= 7 And g2 - g1 >= 2) Then

Exit Do
End If
G = Gen(p1g)
g1 = g1 + G
g2 = g2 + 1 - G
If (g1 >= 7 And g1 - g2 >= 2) Or (g2 >= 7 And g2 - g1 >= 2) Then

Exit Do
End If
G = Gen(p1g)
g1 = g1 + G
g2 = g2 + 1 - G
If (g1 >= 7 And g1 - g2 >= 2) Or (g2 >= 7 And g2 - g1 >= 2) Then

Exit Do
End If
Loop
mark1 = 0
Else
Do
G = Gen(p1g)
g1 = g1 + G
g2 = g2 + 1 - G
If (g1 >= 7 And g1 - g2 >= 2) Or (g2 >= 7 And g2 - g1 >= 2) Then

Exit Do
End If
G = Gen(p1g)
g1 = g1 + G
g2 = g2 + 1 - G
If (g1 >= 7 And g1 - g2 >= 2) Or (g2 >= 7 And g2 - g1 >= 2) Then

Exit Do
End If
G = Gen(p2g)
g2 = g2 + G
g1 = g1 + 1 - G
If (g1 >= 7 And g1 - g2 >= 2) Or (g2 >= 7 And g2 - g1 >= 2) Then

Exit Do
End If
G = Gen(p2g)
g2 = g2 + G
g1 = g1 + 1 - G
If (g1 >= 7 And g1 - g2 >= 2) Or (g2 >= 7 And g2 - g1 >= 2) Then

Exit Do
End If
Loop
mark1 = 1
End If

If g1 > g2 Then
ws1 = ws1 + 1
Else
ws2 = ws2 + 1
End If

st1 = 0
st2 = 0

M: Loop

If ws1 > ws2 Then
sumws1 = sumws1 + 1
Else
sumws2 = sumws2 + 1
End If

If summtot + Tt < Tb Then
t_if = t_if + 1
End If
Next k

Pwin1 = sumws1 / 25000
Rasp(0) = Pwin1
Rasp(14) = t_if / 25000
For j = 1 To 13
Rasp(j) = Rasp(j) / 25000
Next j

For j = 1 To 13
summRasp = summRasp + Rasp(j)
Next j

For j = 1 To 13
Rasp(j) = Rasp(j) / summRasp
Next j
Tns_tot = Rasp
End Function



Обратные функции для расчёта вероятности выиграть сет при известной вероятности win.матч

Function FOBR_5(ByVal P As Single, Optional VolatileOn As Boolean = True) As Variant
Application.Volatile VolatileOn
Dim i As Integer
Dim Pg, f, A, Y1, Y2, Y3 As Single
Pg = P
f = 0.5
A = 0.05
For i = 1 To 200
Y1 = 10 * f ^ 3 + 6 * f ^ 5 - 15 * f ^ 4 - Pg
Y2 = 10 * (f + A) ^ 3 + 6 * (f + A) ^ 5 - 15 * (f + A) ^ 4 - Pg
Y3 = 10 * (f - A) ^ 3 + 6 * (f - A) ^ 5 - 15 * (f - A) ^ 4 - Pg
If (Abs(Y1) < Abs(Y2)) And (Abs(Y1) < Abs(Y3)) Then
f = f
A = A / 5
ElseIf (Abs(Y2) < Abs(Y1)) And (Abs(Y2) < Abs(Y3)) Then
f = f + A
Else
f = f - A
End If

Next i
FOBR_5 = f
End Function

Function FOBR_3(ByVal P As Single, Optional VolatileOn As Boolean = True) As Variant
Application.Volatile VolatileOn
Dim i As Integer
Dim Pg, f, A, Y1, Y2, Y3 As Single
Pg = P
f = 0.5
A = 0.05
For i = 1 To 200
Y1 = 3 * f ^ 2 - 2 * f ^ 3 - Pg
Y2 = 3 * (f + A) ^ 2 - 2 * (f + A) ^ 3 - Pg
Y3 = 3 * (f - A) ^ 2 - 2 * (f - A) ^ 3 - Pg
If (Abs(Y1) < Abs(Y2)) And (Abs(Y1) < Abs(Y3)) Then
f = f
A = A / 5
ElseIf (Abs(Y2) < Abs(Y1)) And (Abs(Y2) < Abs(Y3)) Then
f = f + A
Else
f = f - A
End If

Next i
FOBR_3 = f
End Function


Обратная функция для обоих случаев FOB_3_5(вероятность ; число сетов) число сетов вводится в ячейку excel
Function FOB_3_5(ByVal P As Single, ByRef Mn As Range, Optional VolatileOn As Boolean = True) As Variant
Application.Volatile VolatileOn
Dim i, nset As Integer
Dim Pg, f, A, Y1, Y2, Y3 As Single
Pg = P
f = 0.5
A = 0.05
Set n = Mn
nset = n.Value
For i = 1 To 200

If nset = 3 Then
Y1 = 3 * f ^ 2 - 2 * f ^ 3 - Pg
Y2 = 3 * (f + A) ^ 2 - 2 * (f + A) ^ 3 - Pg
Y3 = 3 * (f - A) ^ 2 - 2 * (f - A) ^ 3 - Pg
Else
Y1 = 10 * f ^ 3 + 6 * f ^ 5 - 15 * f ^ 4 - Pg
Y2 = 10 * (f + A) ^ 3 + 6 * (f + A) ^ 5 - 15 * (f + A) ^ 4 - Pg
Y3 = 10 * (f - A) ^ 3 + 6 * (f - A) ^ 5 - 15 * (f - A) ^ 4 - Pg
End If

If (Abs(Y1) < Abs(Y2)) And (Abs(Y1) < Abs(Y3)) Then
f = f
A = A / 5
ElseIf (Abs(Y2) < Abs(Y1)) And (Abs(Y2) < Abs(Y3)) Then
f = f + A
Else
f = f - A
End If

Next i
FOB_3_5 = f
End Function


ПРОДОЛЖЕНИЕ СЛЕДУЕТ

#2 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 17 September 2016 - 14:15

Function FGeim_Rasp(ByVal Pi As Double, ByVal si As Double, ByVal sj As Double, Optional VolatileOn As Boolean = True) As Variant
Application.Volatile VolatileOn
Dim Rasp(11) As Single
Dim P, s1, s2, win1 As Double
Dim j As Long
P = Pi

For j = 0 To 11
Rasp(j) = 0
Next j



For j = 1 To 10000
s1 = si
s2 = sj

Do Until (s1 >= 4 And s1 - s2 >= 2) Or (s2 >= 4 And s2 - s1 >= 2)
G = Gen(P)
s1 = s1 + G
s2 = s2 + 1 - G
Loop
If s1 > s2 Then
win1 = win1 + 1
End If

If s1 = 4 And s2 = 0 Then
Rasp(1) = Rasp(1) + 1
ElseIf s1 = 4 And s2 = 1 Then
Rasp(2) = Rasp(2) + 1
ElseIf s1 = 4 And s2 = 2 Then
Rasp(3) = Rasp(3) + 1
ElseIf s1 = 5 And s2 = 3 Then
Rasp(4) = Rasp(4) + 1
ElseIf s1 = 6 And s2 = 4 Then
Rasp(5) = Rasp(5) + 1
ElseIf s1 >= 5 And s2 >= 5 Then
Rasp(6) = Rasp(6) + 1
ElseIf s1 = 4 And s2 = 6 Then
Rasp(7) = Rasp(7) + 1
ElseIf s1 = 3 And s2 = 5 Then
Rasp(8) = Rasp(8) + 1
ElseIf s1 = 2 And s2 = 4 Then
Rasp(9) = Rasp(9) + 1
ElseIf s1 = 1 And s2 = 4 Then
Rasp(10) = Rasp(10) + 1
ElseIf s1 = 0 And s2 = 4 Then
Rasp(11) = Rasp(11) + 1
End If


Next j
Rasp(0) = win1 / 10000

For j = 1 To 11
Rasp(j) = Rasp(j) / 10000
Next j



FGeim_Rasp = Rasp

End Function



вводится как функция массивов {=FGeim_Rasp(W34;T34;U34)} в 12 ячеек получаем данные PWgeim 4-0 4-1 4-2 5-3 6-4 s1&s2>=5 4-6 3-5 2-4 1-4 0-4

если распределение не надо то можно так

Function FGeim(ByVal Pi As Double, ByVal si As Double, ByVal sj As Double, Optional VolatileOn As Boolean = True) As Variant
Application.Volatile VolatileOn

Dim P, s1, s2, win1 As Double
Dim j As Long
P = Pi
For j = 1 To 50000
s1 = si
s2 = sj

Do Until (s1 >= 4 And s1 - s2 >= 2) Or (s2 >= 4 And s2 - s1 >= 2)
G = Gen(P)
s1 = s1 + G
s2 = s2 + 1 - G
Loop
If s1 > s2 Then
win1 = win1 + 1
End If
Next j

FGeim = win1 / 50000

End Function


ПРОДОЛЖЕНИЕ СЛЕДУЕТ

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

Отредактировано Bambuk, 17 September 2016 - 14:12.


#3 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 17 September 2016 - 14:45

Теперь поясню о концепции триггерной конструкции.

дело в том что сопоставление реальных частот экспериментальных данных и модели приводит к осознанию полного несоответствия расчёта и эксперимента если исходить как в футболе от некого среднего...в теннисе это МЛЯ не катит ГОСПОДА!!!!
Наиболее простая концепция дающая совпадение получается при расчленении игр на вин и лоз и вот для каждой ветви надо знать эти долбанные Рвзять ОЧКО

Допустим у нас вот так в выборке по прецедентам 0.6--вер реализации ветви вин 0.4--Р ветви лоз

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

С вином матча там понятно--он будет близок к 0.6 (так как формально куча и определяет вероятность вина но при условии что мы там выборку забацали адекватно и по соотношению рейтингов и других параметров акромя прочей хрени)

допустим нас интересует тотал меньше 24.5 допустим при выставлении ентой циферы получили верочтности для ветвей 0.65 и о.61
так вот Р тогда надо считать так 0.6*0.65+(1-0.6)*0.61 ...И ТАК ВСЁ ЁПРСТ.. допустим если считаем вероятность счёта матча 1-2 ...всё по аналогии---в начале считаем по Рвзять ОЧКО для ветви вин потом для своих Р_ОЧКО для лузовой ветви и по такой же формуле ищем Р(1-2)

Я хочу заострить внимание на такой триггерной концепции (именно так БК считают по своим ОЧКО) в противном случае----кефф на лузера 1-2 был бы меньше
0-2 (это если убрать триггерную концепцию)... В силу того что на мой вопрос---почему кефф там больше мне ни кто не ответил я подозреваю что многие вообще ни ху...не задумывались над раскладами в линии.....А следовательно много чё не догоняют и в целом.....(особенно в лайве)...



ПРОДОЛЖЕНИЕ СЛЕДУЕТ

#4 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 17 September 2016 - 15:12

Для понимания и первых экспериментов можно пока вот этот файл скачать...(база там не допиленная но можно тупо какого-то игрока пока выбирать и сравнивать---ветви вин и лоз там вам понятно будет---это те матчи которые игрок выиграл и те которые проиграл)...смотрите средние показатели там они тоже есть....https://yadi.sk/i/5zVGESkpvH9Ri

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

#5 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 17 September 2016 - 15:27

Решил дописать---может кому пригодится...
в файле ентом косопузом там внизу таблица начиная с яч ВА 5809 есть полоса с формулами
она раздербанивает вот такую запись на составляющие 7-6(6) 7-6(6) по счёту
берём данные из столбца score (если всю строчку выделить и вставить где раздербанино то получите рез....ячейки где что-то рассчитывалось я просто убрал формулы тк как надо было фильтровать данные по дате.......)

#6 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 17 September 2016 - 15:52

Да-с и Господа...чуть не забыл----если вы применяете обратные функции то они должны применяться с концепцией триггерной модели игры....---определяем вероятности ветвей а потом опять по основной формуле связывающей две ветви...... Одну ветвь можно применить допустим если вы уверены что идёт всё по ней---допустим один из тупых вариантов---рассчитать ход остальных событий по данным одного сета (а именно по Р очко....для каждого игрока....но чаще чем реже другие сеты идут с другими характеристиками.... :) можно допустим принять ход одного сета как свидетельство в пользу той или иной ветви но там могут быть и и ные свидетельства---типа "ранение в жопу одного из игроков" и так далее...)

#7 OFFLINE   Gargas

    Специалист


  • Участник II
  • ПипПипПипПип
  • 520 сообщения
25

Добавлено 17 September 2016 - 18:29

Бамбук, прости. У меня снова к тебе старый вопрос - НАХРЕНА СТОЛЬКО ВЫСОКОУМНОГО ТЕКСТА? да еще написанного кошмарным языком. Ты думаешь его кто-то осилил? Или это самолюбование? Будем признательны если вместо этой диссертации ты изложил итоги в двух трех предложениях для людей с интеллектом чуть ниже среднего.

#8 OFFLINE   serg11231

    Специалист


  • mp
  • 1179 сообщения
283

Добавлено 17 September 2016 - 22:24

Бамбук, проблема в том, что P(очко) не постоянна на протяжении всего матча. Да что там матча, порой и гейма. На этом тему можно закрыть.

#9 OFFLINE   serg11231

    Специалист


  • mp
  • 1179 сообщения
283

Добавлено 17 September 2016 - 23:28

Нельзя в теннисе построить строго выстроенную модель по аналогии с ТФМ. Я уже сказал о том, что принимать вероятность выиграть очко постоянной на весь матч - ошибка. Это очевидно имхо. Теннис - игра индивидуальная, здесь психология на первом плане, особенно у девок. Тут на динамику Р(очко) оказывают влияние хулиарды факторов. Даже не столько количество выигранных очков; даже не столько порядок, в котором выиграны эти очки; и даже не столько характер самого розыгрыша каждого конкретного очка (хотя всё это очень даже оказывает влияние). Но на эту вероятность может повлиять всяческая херня - от внезапного медикал-таймаута или дождя, до элементарных месячных у баб. Так что попытки строить строгие модели в теннисе мне видятся утопией. Теннис надо чувствовать, а для этого очень рекомендую в него играть.

Отредактировано serg11231, 17 September 2016 - 23:29.


#10 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 18 September 2016 - 07:06

Сообщенияserg11231, on 17 September 2016 - 22:24, сказал:

Бамбук, проблема в том, что P(очко) не постоянна на протяжении всего матча. Да что там матча, порой и гейма. На этом тему можно закрыть.
Ну в лайве это понятно---я же написал об этом своё мнение...что может меняться от сета к сету от гейма к гейму. Но для каких-то доматчевых оценок конструкция что я предложил вполне пригодна. Дело в том что нам по идее похеру всякие детали...мы же ставим задачу априорно--не один какой-то матч угадать а чтоб на каком-то объёме совпадало со статистикой реальных встреч---а это как раз имеет место быть поэтому затея не совсем утопична. Во первых она --модель даёт понимание что и как и через что влияяет на ту или иную вероятность (допустим тотал или счёт в матче или счёт в сете....)....
Ко всему прочему мы понимаем --что целесообразно включать в базу данных....допустим если обсчитать игроков хотя бы на 20-30 игр и приписать им вот эти Рочко для игрока и для кучи(20-30 рыл) для двух состояний триггера и добавить средний рейтинг для каждого такого состояния триггера по той куче что создаёт состояние триггера (выигрыши и проигрыши)....то разумеется имея такие данные для двух соперников мы можем в БД намного лучше идентифицировать пару, сделать выборку и хотябы в ней посмотреть параметры выигрышей-проигрышей (если в выборке 40-50 пар то можно ж взять отношение винов к числу пар за вероятность P=W/N
можно взять и байесовскую оценку вероятности P=(W+1)/(N+2) потом там мы же получим в выборке ещё и данные по Рочко и сможем расчёт делать и тотала и чё хотите допустим что будет 2-1 или 2-0 итд... но дело-то вот в чём---всё описание в интернете дано для ситуации когда берутся не 4 параметра (2 для каждого состояния триггера) а только одно состояние(и два параметра Роч1 Роч2)--среднее и там если вы подставите это среднее в формулу то не будет соответствия по частотам событий с экспериментом а то что я предлогаю--там будет. Брать или не брать модель на вооружение это персональное дело каждого....Но надо-то брать то чё более менее соответствует реалиям эксперимента...а буржуи нахуячат буков, а что нет соответствия с данными не видят---вот и смысл всей темы (надо всё проверять самостоятельно..и так везде и во всём что касается ставок....---это и есть основная мысль.....)

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

Отредактировано Bambuk, 18 September 2016 - 07:11.


#11 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 18 September 2016 - 07:32

СообщенияGargas, on 17 September 2016 - 18:29, сказал:

Бамбук, прости. У меня снова к тебе старый вопрос - НАХРЕНА СТОЛЬКО ВЫСОКОУМНОГО ТЕКСТА? да еще написанного кошмарным языком. Ты думаешь его кто-то осилил? Или это самолюбование? Будем признательны если вместо этой диссертации ты изложил итоги в двух трех предложениях для людей с интеллектом чуть ниже среднего.
Я пишу как умею...и лит. институтов не кончал-с...... Если что-то не понятно купите себе букварь и задавайте вопросы по существу.....
Ни каких итогов нет....я дал коды функций, которые любой может использовать так как считает нужным---может хоть в Ж засунуть листинг.....
Это тема для людей со среднем уровнем мат. подготовки не выше 1-го курса вуза (и то не университетского уровня...то есть это не кафедра высшей мат. МГУ) ....

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

#12 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 19 September 2016 - 07:14

Попробую на реальных цифрах показать огромную разницу в подходах.
Так как по сути БД с необходимыми характеристиками нет то воспользуемся для проверки и данного примера те что есть (ссылка в постах выше)...
выберем winner_rank в диапазоне 1--10 а loser_rank 20--35 и будем считать что это вот два абстрактных игрока имеют такие параметры при игре между собой.
вин ветвь 0.6905 и 0.5832
лоз ветвь 0.622 и 0.6828
проведя вычисления и учитывая что частота реализации ветви вин 0.7227 (это кефф 1.384 если принять это за вероятность вина матча)
получим по нашей формуле объединяющей ветви Р вин матч 1.386

а средние показатели в выборке по Р очко(это если считать как везде написано) 0.67 0.612 и расчёт даст кефф1.306

Теперь возникает вопрос--какому показателю больше доверять---либо расчётному по числу заходов выигрышей у нас это соответствует вероятности 0.7227

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

Дело тут вот в чём--если допустим провести ещё один подсчёт но взять winner_rank =10---19 вместо 1---10

то соотношение вин-лоз по данным матча в выборке даст вероятность 0.5428 (кефф1.84) а расчёт по триггерной модели через Рочко даст кефф 2.02 (ну около 2 так как там у нас колебаются расчётные значения...так как получаются численными методами а не аналитически).... можно например в такой ситуации отказаться от ставки если кефф 1.9 ставя под сомнение кефф 1.84....


Теперь по поводу многочисленного постоянного нытья относительно травм, цыганского сглаза, дождя, ветра и похмельного синдрома у игрока(игроков..если про футбол говорить).....
Вот представьте озеро, реку...два человека кидают камушки--кто дальше........ну вот если нет ориентира то ХЗ на самом деле кто кинул дальше (если нет явного превосходства)...так вот ситуация коренным образом поменяется если Вы "воткнёте" в водоём буй (или ху...) так вот тогда можно в некоторых бросках говорить конкретно---камень пошёл за буй а вот этот--не долетел...согласитесь что так определить --кто кинул дальше становится проще....
Так если у нас есть "БУЙ" в виде оценки вероятности то кто вам мешает интуитивно понять---если у игрока травмировано плечо, то шансы будут ближе буя а если плечо травмировано у противника то дальше...чего тут не понятно-то? если "буя"нет то сравнить с кефом БК вы "травму" по любому не сможете зная о травме или ранении в задницу.....

#13 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 19 September 2016 - 07:48

Ещё большие расхождения в оценках между триггерной конструкцией и расчёту без триггера будут если начать рассчитывать, например, точный счёт в матче и тому подобное там кефы на лузера в позициях 0-2 1-2 будут иметь разную логическую направленность по величинам и если считать без триггера то не будет совпадения с реальными данными. Возможно кого-то смущает слово триггер...но по сути мы просто рассматриваем две гипотезы--гипотеза что будет вин и гипотеза что будет лоз.
Поэтому кто не до конца понимает--почему именно так идёт расчёт посмотрите в интернете про формулу полной вероятности....
У нас вероятность гипотезы вин = отношению числа вин/общее число в выборке (а лоз 1- Рвин...так как иных гипотез нет...хотя если бы данных в базах было много можно ввести и ещё одну гипотезу---игра с равными(близкими шансами)....тогда разделить гипотезы можно было бы например по форе числа вин.геймов или можно вычислять Рочко для абстрактных игроков и смотреть разность этих вероятностей или отношение и так далее....тогда указав границы мы можем создать и три гипотезы...суть от этого не поменяется по применению формулы полной вероятности (но у нас получатся вместо двух вероятностей три --для реализации каждой гипотезы)... то что мы вычисляем для ветвей---это по смыслу условные вероятности событий ....(вероятность вин при условии реализации ветви вин и вторая--Рвин/при условии что осуществляется ветвь лоз).....

Отредактировано Bambuk, 19 September 2016 - 07:49.


#14 OFFLINE   Mihail79

    Специалист


  • Участник II
  • ПипПипПип
  • 410 сообщения
146

Добавлено 19 September 2016 - 13:53

Теннис - отдельная вселенная, не подвластная мне. Бамбук, давай еще свои циферки, результаты твоих наработок на футбол. Я очень внимательно читаю твои посты, те кто считают что в твоих цифрах ничего не понять - они еще не эволюционировали до уровня ПОПАНУС СТАТИСТИКУС PRO )))

#15 OFFLINE   Антон Рогов

    Специалист


  • Участник II
  • ПипПипПип
  • 172 сообщения
28

Добавлено 19 September 2016 - 20:21

бля ,))))мне это даже мышкой пролистнуть тяжело было))))

#16 OFFLINE   petrovipv

    Специалист


  • Участник II
  • ПипПипПип
  • 160 сообщения
6
  • МестоположениеРоссия, СК

Добавлено 19 September 2016 - 20:33

СообщенияАнтон Рогов, on 19 September 2016 - 20:21, сказал:

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

#17 OFFLINE   Dist123

    Новичок


  • Участник
  • Пип
  • 2 сообщения
0

Добавлено 19 September 2016 - 21:19

ипать, монстр)) жаль, с матаном не подружился(

#18 OFFLINE   fantozzzy

    Специалист


  • Участник II
  • ПипПипПип
  • 249 сообщения
20

Добавлено 20 September 2016 - 11:01

меня всегда смешит до колик реакция читающих творения Бамбука.сразу вспоминается лекция по шахматам О.Бендера"плодотворная дебютная идея" для шахматистов в Васюках.

#19 OFFLINE   petrovipv

    Специалист


  • Участник II
  • ПипПипПип
  • 160 сообщения
6
  • МестоположениеРоссия, СК

Добавлено 20 September 2016 - 17:32

СообщенияBambuk, on 19 September 2016 - 07:48, сказал:

Поэтому кто не до конца понимает-
Bambuk вечер добрый. Хотел узнать ваше мнение. Как правило на т.м. 5,5 в среднестатистическом матче кэф от 1,04 до 1,06. При раннем забитии гола, в пределах первых 5 минут, кэф вырастит до 1,12-1,14 приблизительно. Т.е. значения до забития как по кэфу события т.м. 4,5. Что если выбирать матчи при раннем забитии гола и входить на т.м. 5,5 при кэфе 1,12-1,14? есть ли здесь профит, или для этого нужно перелапатить статистику?
либо при раннем забитии переходить на т.м 6,5 и брать кэф 1,03-1,05.

Отредактировано petrovipv, 20 September 2016 - 17:35.


#20 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 20 September 2016 - 18:22

Сообщенияpetrovipv, on 20 September 2016 - 17:32, сказал:

Bambuk вечер добрый. Хотел узнать ваше мнение. Как правило на т.м. 5,5 в среднестатистическом матче кэф от 1,04 до 1,06. При раннем забитии гола, в пределах первых 5 минут, кэф вырастит до 1,12-1,14 приблизительно. Т.е. значения до забития как по кэфу события т.м. 4,5. Что если выбирать матчи при раннем забитии гола и входить на т.м. 5,5 при кэфе 1,12-1,14? есть ли здесь профит, или для этого нужно перелапатить статистику?
либо при раннем забитии переходить на т.м 6,5 и брать кэф 1,03-1,05.
Конкретно по ТМ не могу сказать...тут так невозможно определить--будет профит или нет... Если просто всё подряд фигачить то скорее всего это ни чего не даст...я просто сужу по ТМ-ТБ0.5 Ситуация по маленьким кефам достаточно гиморная--в БК там вообще ловли нет...если по бирже то там спред по любому тик а это для таких кефоф очень много...если только вы заявки кидать будете на какие-то кефы тогда там ещё возможно надеятся....а Вы попробуйти поизучать вот эти скачки кефа при голе...дело в том что на некоторых рынках (ну допустим ставка на Х или против Х и тому подобное или кефф на П1) там же не сразу устаканивается спред а он в начале широкий после открытия рынка...вот если тока попробовать вбрасывать чёта туда ...я хз честно говоря....
По идее когда нет кефоф но что-то надо проверить -- можно посчитать по модели Сектора а потом подкорректировать на реальном рынке по тем кефам что в основном там дают (там же кефы будут зависить от исходных МО1+МО2 если тотал брать ваш.) Вот сделать коррекцию расчёта по Сектору чтоб кефы похожи были и можно чуть пониже даже для страховки если там около 0 ситуация то можно попробовать какие-то критерии подобавлять (ну допустим ввести ограничение на размер кефа какого-то можно и сам коридор указать допустим что берём итд.... я вам вот что скажу по тоталу---дело в том что вот глядя на формулу МО1+МО2 надо понять---это как бы теоретически тока определяет расклад а практически будет разница между 3.2+0.6 и допустим 2+ 1.8 хотя кефы формально должны быть одинаковые на ТМ_ТБ.....попробуйте в этом направлении порыть.) Там проблема с этими скачками---по модели там часто (и даже очень) с рынком несоответствие....придётся какой-то кефф опять выбирать....тут погрешностей будет дохера---однозначного ответа всё равно не будет по профиту(я так думаю)...
Вообще-то есть сервисы где могут прогнать любую стратегию но там очень много просят по баблу (но у них правда кефоф дохера для лайва)...я как-то списывался с одними Господами-тестилами...но сейчас даже не помню их почту.....