Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Я тут на досуге рассуждал о риске, стоп-лоссе и стоп-профите Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
pylyp



Зарегистрирован: 21.09.2012
Сообщения: 80

СообщениеДобавлено: Чт Ноя 15, 2012 7:03 pm Ответить с цитатой Вернуться к началу

Я тут на досуге рассуждал о риске, стоп-лоссе и стоп-профите.

Риск. Условимся, что мы всегда будем рисковать одной и той же суммой. Соответственно у нас риск всегда будет под контролем и мы его всегда сможем рассчитать.

Пример: есть 10 000 руб. Всегда рискуем только 2%, т.е. 200 рублями. Если риск постоянный, тогда стоп-лосс можно ставить произвольный. А размер позиции счтитать по формуле "размер позиции"=риск/риск на одну акцию. Прмер Покупка по 100 стоп лосс на 90. Риск на одну акцию 10. Соответственно размер позиции=200/10=20 штук. Так как риск у нас всегда одинаков, то изменится лишь только потенциальный заработок.

Стоп-лосс (СЛ). Чем дальше СЛ, тем меньше акций можно купить. А чем он ближе тем больше вероятность раннего выхода Соответственно имеем одну цель для создания стратегии - найти оптимальный стоп лосс

Стоп-Профит (СП) - здесь ситуация аналогичная. Чем СП выше, тем меньше шанс, что он сработает, чем он ниже, больше шанс, что выйдем раньше. Цель - Найти оптимальный Стоп-Профит

Осталось определить формулу для расчета оптимального СЛ и СП.

Есть стратегия - персечения двух EMA 5 и 10.

И теперь вопрос: Можно ли сказать для Ами. чтобы она показала, какое было самое высокое значение, до того, как сработал выход и где была в течение этой же транзакции самая большая просадка? И так по каждой акции.


Если получится такие данные получить, можно ли надеятся найти оптимальный СЛ, или это мираж и святой грааль?

Что скажете?
Посмотреть профиль Отправить личное сообщение
Khan



Зарегистрирован: 10.05.2012
Сообщения: 29

СообщениеДобавлено: Пт Ноя 16, 2012 12:09 am Ответить с цитатой Вернуться к началу

pylyp писал(а):
Я тут на досуге рассуждал о риске, стоп-лоссе и стоп-профите. ...
Что скажете?
Я думаю, что в цикле можно посчитать для каждой сделки макс просад и макс невзятую прибыль. Амиброкер Про считает MFE и MAE - вроде бы это как раз они и есть только в %.

Развивая мыслю - еще интересно посчитать насколько цена ходит верх-вниз между входами и на основе этих даных каким-то макаром вычислять стоп-лосс и тэйк-профит.
Посмотреть профиль Отправить личное сообщение
pylyp



Зарегистрирован: 21.09.2012
Сообщения: 80

СообщениеДобавлено: Пт Ноя 16, 2012 12:37 pm Ответить с цитатой Вернуться к началу

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

Как это сделать?

По ходу с помощью индикатора: Нарисуй максимум с момента пересечения двух средних до обратного пересечения. Это будет мах Профит. И нарисуй минимум с момента пересечения. Это будет мах Стоп лосс.

Только как это перевести на язык Ами?
Посмотреть профиль Отправить личное сообщение
pylyp



Зарегистрирован: 21.09.2012
Сообщения: 80

СообщениеДобавлено: Пт Ноя 16, 2012 5:47 pm Ответить с цитатой Вернуться к началу

В продолжение этой темы

Может кто-то проверить правильно ли я вписал размер позиции. Цель - поставить под риск не больше 2% от капитала. В каждой сделке стоп-лосс будет стоять на 2% от проседания курса. Соответсвенно вписал такую формулу:

Код:
Capital=10000;
risk=0.02*Capital;
PositionSize = (risk/(-2*BuyPrice))*BuyPrice;
//рискуем не более 2% от капитала
//риск на одну акцию 2%

ApplyStop(stopTypeLoss,stopModePercent, 2,False);
//стоп лосс после просадки курса на 2%


А то что-то сильно все красиво получается, аж не верится[/code]
Посмотреть профиль Отправить личное сообщение
Khan



Зарегистрирован: 10.05.2012
Сообщения: 29

СообщениеДобавлено: Сб Ноя 17, 2012 5:05 am Ответить с цитатой Вернуться к началу

Я, честно говоря, не понял формулу. Во-первых, размер позы отрицательный выходит. Во-вторых, на BuyPrice умножать не надо. И двойка не понятно зачем.

Имхо, теория должна быть такая:

Risk = Risk% * Capital = PosSize * Stop% * BuyPrice
PosSize = MIN {(Risk% * Capital) / (Stop% * BuyPrice), Capital/BuyPrice}
Посмотреть профиль Отправить личное сообщение
pylyp



Зарегистрирован: 21.09.2012
Сообщения: 80

СообщениеДобавлено: Вт Ноя 20, 2012 7:03 pm Ответить с цитатой Вернуться к началу

Не канает. Ввел как ты и говорил.


Код:
Capital = 10000;
risk=0.02*Capital;
//рискуем 2% от капитала

PositionSize= Min((risk/(0.02*BuyPrice)),(Capital/BuyPrice));   

//берем 2% от цены покупки. Делим риск на эту квоту. У нас это 10000 руб*2%=200 руб
// пример цена 100, стоп лосс=(2%*цена покупки)=2%*100=2 руб. это риск на одну акцию
//количество акций = риск/риск на одну акцию=200/2=100 шт.


а у меня после этого пропуск транзакции.

Где косяк?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вт Ноя 20, 2012 8:22 pm Ответить с цитатой Вернуться к началу

Хм.
Читаем.
Цитата:
Цель - поставить под риск не больше 2% от капитала. В каждой сделке стоп-лосс будет стоять на 2% от проседания курса.

Думаем.
Если купить на все без плеча, то при проседании курса на 2% и срабатывании стопа общие потери капитала как раз и будут 2% + комиссия.
Так чего огород городить?

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
pylyp



Зарегистрирован: 21.09.2012
Сообщения: 80

СообщениеДобавлено: Вт Ноя 20, 2012 8:47 pm Ответить с цитатой Вернуться к началу

Цитата:
Если купить на все без плеча, то при проседании курса на 2% и срабатывании стопа общие потери капитала как раз и будут 2% + комиссия.


По логике так и должно быть. Тогда единственное управление капиталом будет с помощью стоп лосса:
Код:
ApplyStop(stopTypeLoss,stopModePercent,2, False);


НО! Почему у меня тогда в результатах половина убытков превышает 2%. Даже если добавить комиссию 5-10% убытка с одной транзакции все равно не должно быть.

UPD: подумал, может это из-за того, что стопы не вовремя активируются, но в установках стоит "activate stops immidiatly"
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вт Ноя 20, 2012 9:43 pm Ответить с цитатой Вернуться к началу

Ну проверь цены входа в позицию и выхода. Это не трудно. И заодно глянь net % profit. Где меньше 2% там смотри почему так поздно вышел. Может там гэп был....

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Khan



Зарегистрирован: 10.05.2012
Сообщения: 29

СообщениеДобавлено: Ср Ноя 21, 2012 7:12 am Ответить с цитатой Вернуться к началу

pylyp писал(а):
Не канает. Ввел как ты и говорил.


Код:
Capital = 10000;
risk=0.02*Capital;
//рискуем 2% от капитала

PositionSize= Min((risk/(0.02*BuyPrice)),(Capital/BuyPrice));   

//берем 2% от цены покупки. Делим риск на эту квоту. У нас это 10000 руб*2%=200 руб
// пример цена 100, стоп лосс=(2%*цена покупки)=2%*100=2 руб. это риск на одну акцию
//количество акций = риск/риск на одну акцию=200/2=100 шт.


а у меня после этого пропуск транзакции.

Где косяк?
Ты считаешь от фикс капитала. После просадов может не хватать денег на позицию. Проверь в настройках, есть ли галочка около Allow position size shrinking.

Я согласен с Олегом: в твоей постановке такая формула не нужна, все будет гораздо проще. А вот когда Stop = X * ATR (привязка к волатильности, а не к % цены), тогда эта формулка пригодится.
Посмотреть профиль Отправить личное сообщение
pylyp



Зарегистрирован: 21.09.2012
Сообщения: 80

СообщениеДобавлено: Ср Ноя 21, 2012 11:04 pm Ответить с цитатой Вернуться к началу

Цитата:
Ну проверь цены входа в позицию и выхода. Это не трудно. И заодно глянь net % profit. Где меньше 2% там смотри почему так поздно вышел. Может там гэп был....


Проверил. Где-то были гэп, но в трех-четырех случаях. Остальное хз что. Пример ниже. Там 6% профита (на рисунке не видно, но поверьте).
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Ср Ноя 21, 2012 11:15 pm Ответить с цитатой Вернуться к началу

Ничего не понял. У тебя там одни убытки... Ты как стоп написал?

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
pylyp



Зарегистрирован: 21.09.2012
Сообщения: 80

СообщениеДобавлено: Ср Ноя 21, 2012 11:41 pm Ответить с цитатой Вернуться к началу

А теперь, то, что я изначально хотел проверить... Если конечно допустить, что методология все таки верна.

Итак. Теория была такова: имеем какую-то стратегию. она имеет позитивное мат ожидание. Размер позиции рассчитываем, исходя из нашего риска (скажем 200 руб).

Стратегия показывает МАЕ и МFЕ. Исследуя МАЕ мы можем вывести оптимальный стоп лосс.

Для исследования я взял свою собственную стратегию - убегания стредних:

Код:
//недельная гистограмма MACD

TimeFrameSet(inWeekly);
HistW=MACD(26,50)-Signal(26,50,20);
MACDup=HistW>Ref(HistW,-1);
MACDdown=HistW<Ref(HistW,-1);
barcolor=IIf(MACDup,colorGreen,IIf(MACDdown,colorRed,colorBlue));
TimeFrameRestore();

//измеряем на сколько убегает быстрая EMA от медленной

FA=Optimize("fa",5,5,30,5);
SA=Optimize("sa",25,25,50,5);
period=Optimize("period",20,10,30,5);

f=EMA(C,FA);
s=EMA(C,sa);
Var=f-s;
HistUp=Var>Ref(Var,-3);
HistDown=Var<Ref(Var,-3);
barcolor=IIf(HistUp,colorGreen,IIf(HistDown,colorRed,colorBlue));
Plot(Var,"Hist",barcolor,styleHistogram);

//расчет размера позиции
TrailStopAmmount=Ref(HHV(H,2),-1)-Ref(LLV(L,2),-1);
Capital = 10000;
risk=0.02*Capital;
PositionSize=(risk/TrailStopAmmount)*BuyPrice;

//buy-sell
Buy= TimeFrameExpand(histW,inWeekly)>TimeFrameExpand(Ref(histW,-1),inWeekly) AND  Var>Ref(Var,-3);
Sell=Cross(EMA(C,period),L);

ApplyStop(stopTypeLoss,stopModePoint, TrailStopAmmount,False);



Результат: Profit - 13 388; Max ssytem DD - -2 626. Отношении прибыли к макс проседанию 1:5. В среднем риск на одну акцию составлял - 2.26%. При чем в каждой сделке я рисковал не больше 200 рублями. Поэтому проседание было таким маленьким.

Идем дальше. Я увидел, что 50% всех МАЕ не превышает 2%. Соответственно я решил рисковать в каждой сделке 2% капитала и ставить стоп лосс. на 2%.

В формуле соответсвенно убил
Код:

//расчет размера позиции
TrailStopAmmount=Ref(HHV(H,2),-1)-Ref(LLV(L,2),-1);
Capital = 10000;
risk=0.02*Capital;
PositionSize=(risk/TrailStopAmmount)*BuyPrice;
ApplyStop(stopTypeLoss,stopModePoint, TrailStopAmmount,False);



и поставил

Код:
ApplyStop(stopTypeLoss,stopModePercent,2, False);


Что у меня получилось: Profit 56 136; Max system DD - - 22 386. Отношение прибыль/проседание - 1:1,13. Профит по сравнению с первым вариантом вырос в два раза но риск вырос в 8 (!!!!) раз.

Вот я и думаю, что может быть не так? Может где-то косяк в формуле либо в системе либо еще в чем-то... Хоть бери да руками считай!

Ниже сравнительная таблица.

Что скажете господа эксперты?
Посмотреть профиль Отправить личное сообщение
pylyp



Зарегистрирован: 21.09.2012
Сообщения: 80

СообщениеДобавлено: Ср Ноя 21, 2012 11:47 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Ничего не понял. У тебя там одни убытки... Ты как стоп написал?


Система дает прибыль. Скрин неудачный сделал. Вставляю другой.

Стоп поставил самый простой и банальный:

Код:
ApplyStop(stopTypeLoss,stopModePercent,2, False);
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Ноя 22, 2012 12:26 am Ответить с цитатой Вернуться к началу

Интересно ты пишешь.
Сначало у тебя был стоп
ApplyStop(stopTypeLoss, stopModePoint, TrailStopAmmount, False);
Читаем.
Стоп( Тип Стоп лосс - stopTypeLoss. Задается в ценах - stopModePoint. Размер стопа - TrailStopAmmount. Выход если стоп - False)
четвертый параметр ExitAtStop может быть
Цитата:
ExitAtStop = 0 - means check stops using only trade price and exit at regular trade price(1)
(if you are trading on close it means that only close price will be checked for exits and exit will be done at close price)
ExitAtStop = 1 - check High-Low prices and exit intraday on price equal to stop level on the same bar when stop was triggered
ExitAtStop = 2 - check High-Low prices but exit NEXT BAR on regular trade price.

а у тебя он False, что вообще не понятно что. Ами вероятно понимает False как 0.
Ты меняешь этот стоп на
ApplyStop(stopTypeLoss,stopModePercent, 2, False);
и снова пишешь ExitAtStop = False.
и хочешь чтобы потери были 2 процента, хотя при ExitAtStop = 0 стоп проверяется по ценам торговли (вероятно у тебя закрытие) и выход тоже по ценам торговли. Т.е. ждешь закрытия дня... Этак у тебя 2 процента никогда не получится....

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen