Блог им. PAlex

Расчет оптимального количества контрактов

    • 10 марта 2013, 15:22
    • |
    • PAlex
  • Еще
Народ, плюсаните пожалуйсто, что бы на главную вылезть, чем больше народу посмотрит, тем больше вероятность что моя проблема решится.

Для начала процетирую кусочек текста из книги  Р.Винса «Математика управления капиталом»

-----------------------------------------
Таким образом, мы можем сказать, что существует некий делитель (число между 0 и 1) наибольшего предполагаемого убытка для определения количества контрактов. Например, если при счете в 50 000 долларов вы ожидаете, в худшем случае, убыток 5000 долларов на контракт, и открыто 5 контрактов, то делителем будет 0,5, так как:
50 000/(5000/0,5) =5
Другими словами, у вас есть 5 контрактов на счет в 50 000 долларов, т. е. 1 контракт на каждые 10000 долларов баланса. Вы ожидаете в худшем случае потерять 5000 долларов на контракт, таким образом, вашим делителем будет 0,5. Если бы у вас был один контракт, то делителем в этом случае было бы число 0,1, так как:
50 000/(5000/0,1)=1
Этот делитель мы назовем переменной f. Таким образом, сознательно или подсознательно при любой сделке вы выбираете значение f, когда решаете, сколько контрактов или акций приобрести.
Теперь посмотрите на рисунок 1-1. На нем представлена игра, где у вас 50% шансов выиграть 2 доллара против 50% шансов потерять 1 доллар в каждой игре. Отметьте, что здесь оптимальное f составляет 0,25, когда TWR составляет 10,55 после 40 ставок (20 последовательностей +2, -1). TWR — это «относительный конечный капитал» (Terminal Wealth Relative), он представляет доход по вашим ставкам в виде множителя. TWR = 10,55 означает, что вы увеличили бы в 10,55 раз ваш первоначальный счет, или получили бы 955% прибыли. Теперь посмотрите, что произойдет, если вы отклонитесь всего лишь на 0,15 от оптимального f= 0,25. Когда f равно 0,1 или 0,4, ваш TWR = 4,66. Это не составляет даже половины того, что будет при 0,25, причем вы отошли только на 0,15 от оптимального значения и сделали только 40 ставок!

О какой сумме в долларах мы говорим? При f = 0,1 вы ставите 1 доллар на каждые 10 долларов на счете. При f= 0,4 вы ставите 1 доллар на каждые 2,50 долларов на счете. В обоих случаях мы получаем TWR = 4,66. При f= 0,25 вы ставите 1 доллар на каждые 4 доллара на счете. Отметьте, что если вы ставите 1 доллар на каждые 4 доллара на счете, то выигрываете в два раза больше после 40 ставок, чем в случае ставки одного доллара на каждые 2,50 доллара на вашем счете! Очевидно, что не стоит излишне увеличивать ставку. При ставке 1 доллар на каждые 2,50 доллара вы получите тот же результат, что и в случае ставки четверти этой суммы, то есть 1 доллар на каждые 10 долларов на вашем счете! Отметьте, что в игре 50/50, где вы выигрываете вдвое больше, чем проигрываете, при f= 0,5 вы только «остаетесь при своих»! При f больше 0,5 вы проигрываете в этой игре, и теперь окончательное разорение — это просто вопрос времени! Другими словами, если f (в игре 50/50, 2:1) на 0,25 отклоняется от оптимального, вы будете банкротом с вероятностью, которая приближается к определенности, если продолжать играть достаточно долго. Таким образом, нашей целью будет объективный поиск пика кривой f для данной торговой системы.
Расчет оптимального количества контрактов
-----------------------------------------
 
захотелось проверить это, написал скриптик и что то ни чего подобного не получилось, чем больше ставка тем больше выигрыш либо быстрй пройгрыш, но ни как при f = 0.25 не получилось получить больше прибыли
может я что то не так понял?
-----------------------------------------
«При f = 0,1 вы ставите 1 доллар на каждые 10 долларов на счете. При f= 0,4 вы ставите 1 доллар на каждые 2,50 долларов на счете. При f= 0,25 вы ставите 1 доллар на каждые 4 доллара на счете. „
-----------------------------------------
возьмем три счета по 100$ и проверим для первого f будет 0.1, для второго 0.25, для третьего 0.4 соответственно для первого счета будем ставить 10$, для второго 25$, для третьего 40$
Делаем 40 подкидываний монетки, если проиграли то отнимаем соответствующую ставку от соответствующего счета, иначе прибавлям две ставки в случае выйграша.
Если на балансе сумма будет меньше одной ставки, то на этом счете обнуляем баланс и прекращаем игру. Ниже приведен код скрипта, а по этой ссылке можно проверить его работу peksh.ru/test.php
При обновлении страницы все пересчитывается
 
 
$balance = array(100, 100, 100);
$f = array(0.1, 0.25, 0.4);
for($i = 0; $i<3; $i++) $lot[$i] = $balance[$i] * $f[$i];

echo “<pre>»;
for($i = 0; $i<3; $i++) echo $lot[$i]." ";
echo "<hr>";

for($j = 0; $j<40; $j++) {
    $x = rand(0, 999);
    if ($x < 500) {
        echo «проиграли »;
        for($i = 0; $i<3; $i++)
            if ($balance[$i] >= $lot[$i])
                $balance[$i] = $balance[$i] — $lot[$i];
            else
                $balance[$i] = 0;
    }
    else {
        echo «выйграли  »;
        for($i = 0; $i<3; $i++)
            if ($balance[$i] >= $lot[$i]) $balance[$i] = $balance[$i] + $lot[$i] * 2;
    }
    
    for($i = 0; $i<3; $i++) printf("%9d", $balance[$i]);
    echo "<br>";
}
 
 
 
★3
21 комментарий
Кто-нибудь понИл что тут написано???
avatar
похоже математиков отпустило первых после праздников… засилье прям
avatar
WTF?? не легче взять стоп т.е.допустимый риск на сделку и от этого уже плясать? к примеру
100тр счет. риск на сделку 1000р. средний стоп по фРТС например 300п.
300п =186 р примерно 1 контр. 1000/186=5 контр

и нех выдумывать заумные расчеты и т.д
avatar
VladimirB, хочется понять как Винс получил такие результаты
avatar
PAlex, а оно надо?
avatar
VladimirB, да, хочется на истории своих сделок рассчитать оптимальное f
avatar
PAlex, о боже.
avatar
VladimirB, вы пишите «100тр счет. риск на сделку 1000р.»
а может быть риск в 2т.р. или 3т.р. был бы более оптимальным для моей торговой системы
avatar
PAlex, это уже посмотри соотношение прибыльных сделок к убыточным и там видно будет. надо проще относится к торговле.
avatar
VladimirB, проще не значит эффективнее, проще можно относиться в принятию решений куда открываться я думаю, а каким количеством контрактов заходить, зависит только от нас. График как рас и показывает, играя малым количеством контрактов и прибыль будет маленькая, с увеличение количества контракта прибыль будет расти (это пик на графике), при дальнейшем увеличении контрактов прибыль будет падать, вот и хочется найти такое количество, что бы быть на пике графика или с лева от него, лучше с лева чем с права, так как прибыль одна и та же, а риск меньше и психологически комфортнее.
ну как то так…
avatar
Если уйти от реалий (считать сферического коня в вакууме), то у вас почти всё верно и в скрипте и в размышлениях, за исключением одного пункта. Цитирую:
> если продолжать играть достаточно долго

40 испытаний — это статистически не достоверно. Поставьте $j<10000 хотя бы. И для уверенности, что псевдорандом не подводит (а он подводит!) меняйте знак if ($x > 500) чтобы проверить «псевдослучайность» на перекос.
вот здесь один педантичный спец провёл глубокое исследование:
articles.mql4.com/ru/801
Жаль, что основной код не опубликовал… хотя может на мыло отзовётся и пришлёт лично?!
Было бы интересно глянуть.
Fry, спасибо
avatar
PAlex, прошу прощения. Выше ввел вас в заблуждение.
Невнимательно прочёл топик. Не вник в суть вопроса.
Вы пытаетесь тестировать ММ, на основе доли от счёта. А у вас лот фиксирован.

То есть вот это:

for($i = 0; $i<3; $i++) $lot[$i] = $balance[$i] * $f[$i];

Надо вставить в основной цикл!
Иначе у вас фиксируется лот.
Fry, обновил скрипт, стало похоже на правду, но не часто
avatar
PAlex, подписи какие-то странные, а скрипт не вижу.
Короче, раньше у вас было вот что — 20 серий +2-1, то есть ~= +20. А надо было добавить множитель, который зависит от текущего баланса в каждой итерации.
То есть +2*lot-1*lot, где lot = баланс*долю.
Так сделали?
Тогда почему доля в принтах меняется?
Fry, немного не верно выразился доля в таблице это количество баксов в текущей ставки.
у меня доля высчитывается как баланс * на f,
а f не меняется $f = array(0.1, 0.25, 0.4, 0.1, 0.25, 0.4);
для первых трех столбцов переменная доля рассчитывается один раз, а для 4-6 столбца рассчитывается каждый раз в цикле.
исходный код тут peksh.ru/test.txt
avatar
Fry, выводы в той статье ссылку на которую вы дали, не утишытельные
— И, пожалуй, самый главный вывод, который можно сделать из этого исследования, — это то, что нельзя выбрать однозначно лучший метод из двух рассмотренных. Эффективность ММ зависит от очень большого количества фактором. Различные комбинации этих факторов дают различные результаты. Поэтому в каждом конкретном случае, в зависимости от свойств ТС, условий ДЦ, возможностей и пожеланий трейдера нужно выбирать наиболее подходящий для этого случая ММ.
---
avatar
PAlex, и посмотреть максимальный период убыточных сделок. к примеру если их было 20 шт подряд. т.е. конечно не нужно брать риск более 1% на сделку.а лучше и вообще о.5%
avatar
плюсанул, но не вышло
avatar

теги блога PAlex

....все тэги



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