Видео-версия:

Всем привет. В прошлый раз я рассказывал про маржин-колл, что является неоспоримым фейлом в торговле на бирже, и с тех пор ситуация более-менее выровнялась. Как вы могли догадаться, внизу рынка меня разгрузили далеко не на весь депозит, и что важно, брокер не выкупил резко подорожавшие из-за взлета волатильности короткие опционы. Сейчас некоторые из них серьезно подешевели, и я начинаю выкупать их сам, фиксируя кое-какую прибыль, и одну из таких сделок сегодня хотелось бы рассмотреть, в контексте использования торговых роботов. Хотелось бы пояснить, под роботом я никогда не воспринимал высокочастотную торговлю, потому что соревноваться в этом с техникой и линиями игроков с миллиардными капиталами бесполезно. Робот в моем понимании - это автоматизация элементов своей торговой системы, для которой не хватило встроенного функционала терминала брокера, а необходимо это потому, что у вас никогда не будет времени на постоянный анализ изменяющейся обстановки. Тем более, как я уже говорил, трейдинг не является моей основной профессией, а сейчас, с переходом США на летнее время, начало биржевой сессии уже не на полчаса, а на полтора накладывается на рабочее время по Москве, а есть еще премаркет, который открывается в 10:30 утра. В связи с этим, даже при желании я бы не смог контролировать глазами торговлю на всем протяжении, потому что в моем портфеле довольно много тикеров, и все невозможно отсматривать глазами, даже расположив графики мозаикой - пробовал, все это ерунда. Поэтому я использую, особенно на опционах, так называемые GTC (Good-Till-Cancelled) ордера, на то время как в период неопределенности отключена вся автоматизация. И вот как раз сегодня на открытии рынка сработал такой ордер, который вы видите на экране - опционная позиция была выкуплена за половину от входа в сделку, принеся прибыль около 1,5 тысяч долларов.

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

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

Алгоритмы же выхода из позиции формализуются гораздо веселее. Два из них, наверное, становятся известны начинающему трейдеру в первый день его упражнений в терминале - это стоп-лосс и тейк профит. Со стоп лосом, все совсем просто, это линия, за которой заканчивается размер максимального риска, который вы отмерили на сделку.

Например, вы купили по бумагу за 10 долларов, и больше доллара терять не намерены - тогда стоп будет стоять на 9. Цена, конечно, может проскользнуть на низколиквидном инструменте за уровень стопа, но это не очень страшно. Что же с фиксацией прибыли - с тейк профитами? Ставить тейки по такому принципу тоже можно, но у вас немедленно включится жадность, и задаст вам вопрос - если бумага прет по тренду в вашем направлении, зачем вам фиксировать прибыль на определенном заранее уровне, если можно досмотреть это кино, до куда она все-таки дойдет? На эту тему недвусмысленно высказался Джесси Ливермор - режь убытки сразу, дай прибыли течь.

Посмотрим, что случилось с курсом выкупленного опциона дальше, в течении дня?

Уже сейчас видно, что с “дать прибыли течь” вообще не срослось. На самом деле в IB существует встроенный инструмент для подобных ситуаций - trail stop, однако есть проблема.

Дело в том, что вы должны определить размер максимальных колебаний отката, который начнет действовать сразу по активации ордера, в результате чего понемногу планка подтянется к цене, и при откате назад, позиция будет закрыта очень быстро, либо вы потеряете на крупном откате. Я пытался настроить активацию ордера на некие условия, но похоже, в IB для инструментов типа опционов это заблокировано, поэтому сделать это может только ваш самописный робот. При шортовой позиции на опцион, время работает на меня, поэтому я могу ждать до самой экспирации, а если опцион вошел в деньги, я могу перекатить его на будущий период, иногда даже диагонально, улучшив страйк - заплатив за него временной стоимостью. Когда время работает на меня, врубать такой trailing коробки - это глупость.

Кроме того, на графике вы можете видеть, что перед закрытием прошлого дня практически не было сделок, и к тому же был просто конский спред в доллар и более между бидом и аском - сработка рыночного, а не лимитного ордера в такой ситуации - это просто подарок для маркетмейкера. На открытии, как водится, спреды вообще огромные, но при этом было уже было гораздо больше сделок. На третьей секунде после открытия рынка, спред конечно, не сильно сузился, но так как курс валился вниз, мой ордер на откуп сработал и зафиксировал прибыль в полторы тысячи долларов.

Но нетрудно заметить, что это было по цене 2.50, а цена немедленно бахнулась на 0.50, то есть с 5 опционов я недополучил 2*100*5, еще целую тысячу долларов. Отвратительная сделка. Стоит заметить, что обычно такого не происходит, и цена опускается медленно и нежно, и GTC ордера вполне хватает. И кто-то скажет, что всех денег не заработать, мол, ты не мог знать, куда пойдет курс опциона, поэтому можно не переживать. Некоторая вероятность того, что гэп премаркета закроется мгновенно, имеет место, но обычно это занимает до получаса, за которые можно было выкупить опцион по более выгодной цене.

Но в том-то и дело, за ночь и утро, на постмаркете и премаркете (где кстати вы тоже можете торговать, если отмечать в настройках графика и ордеров нужные галочки), на базовом активе образовался огромный гэп, то есть разрыв в курсах. Разумеется, я поленился, и вручную не проверил все курсы базовых активов по моим опционным позициям перед открытием рынка - я работаю и занят, да и вообще нет у меня такой привычки. А я бы увидел, что цена акции HGEN резко шмальнула вверх на премаркете и пересекла отметку страйка. Что означает ровно одно - внутренняя стоимость опциона превратилась в тыкву, и стала ноль долларов ноль центов. И у опциона осталась только временная стоимость на будущие три недели. Здесь можно было бы снова грузануть вас формулой Блэка-Шоулза:

Но черт с ней, давайте просто посмотрим, сколько стоял БА на закрытии - 14.05, и сколько стоял этот опцион в 15 страйке - 5.50, а внутри него сидело, вы не поверите, 95 центов внутренней стоимости. Стало быть, 4.55 доллара - это его временная стоимость на конец пятницы, когда он был примерно около 50 дельты (дельта - вероятность экспирации в деньгах). Обратите внимание, примерно столько же 5.50 маркет мейкер просит сейчас за опцион немного в деньгах. А за опцион в 10й дельте, в которую с пятницы на понедельник превратился страйк 15, просят 0.75 (на практике, цена падала и до 0.50, то есть дельта была еще меньше).

Таким образом повторюсь, единственное, что от меня требовалось, так как я мог посмотреть результаты торгов БА на премаркете, это рассчитать с помощью робота цену опциона, и понять, что моя лимитка стоит сильно выше (в 5, черт возьми, раз выше) справедливой цены, и на открытии рынка произойдет очень невыгодная сделка. Я не посмотрел, а вот маркетмейкер - да, у него работа такая, и обнаружив шикарную точку арбитража, он реализовал ее на 3 секунде работы биржи.

И вы таки спросите, если при торговле опираться на дельту, как я мог рассчитать дельту без опционной доски IB, и даже без его веб-калькулятора?

А вот по этой незамысловатой формуле опционного грека Дельта:

?=N(d1) ?1 where d1= (ln(S/K)+(r-q+?^2/2)t)/?v t

K - Option strike price N - Standard normal cumulative distribution function r - Risk free interest rate q - Dividend Yield ? - Volatility of the underlying S - Price of the underlying t - Time to option's expiry

Ну, формула-то незамысловатая, но в ней участвует волатильность, которую (имея в виду implied - Подразумеваемую), потребуется рассчитать. На скале функция выделит так:

def delta(tp :String,S:Double,K:Double,vol:Double,tt:Int,q:Double=0.0,r:Double=0.0) = {       

val t = tt/366.0       

val d1 = (scala.math.log(S/K)+(r-q+vol*vol/2)*t)/(vol*sqrt(t))       

new NormalDistribution(0.0, 1.0).cumulativeProbability(d1) - (if (tp=="P") 1 else 0)     }  

Сравниваем:

[info] Done compiling.  

-0.12389190331572086 

При этом, на четвертом знаке после запятой она перестает биться с калькулятором на сайте IB; мало этого, Dividend Yield по идее должна отниматься от Risk free interest rate, а в калькуляторе, если эти числа устанавливать одинаковыми, греки немного различаются - стало быть, там считают как-то иначе. Но как я говорил, для меня это хобби, и я не обязан разбираться в тонкостях. К тому же, я могу использовать встроенный функционал API IB для расчета волатильности, а также и для расчета справедливой цены опциона перед открытием.

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

Желаю вам удачи, до новых встреч!