Русский
Русский
English
Статистика
Реклама

Фьючерсы

Recovery mode Недополученная прибыль на бирже из-за отключенного робота и лени

04.04.2021 14:14:58 | Автор: admin

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

Всем привет.В прошлый раз я рассказывал про маржин-колл, что является неоспоримым фейлом в торговле на бирже, и с тех пор ситуация более-менее выровнялась. Как вы могли догадаться, внизу рынка меня разгрузили далеко не на весь депозит, и что важно, брокер не выкупил резко подорожавшие из-за взлета волатильности короткие опционы. Сейчас некоторые из них серьезно подешевели, и я начинаю выкупать их сам, фиксируя кое-какую прибыль, и одну из таких сделок сегодня хотелось бы рассмотреть, в контексте использования торговых роботов. Хотелось бы пояснить, под роботом я никогда не воспринимал высокочастотную торговлю, потому что соревноваться в этом с техникой и линиями игроков с миллиардными капиталами бесполезно. Робот в моем понимании - это автоматизация элементов своей торговой системы, для которой не хватило встроенного функционала терминала брокера, а необходимо это потому, что у вас никогда не будет времени на постоянный анализ изменяющейся обстановки. Тем более, как я уже говорил, трейдинг не является моей основной профессией, а сейчас, с переходом США на летнее время, начало биржевой сессии уже не на полчаса, а на полтора накладывается на рабочее время по Москве, а есть еще премаркет, который открывается в 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)/ 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 ордеров, можно ставить на мониторинг рынка и новостного фона условия произвольной сложности, при сработке которых включается трейлинг.

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

Подробнее..

Телеграмм-бот для анализа опционов

07.06.2021 10:04:02 | Автор: admin

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

После первого знакомства с теорией у начинающих торговцев опционами возникает вопрос: а при каких условиях данный набор опционов даст прибыль, и какую. Даже опытный опционщик сходу не сможет ответить на этот вопрос, если у вас более одного опциона. Для этого необходим анализ опционного портфеля ( набора опционов и , возможно, фьючерсов), который нагляднее всего делается в графическом виде, на диаграмме зависимости прибыли/убытка от стоимости базового актива. В настоящее время существует несколько сайтов для этого, а также отдельных программ.

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

Будем считать, что, кроме опционов, читатель знаком с телеграмм ботами. Поэтому здесь не будет описания создания бота от получения токена до обработки клавиатуры. Вместо этого перечислим концептуальные проблемы, которые возникли при создании программы, и способы их решения.

Запоминание состояния бота между вебхуками

Бот получает сообщения от пользователя через встроенный в телеграмм механизм вебхуков. Каждый вебхук заново запускает программу, но для каждого пользователя необходим свой набор данных. Идентификация пользователей осуществляется через просмотр потока ввода:

$id_init = file_get_contents('php://input');$id=sbs($id_init, '"from":{"id":',',"is_bot":'); //в эту переменную записываем уникальный номер пользователяfunction sbs ($str,$m1,$m2){ //из строки str возвращает подстроку между двумя метками-словами m1 и m2$p1=strpos($str,$m1)+strlen($m1); //длина слова-метки слева$p2=strpos($str,$m2);return substr($str,$p1,$p2-$p1);}

Для каждого пользователя строится следующая структура данных:

  1. файл состояния: переменные флажки , которые описывают в частности, идентификационные номера сообщений ( message_Id) для дальнейшей их редакции, актуальное состояние ( ввод количества, ввод страйка и т.д.), вспомогательные данные для построения графика

  2. файл данных по составу портфеля ( идентификационный номер ценной бумаги, тип, количество, цена, дата экспирации)

  3. файлы для построения графика

После каждого вебхука происходит инициация данных в программе из указанных файлов.

Построение графика для анализа портфеля

График строится по состоянию на момент экспирации опционов, что дает возможность упрощенно представить график каждого инструмента в виде y=kx+b,

где y это размер прибыли/убытка на момент экспирации

х стоимость базового актива

После записи данных в портфель создаются файлы с расширением png с помощью библиотеки GD в несколько этапов:

1) определение Х-координат всех точек перелома на графике (очевидно, что сумма всех линий даст ломанную кривую)

2) определение масштаба изображения (средняя всех координат точек перелома по оси Х, максимальное отклонение от среднего, и максимальный размер по оси Y)

3) создание ассоциативного массива точек, в котором координата X это ключ, координата Y величина, для всей цифровой полуплоскости:

$typ опцион колл, пут или фьючерс

$q количество ( отрицательное продажа)

$cena цена приобретения ценной бумаги

$strike страйк для опционов

$x0 начальная координата по оси Х

$sx масштаб по оси Х

function pparr($typ, $q, $cena, $strike,$x0,$sx){ //функция выдает одномерный массив - координаты x=>y точек по //типу цб, направлению (покупка продажа), цене приобретения и страйку (для опционов)  if ($q<0) { $q=-$q; $drct='-'; }  else $drct='+'; $a=array(); $b=array(); $delta=$sx; //расстояние между точками равно масштабу $scalx for ($i=0;$i<740;$i++){ //кол во точек 740 определено заранее $xkk=$x0+$delta*$i; //значение по оси X if ($typ=='fut') { if ($drct=='+') $a[$xkk]=($xkk-$cena)*$q; else $a[$xkk]=(-$xkk+$cena)*$q; } if ($typ=='call'){ if ($drct=='+') { if ($xkk<=$strike) $a[$xkk]=-$cena*$q; else $a[$xkk]=$q*($xkk-$strike-$cena);} else { if ($xkk<=$strike) $a[$xkk]=$q*$cena; else $a[$xkk]=(-$xkk+$strike+$cena)*$q;}  } if ($typ=='put'){ if ($drct=='+') { if ($xkk<=$strike) $a[$xkk]=(-$xkk+$strike-$cena)*$q; else $a[$xkk]=-$q*$cena;} else { if ($xkk<=$strike) $a[$xkk]=($xkk-$strike+$cena)*$q; else $a[$xkk]=$cena*$q;}  } $b[(string)$xkk]=(string)$a[$xkk]; }return $b; };

4) создание файлов изображений, при этом одновременно строится график для каждой строки из портфеля ( зеленый цвет) и результирующий для портфеля ( красный цвет). Кроме того, know-how заключается в том, что одновременно строится еще четыре изображения для увеличения/уменьшения изображения по оси Х и по оси Y. За счет этого достигается эффект работы он-лайн с клавишами X+,X-,Y+,Y- под графиком. Таким образом, для каждого пользователя в каждый момент времени существует пять файлов изображения.

Анализ рисков опционного портфеля

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

В телеграмм-боте встроен блок расчета гарантийного обеспечения, в котором реализован следующий подход.

Гарантийное обеспечение для фьючерсов считается по формуле, которая предложена самой Московской биржей:

ГО=БГО+(Цена-Расчетная_Цена)*БП;

где Расчетная_Цена определяется по результатам клиринга и практически равна цене базового актива на момент клиринга, определяется в пунктах

БП стоимость пункта в рублях, зависит, в частности, от курса доллара,

БГО базовое гарантийное обеспечение, определяется биржей, может произвольно увеличиваться, например, перед праздниками

Таким образом, по фьючерсам ГО считается достаточно просто, поскольку все данные есть в открытом доступе. Что касается опционов и тем более сочетаний их в разных комбинациях, Московская биржа не дает однозначного рецепта, вернее не дает данных для их расчета, а предлагает купить модуль расчета ГО.

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

Вот как выглядит покупка колла в нашем боте:

Запись в портфеле покупки опциона "колл" страйк 75000 дата экспирации 03.06.2021 по цене 25 Запись в портфеле покупки опциона "колл" страйк 75000 дата экспирации 03.06.2021 по цене 25 График зависимости прибыли/убытка по купленному опциону "колл" в зависимости от стоимости базового актива на дату экспирации График зависимости прибыли/убытка по купленному опциону "колл" в зависимости от стоимости базового актива на дату экспирации

Гарантийное обеспечение=23.

Что нам показывает график: если стоимость базового актива ( в данном случае стоимость фьючерса на курс рубля к доллару) [вечером] 03.06.2021 будет 75000 и ниже, то наш убыток составит 23 . При повышении этой стоимости до 75023 мы выйдем в безубыток, при дальнейшем росте получим прибыль.

Что мы имеем с точки зрения риска: не при каких обстоятельствах наш убыток не превысит сумму 23. Следовательно, наш опцион совершенно не похож на фьючерс, и в расчете ГО мы можем записать просто сумму 23.

Покупка пута примерно та же картина.

Продажа пута.

Запись в портфеле продажи опциона "пут" страйк 72750 по цене 44 с датой экспирации 03.06.2021Запись в портфеле продажи опциона "пут" страйк 72750 по цене 44 с датой экспирации 03.06.2021График зависимости прибыли/убытка по проданному опциону "пут" от стоимости базового актива на дату экспирацииГрафик зависимости прибыли/убытка по проданному опциону "пут" от стоимости базового актива на дату экспирации

Гарантийное обеспечение= 5436.

Можно убедиться, что при стоимости базового актива выше 72750 мы имеем прибыль 44. При снижении стоимости БА до 72706 мы выходим в ноль. При дальнейшем падении стоимости БА наш убыток НИЧЕМ НЕ ОГРАНИЧИВАЕТСЯ.

С точки зрения рисков это фьючерс, купленный по цене 72706. Подставляем это число в формулу ГО для фьючерса и получаем ГО для опциона! Этот ГО достаточно велик (5436), но может превратится в прибыль в течение нескольких дней.

Стоит ли овчинка выделки? Если при условных затратах сегодня 5436 мы получим через несколько дней 44? Мне кажется, риск очень велик. С другой стороны, курс рубля к доллару был таким примерно 3 месяца назад.

С продажей колла будет аналогичная ситуация.

А если одновременно продать пут и кол?

Запись в портфеле продажи опциона "пут" страйк 72750 и продажи опциона "колл" страйк 75000Запись в портфеле продажи опциона "пут" страйк 72750 и продажи опциона "колл" страйк 75000График зависимости прибыли/убытка по портфелю от стоимости базового актива на дату экспирации График зависимости прибыли/убытка по портфелю от стоимости базового актива на дату экспирации

Гарантийное обеспечение не изменилось!

С точки зрения риска понятно почему может реализоваться только один из сценариев либо по фьючерсу, купленному по примерно по 72700 (левая нога) либо по фьючерсу проданному по 75190 ( правая нога). Из них выбираем вариант

с наибольшим ГО , оно и будет мерилом риска.

На графике можно увидеть, что прибыль мы имеем при стоимости базового актива в диапазоне от примерно 72700 до 75190, в остальных случаях получаем убыток, который ничем не ограничивается.

Интерфейс телеграмм-бота

На экране отображаются следующие группы данных:

  • подробная инструкция по работе с ботом

  • текущие котировки ближайших фьючерсов по трем базовым активам

  • таблица Портфель, отображающая состав портфеля, сделанная с помощью интерфейса телеграмм ( можно редактировать)

  • значение гарантийного обеспечения

  • таблица, дублирующая состав портфеля, построенная как изображение формата png, которую можно копировать и сохранять

  • нижняя клавиатура, которую можно скрывать, с кнопками: Добавить позицию в портфель, Анализ портфеля с помощью графика, Обновить котировки

Таблица Портфель создана с помощью InlineKeyboard.

При нажатии на клавиши в этой таблице происходят следующие действия:

  • клавиша в столбце К-во редактирует количество ценных бумаг, соответствующее строке, в которой нажата клавиша

  • клавишами в столбце Цена можно ввести реальную цену приобретения ценной бумаги. По умолчанию цена вставляется по данным биржи, и для опционов она может значительно отличаться от рыночной

  • клавишей Х можно удалить строку.

Прочие клавиши в таблице заблокированы и служат только для передачи информации.

Значение гарантийного обеспечения пересчитывается каждый раз, когда вы нажимаете кнопку Записать в портфель( не показана, возникает в конце процедуры редактирования или добавления инструмента).

Заключение

В телеграмм-боте реализовано запоминание портфеля ценных бумаг для каждого пользователя. Под ценными бумагами понимаются опционы и фьючерсы, базовым активом для которых являются: курс рубля к доллару (Si), стоимость нефти брент (BR), а также индекс РТС (RI). Это самые высоколиквидные деривативы на московской бирже.

В телеграмм-бот заложен алгоритм подсчета гарантийного обеспечения, которое является мерой риска.

С помощью телеграмм-бота можно анализировать опционный портфель на графике прибылей/убытков (P/L график).

Протестировать телеграмм-бота можно по ссылке t.me/@test09062020bot. Или попробовать найти в телеграмме по названию опционный портфель.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru