Избранное трейдера Ajax
Еще раз про опционы. Мы много обсуждали улыбки, МаркетМ, прочие тонкости. Сей час для простых опционщиков. Нового ни чего не скажу, но мне кажется, что для многих это может стать откровением.
Как я понял, обычный, не квалифицированный, опционщик не будет заморачиваться всеми этими греками и улыбками. Я хочу показать, как работать с единичным опционом, его ДХ и через это торговлей волатильностью. Вы сами сможете сделать выводы.
Для начала немного теории. Цена опциона, как нам известно, равна S*N(d1)-К*N(d2). Что значит, есть цена S есть страйк К и еще хрень, одна из которой Дельта. И у нас есть некий график IV волатильности и HV волатильности на option.ru. Что это означает и как это работает?
У вас есть синяя линия IV. В любой момент времени вы можете купить/продать опцион согласно ее значению в процентах волатильности. Как только вы это сделали, она, для вас, становится прямой. Это ваша первая нога. На графике я нарисовал красные и зеленые линии. Вы взяли 32.5% волу и все. Другой волы в опционах для вас нет. Это фикс. Это страйк вашей стратегии. Все последующие изменения IV к вам отношения не имеют.
Именно с маленькой, выглядевшей поначалу совсем безобидной попытки отыграть пятикопеечные последствия неудачного временного выхода из «стратегического лонга» РАО ЕЭС началась та моя «опупея» в шорте РАО. И этими же попытками отыграться, по сути, являются и стремление к максимизации процента прибыльных сделок, и усреднения, и «залипание» в убыточных позициях, и отказ от стопов или их перемещение, и желание поменять план и нарушить дисциплину. А в попытках отыграться скрывается нежелание признать свою неправоту и правоту рынка. Как видите, через все главы книги («Трейдинг для начинающих», В.Витковский, М., Эксмо, 2019 г. https://eksmo.ru/book/kak-my-teryaem-i-zarabatyvaem-na-birzhe-ITD964048/, по сути, тянется нить поиска выхода из лабиринта заблуждений и ошибок, в котором я оказался в том далеком и близком мае 2003 года…
Почти 7 лет (из 14-ти) не пользуюсь бектестингом. Семь лет назад, я полтора года тестировал системы в бектесте и на реальном рынке одновременно. Результаты оказались неожиданными. Моя система, с бектестовой прибыльностью = 1.2, превратилась в убыточную = 0.85. При этом система продолжала быть прибыльной на бектесте. Я сравнивал результаты бектеста и реальной торговли и отмечал, что я делал неправильно. Делюсь многолетним опытом.
— Если мы заложили комиссии правильно, это только часть издержек. Основная часть убытка спред. Откройте любой инструмент, купите и сразу продайте его по рыночным ценам. Увидите, что позиция оказалась убыточна. А большая доля убытка из-за спреда.
— Если закладывать 2-3 спреда в издержки и результаты будут более реалистичными. Но, всё ещё, могут остаться оптимистичными. Точно об этом знать мы не сможем.
— Важное правило: если есть на графике сделка, то это не значит, что она может быть вашей. Это правило напрочь отбивает точность тестов.
Реальный рынок. У Вас цель войти на пробой в покупку. Кто-то из участников выкинул большой объём на покупку в стакан и перенёс его за 1мс на 10 пт. выше вашего условия на вход. Ваш робот среагировал на этот сигнал и через 600мс. заявка оказалась на рынке. Робот вошёл на 10 пт. (на 6 спредов) хуже, а тестер вошёл по цене условия.
На американском рынке торгуется более 18000 эмитентов. Когда матёрым русским инвесторам задают вопрос почему они смотрят только на наш рынок, то обычно получают следующий ответ:
Там слишком много компаний. Чтобы их изучить, уйдут столетия.
Не поспоришь. У меня на беглый анализ одного годового отчета уходит не меньше часа. А тут их надо отсматривать тысячами. И делать какие-то выводы. Где взять столько времени?
Я задал себе вопрос, а можно ли сузить этот круг до нескольких десятков компаний? И как это сделать?
Как оказалось, рецепты есть. Вам понадобятся:
Settings={ Name="MNKMK", period=200, delta = 1, line= { { Name = "cur1", Type =TYPE_LINE, Width = 2, Color = RGB(255,0, 0) }, { Name = "cur2", Type =TYPE_LINE, Width = 1, Color = RGB(0,0, 255) }, { Name = "cur3", Type =TYPE_LINE, Width = 1, Color = RGB(0,0, 255) } } } --[[ описание свойств: period - период, за каротрый делается расчет delta - множетель отступа по вертикали H - L назначение: распознавание точки разворота тенденции использовался метод: метод наименьших квадратов (аппроксимация линией) --]] function Init() return 1 end function OnCalculate(index) sz = Size() n = Settings.period d = Settings.delta if index == 1 then a1_0 = 0 a2_0 = 0 a3_0 = 0 a4_0 = 0 a1_1 = 0 a2_1 = 0 a3_1 = 0 a4_1 = 0 HiLo_0 = 0 HiLo_1 = 0 prevk = 0 end i = index a1_1 = a1_1+i*C(i) a2_1 = a2_1+i a3_1 = a3_1+C(i) a4_1 = a4_1+i*i HiLo_1 = HiLo_1+H(i)-L(i) y = nil if index-n > 0 then i = index-n a1_0 = a1_0+i*C(i) a2_0 = a2_0+i a3_0 = a3_0+C(i) a4_0 = a4_0+i*i HiLo_0 = HiLo_0+H(i)-L(i) a1 = a1_1-a1_0 a2 = a2_1-a2_0 a3 = a3_1-a3_0 a4 = a4_1-a4_0 HiLo = (HiLo_1-HiLo_0)/n if((n*a4 - a2*a2) ~= 0) then a = (n*a1 - a2*a3)/(n*a4 - a2*a2) b = (a3 - a*a2)/n y = a*index + b y1 = y - HiLo*d y2 = y + HiLo*d if O(index) < y1 then y = y2 prevk = 1 else if O(index) > y2 then y = y1 prevk = 2 else if prevk == 1 then y = y2 end if prevk == 2 then y = y1 end end end end end return y endЬЛ