Блог им. Lafert

Еще раз о теории вероятностей и соотношении стоп/профит, или пол смартлаба знает теорвер на 2

    • 17 октября 2014, 12:02
    • |
    • Lafert
  • Еще
Вчера был топик, где доказывалось, что при соотношении стопа к профиту, скажем, 1:3 стоп будет срабатывать не в 3, а в 5 раз чаще, и даже было дано какое-то
доказательство. Так, как мне лень было искать ошибку в доказательстве, то приведу просто программу, которая моделирует эту ситуацию в матлаб. Если кто хочет проверить лично, покупаем Матлаб (или берем демо-версию), или скачиваем его бесплатный аналог Octave, после чего вставляем код и запускаем.

Логика программы такова. Мы задаем стоп и профит. После этого проводим 10000 испытаний, в каждом из которых моделируем изменения цены на 1 тик, пока цена не достигнет или стопа, или профита

s=0;
p=0;
stop=1;
profit=3;
for i=1:10000
   a=0;
   while not(a<=-stop || a>=profit)
      r=rand();
      if r>0.5
         a=a+1;
      end
      if r<0.5
         a=a-1;
      end
   end
   if a<=-stop
      s=s+1;
   end
   if a>=profit
      p=p+1;
   end
end
s
p

А теперь результаты программы за 5 запусков
Кол-во
стопов профитов
7536   2464
7410   2590
7521   2479
7494   2506 
7490   2510

Ну, думаю, тут всем видно, что соотношение все таки скорее 3:1, чем 5:1

PS прошу накинуть плюсов, что бы вывести на главную. Пусть прочитают люди, голосовавшие за вчерашний пост, что бы им стало немножко стыдно) 
★14
106 комментариев
Леха Майтрейд все таки оказался прав, не смотря на ответ, набравший почти 200 плюсов)
avatar
Даа… Похоже преимущество даёт только точка входа.
avatar
Вот тут кроется философская ошибка r=rand(); не математическая.
avatar
Reshpekt Fund Russia, ну, тогда предложите математическое доказательство моей правоты) А вообще, надо мне как-то самому вспомнить теорвер и написать доказательство. Утверждение то ведь совсем не сложное.
avatar
Lafert, ну, подумайте сами просто глядя на результаты. Они в сумме равны 10'000, что уже не так.
avatar
Reshpekt Fund Russia, Их должно было быть 9950 = так как 0.5 50 раз должно было выпасть =) при шаге 0.01
avatar
Twilight_reg73, да не, я ж грю философская ошибка, но можно и математической назвать. До срабатывания тейка 3 цена проходит 2 тика в сторону тейка. Эти тики не учтены, они на стороне позиции. На цифрах если, то в 10000 случаях (из примера) стопы сработают ~2450 раз, тейки ~850 раз, всего по сумме 3300 случаев, 6700 случаев за бортом. Угадаем с 3-х раз, профит там или убыток.
avatar
Reshpekt Fund Russia, в программе всё честно,
если цена сначала поднялась, потом опустилась, то стопа не будет.
а вот если поднялась, опустилась, опустилась, то будет стоп

еще в программе можно i увеличивать внутри while, тогда будет 10000 подкидываний монетки, что есть более честно.
но и в этом случае соотношение остаётся 3:1 (стопы чаще)

я тут на смарте где-то комментировал и писал что при стоп: тейк как 1:3 вероятность стопа будет 1:2 (вероятность тейка 1/8), но я не учёл ситуации, когда
+1-1-1, т.е. стоп срабатывает не сразу.
avatar
Павел Bosco М, 16% срабатывания тейка при 1 к 3 то есть 1 к 6
avatar
Павел Bosco М, я же говорю, что правильно всё, 1 к 3, но философски неверно. Тики в пользу позиции не учтены.
avatar
Reshpekt Fund Russia, Внизу темы картинка с учетом позиций
avatar
Reshpekt Fund Russia, если бы они не были равны 10000, то я бы искал баг, а так только подтверждается работоспособность программы
avatar
Lafert, да нет же. Чуть ниже ответил. Каждый случай у вас приводит либо к одному, либо к другому, а так не должно быть.
avatar
Reshpekt Fund Russia, Там вообще то цикл While он выполняется каждый случай пока не будет тейк или стоп.
Он отличается от for про который вы имеет ввведу
avatar
Twilight_reg73, я не знаю на чём это написано. Я быстро написал, на чём знаю и вижу, что вижу. Если на пальцах, то выбрасываем рандом (1 или 0). Если 1, то идём вверх к тейку, если 0, то идём вниз к стопу, а по сути сразу стопимся, т.к. стоп всего в 1 тике от позиции. Отсюда сразу понятно, то тейк или стоп сработает в 1/3 всех перебооров, а 2/3 — это «в профите без тейка».
avatar
Reshpekt Fund Russia, при шаге 1 тик и стопе 1 тик Стоп сработает в 50% случаях
avatar
Из оставшихся 50% Будет 50% в БУ(0) на 2 тике и 50% +2 тика от начальной позиции
avatar
Twilight_reg73, нет, неправильно. Напишите программку-то. БУ вообще не катит, т.к. в этом нет смысла.
avatar
Twilight_reg73, про тейк забыли, если позиция 0, стоп -1, а тейк +1, то да, 50%. Именно тогда количество итераций 10'000 составит сумму случаев. В нашем примере такого быть не может по-определению, так-как 2 тика в торону тейка не попадают в исход.
avatar
Reshpekt Fund Russia, 1 итерация это конечное условия стоп либо тейк
внутри 1 итерации есть 8 возможностей достижения результата
и пока результат не достигнут новая не начинается. по этому 10 000 это верный результат.
avatar
Twilight_reg73, итерация — это случай, рандомно генерируемый «вверх или вниз». Движение вверх на 1 и 2 тика — работают на позицию.
avatar
Reshpekt Fund Russia, В определениях уже запутался=)
Нельзя такие вопросы в пятницу обсуждать =)
avatar
Twilight_reg73, согласен, надо по пивку уже, но код я тебе кинул, забавляйся.
avatar
Reshpekt Fund Russia, Я в экселе уже все посчитал =) мне достаточно
результат % будут такие же на бесконечности.
avatar
Reshpekt Fund Russia, тогда больше в 2 раза а не в 3:))
avatar
Mr. Bean, почему? В три.
avatar
Twilight_reg73, как формировать луп не важно, важно, как учесть результаты, когда позиция не лосит, но не тейкнута.
avatar
Reshpekt Fund Russia, Twilight все правильно говорит. Моделирование тиков идет до тех пор, пока не произойдет или тейк, или стоп. Только после наступления тейка или стопа мы переходим ко следующей итерации. То есть, для разных итераций количество тиков различное. Написано, как я указал в посте, на Матлабе. На Октаве скорее всего тоже будет работать аналогично.
avatar
Lafert, сможете в консоль браузера код кинуть? Я напишу. Шесть строчек всего.
avatar
Reshpekt Fund Russia, хорошо, сейчас нет времени. Через несколько часов продолжим.
avatar
Reshpekt Fund Russia, ТО есть вайл будет в 1 цикле перезапускатся столько раз пока в 8 известных вариантов событый не достигнит стопа или тейка. тоесть минимум 3 максимум 8 раз будет перезапускатся while внутри каждого попытки из 10 000
avatar
Сделайте тест стоп 3 тейк 9 тиков
avatar
Twilight_reg73, 7494/2506
avatar
Lafert, Код покажите где стоп 3 тейк 9
avatar
Twilight_reg73, С шагом 1
avatar
При тесте стоп 1 тик вероятность срабатывания всегда будет около 66%
avatar
Так же сделайте тест стоп 9 тейк 27 и 38 114
avatar
Да и rand() всегда ненастоящий обычно.
avatar
Twilight_reg73, в коде есть переменные stop и profit. Шаг всегда 1. Меняете их и получаете, что надо. Я вам уже в комментарии ответил, что при stop=3 profit=9 результаты эксперимента

7494 стопов и 2506 профитов
avatar
Twilight_reg73, Достаточно чтобы у него было равномерное распределение с матожиданием 0.5. Мы же не все тики предсказываем.
avatar
ахах))) да поймите уже дело не в том сколько раз стоп выпал, а сколькими способами он МОГ выпасть. этот тест не учитывает всё пространство элементарных событий.
avatar
Mr. Bean,? Еще раз внимательно прочитайте программный код, и аргументируйте свое возражение
avatar
Lafert, если не сложно, могли бы вы переписать код чтобы он не стопы считал а чтобы делал три шага и считал количество пересечений линии стопа (т.е. без остановки цикла на стопе, а чтоб доделывал оставшиеся шаги) и выложить статистику?
avatar
Mr. Bean, смысл?
avatar
Lafert, а как вы иначе вероятность посчитаете? вот у вас чему равна вероятность выпадения стопа и как вы её посчитали можете объяснить?
avatar
Lafert, кроме того у вас цикл вайл может сделать бесконечное кол-во шагов.
avatar
Mr. Bean, стоп и профит тоже могут висеть бесконечно, если это не инструмент с экспирацией.
avatar
Lafert, если их поставить очень далеко то да. но нас всё же интересует вопрос когда что-то из них исполнилось. тогда цена сделала конечное число шагов, но цена могла пойти и по другому пути и за это же число шагов не попасть ни в стоп ни в профит. чтобы вычислить верную вероятность надо и эти случаи тоже учесть иначе не понятно что вы принимаете за 100%. а ваш код показывает просто число стопов и профитов, ну и что с того, это же ещё не вероятности.
avatar
Mr. Bean, да, это моделирует ситуацию когда трейдом не управляют, или тейк или профит, а сколько раз было когда немного не доходило до тейка. но в конце концов если и управлять то вероятности будут на периоде те же
avatar
И приблизительно к реальным условиям 200 к 600.
avatar
Twilight_reg73, запустил. Проц раскалился докрасна и что-то считает. Если за 5 минут закончит, напишу результат, если нет, остановлю расчет. Код есть, можете считать сами)
avatar
Twilight_reg73, в 5 минут уложился, 7539 стопов и 2461 профитов
avatar
Традиционное отождествление модели и реального рынка, что в корне ошибочно, IMHO.

Намёк: я торгую руками в разы профитнее, чем любой, торгующий с сопоставимой частотой алгоритм, включая собственные.
avatar
старый трейдер, понятно, что модель может быть точной только в некоторых пределах, и Вам можно только позавидовать, если умеете делать профит безо всяких моделей, но просто, кое-кто получил 192 плюса за то, за что на экзамене по теорверу получил бы неуд. Так что, многим тут стоило бы и азы повторить)
avatar
Lafert, по теорверу возражений нет, а все-таки лучше упомянуть виртуальность выводов, в части переноса в реал.

Ведь если взять реальные данные (пусть и не за бесконечное количество времени) и «помонтекарлить», легко заметить отличия.
avatar
старый трейдер, реально ситуация будет хуже, так, как
1) при достижении цены лимитка тейка не всегда исполняется, или может исполниться частично
2) при достижении стопа стоп всегда выстреливает, но реальная цена исполнения не всегда равна цене стопа

то есть, понятно, что на качественном самописном бектестере с поддержкой ордерлога мы получим не такие результаты. Да и вероятности тоже не 1/2, но это будет влиять в меньшей мере, да и техники, как точно оценить вероятности, у нас нет.
avatar
Lafert, подразумевалось отличие не столько в результатах, сколько в характере распределений.

А модели всегда нужны, трудность лишь в нахождении подходящих.
avatar
rand может быть равен 0.5? Если да, то не следует это число игнорировать.
Если rand дает число в полуинтервале [0;1) то делать надо так:
r<0.5
r>=0.5
avatar
RIH2, замечание принято. Хотя, вероятность того, что результат будет именно 0.500000000, ничтожна.
avatar
Lafert, да, я знаю. Но однажды у меня довольно сильный перекос возник по подобной причине, поэтому я уже придирчив стал.
avatar
RIH2, просто у меня rand выдавала целые числа, и там вероятность центрального числа была довольно высокой.
avatar
А я бы вообще сделал точку входа если rand >=0.9 то лонг если <= 0.1 то шорт =)
А еще как вариант если 2 раза подряд <= 0.5 или >= 0.5 =) микро тренд =) Тогда мы вероятность смещаем в свою сторону=)
avatar
Twilight_reg73, о… люди против крыс) Погуглите тему) Почему если зеленая лампочка загорается в три раза чаще красной, то крысы всегда ставят на зеленую, а люди после трех последовательных зеленых ставят на красную, и кто прав выходит)
avatar
Lafert, Так я за крыс =) я за продолжение тренда=)
avatar
RIH2, ещё и описание rand() надо глянуть, может там неравномерное распределение, если единица exclusive.
avatar
Все правильно, просто предыдущий автор скорей пытался себя же убедить в своих призрачных теориях, еще и комментарии отключил.Вообще стоп/профит в чистом виде элемент подгонки, на больших дистанциях статистического преимущества не дает.Как подметил Александр Горчаков на флете стоп стремится к бесконечности, на тренде к минимуму.
Машковский Евгений, удивляет реакция смартлаба, одобряющая такие посты. К тому же, его доказательство даже меня сразу смогло убедить. Только продолжив эту мысль, и поняв, что взяв ее за основу, можно получить грааль, я понял ошибку.
avatar
Lafert, Я автору вчера в личку написал, но он как то к диалогу не готов, и просил больше не писать, хотя такие темы требуют дискуссии именно так и рождается какая то истина.
Машковский Евгений, я тоже ему писал в личку, но меня в статье другое смутило, в принципе, я бы не сказал, что автор не готов к диалогу. Но когда задумался о основном тезисе, тут уж не сдержался, и написал пост.
avatar
для 1 и 3 тиков легко
это надо после каждого 3 попытки внутри цикла
заносить значения в переменный а1 а2

Где А1 равно +1 тик в плюсе.
Где А2 равно +2 тик в плюсе.

Для условий где стоп дальше 1 тика и тейк дальше 3 тиков. варианты увеличиваются в геометрической.
avatar
Внимание всем! Делаем стоп 3 тика, тейпрофит 1 тик.
В итоге стопы срабатывают в 3 раза реже. Грааль! **)

**) но бьют в три раза сильнее.
avatar
Павел Bosco М, В Вакууме да. Но нас тупо убивает комиссия =)
avatar
В общем как не крути при стопе 1 тик стоп будет срабатывать в 66% случаях
avatar
avatar
Расчеты конечно хорошо. но они не имеют практического применения к реальным боевым условиям на рынке.
У нас Тик не постоянен. Изменчива вола. + комиссия, у нас постоянно игра с отрицательным мат ожиданием=)
И какими только причудливыми способами мы не смещаем вероятность в нашу сторону=)
avatar
Twilight_reg73, тик в реале один и тот же.
avatar
Twilight_reg73, неправильно, в нижней строке всё должно укладываться в количество попыток, в 100.
avatar
Reshpekt Fund Russia, Нижняя строка это % вероятности такого исхода из 100 тиков после открытия ордера
avatar
Reshpekt Fund Russia, В хроме?
avatar
Twilight_reg73, должно и в хроме работать. У меня FF.
avatar
Reshpekt Fund Russia, стопов к тейкам 2.97, к итерациям 4.15, и что?
avatar
Lafert, первые 2 строчки для вас, количество стопов и тейков, просуммируйте — 1/3 от всех событий, остальные 2/3 в плюсовой зоне. Говорю же философия.
avatar
Reshpekt Fund Russia, ну ок, но по сути, мой и Ваш код отличается только тем, что у меня 10000 трейдов, а у Вас 10000 тиков)
avatar
Lafert, бинго. Это кардинальное философское отличие рынка от казино и проч., с чем Арсагера любит сравнивать. У нас нет удачного/неудачного выстрела с т.з. теорвера. Мы всегда в динамике, стоим на какой-то стороне с незафиксированным результатом. Пуля летит в мишень, летит, летит, потом возвращается. Снова летит… и так далее.

Всё. По пивку. ;-)
avatar
честно говоря, доказательство так себе:
— используется равномерное распределение (мы же не монетку подкидываем)
— автор предыдущего топика намекал, что распределение ценовых приращений, вообще говоря — как минимум, нормальное, и уж точно не равномерное, он просто не совсем удачно упростил объяснение, (или я его не так понял)
avatar
goelro, используется распределение Бернулли с параметром 0.5 вообще-то. Просто значение случайной бернуллиевской величины расчитывается как функция от равномерно распределенной с.в.

конечно, не правильно поняли, и меня, и его. Речь вообще не шла о приращениях.

PS я специально выложил код, что бы в нем можно было покопаться. Советую прочитать его несколько раз.
avatar
Lafert, да прочитал я код — ваш результат — это просто периодическая функция — у вас график цены похож на синус?
__
Функция MathLab X = rand(n) формирует массив размера n х n, элементами которого являются случайные величины, распределенные по равномерному закону в интервале (0, 1).
__
avatar
goelro, тут задачка из серии парадокса Монти Холла и решать ее подкидыванием монетки неправильно
avatar
goelro, или Вы изучали какую-то другую математику, или намекаете на периодичность псевдослучайных чисел. Если первое, то стоит книги почитать, вроде книга Ширяева «Вероятность» неплохая. А если второе, то период функции rand() в матлабе 2^1492.
avatar
Lafert, ну раз вы такой начитанный :) прогоните данный тест на реальных данных — и все встанет на свои места, всем все докажете

еще раз повторю: некорректно представление цены через N тиков на основе равномерного распределения
avatar
goelro, Если все бары перевести в ренко рендж бары равные 1 тиком 10 пунктов то все норм становится.
avatar
Twilight_reg73, ок
avatar
Если честно, я не догоняю зачем некоторые для расчёта используют тики: 3 тика, 9 тиков. Зачем? Рынок — это битва объёмов и один удар ломает сразу 3 тика, другой удар и 1го тика не пробъёт. Я не понимаю фразы типа: «Тики в пользу позиции не учтены.» Их не нужно учитывать! Вместо монетки с 2мя возможными исходами, нам данном расчёте нужна фигура «Тетраэдр» ru.wikipedia.org/wiki/Тетраэдр

Отношение в любом случае будет 1/3.
avatar
Slepoy, никто не спорит, что 1 к 3, но это если заморозиться и не управлять позицией (не трейдить). Как в простейшем алго. Ждём однозначно стопа или тейка.

Если работать с позицией, наблюдать за происходящим, то можно не ждать +3, а взять +2 или +1. И наоборот, пропустить +3 и взять +9. Всё в динамике, это же рынок, а не стельба по мишеням (классический пример из теорвера), где пуля линейно летит и ничего не исправить.
avatar
Доброе утро, господа :)
«Так, как мне лень было искать ошибку в доказательстве», то Вы просто подобрали код, который даёт такой результат, какой вам нужен)) Только дело вовсе не в лени, я думаю тут каждый убедился, что Вы — человек не ленивый, раз проделали такой кусок работы. А в том, что никакой ошибки в доказательстве нет. За исключением того, что этот расчёт не имеет никакого отношения к практике. И об этом я по-моему очень подробно написал.
На практике вероятность срабатывания тейка 3:1 зависит от качества вашей точки входа! Именно поэтому, специально для пассажиров бронепоезда, я выделил это капслоком. Но к сожалению у моих оппонентов есть талант — не замечать очевидного.
Что касается теоретических расчётов, ответьте на один вопрос: куда делись траектории, которые при неограниченном числе тиков, тем не менее не приводят к срабатыванию ни тейка, ни стопа. Например, вверх-вниз, вверх-вниз и так до бесконечности?
avatar
monte_carlo, хорошо, я Вам скажу, как решать такие задачи. Это задача о случайном блуждании на графе с двумя финальными состояниями. Надо составить матрицу переходов, потом найти фундаментальную матрицу, потом из нее находится матрица вероятностей попадания в финальные состояния. Поверьте, это не проще, совсем не проще, чем написанная мною программа. Но такой метод даст не оценку вероятности, а именно ее теоретическое значение. А вот вверх-вниз-вверх-вниз. Да, такое может быть, в таком случае моя программа будет работать вечно, но по теории вероятностей, вероятность того, что цена сделает хотя бы тысячу таких тиков и не попадет ни в одно состояние ничтожно мала. Это не 0.00000000000000000001, а действительно ничтожно малое число.
avatar
//А вот вверх-вниз-вверх-вниз. Да, такое может быть, в таком случае моя программа будет работать вечно, но по теории вероятностей, вероятность того, что цена сделает хотя бы тысячу таких тиков и не попадет ни в одно состояние ничтожно мала.//

Опять Вы торопитесь с выводами. То что я написал «Например, вверх-вниз, вверх-вниз и так до бесконечности» не означает, что это единственная траектория, при которой не сработает ни тейк, ни стоп! Это всего лишь НАПРИМЕР. Подумайте, какие ещё траектории могут привести к такому же результату и всё встанет на свои места. Дам подсказку. Например, вверх-вниз, вверх-вниз, вверх-вверх-вниз-вниз… Если Вы переберете все возможные, Вы увидите, что вероятность такого исхода вовсе не так ничтожно мала, как Вам сразу показалось…
avatar
monte_carlo, сами ведь игнорируете то, что Вам пишут. Я комментом выше описал план четкого математического решения этой задачи.
Попробую спорить с Вами не как с математиком, а как с трейдером)

Я запускал программу более 10 раз, программа завершалась в течении одной секунды, то есть за 100000 трейдов не возникло ни одной серии из тиков, которая бы привела к количеству тиков большему, чем процессор может рассчитать за 1 секунду. За 100000 запусков ни бесконечность, ни достаточно большие количества блужданий, не приводящих к закрытию трейда НЕ ПРОИЗОШЛИ. Вам этого мало?
avatar
monte_carlo, ПРОЧИТАЙТЕ КОД ПРОГРАММЫ 10 РАЗ ПОДРЯД!!!
avatar
Lafert, Теоретики, что тут сказать =) код 10 строк, все понятно математика 5 класс. а они тут о бесконечной траектории=)
НУ ТУПЫЕ (Задорнов)
avatar
avatar

теги блога Lafert

....все тэги



UPDONW
Новый дизайн