Избранное трейдера Тейконавт

по

Вега и Вомма

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

Итак, рассмотрим проданный стрэдл:

Вега и Вомма

Это обычный профиль PnL, который рисуют все опционные программы. Фактически, это зависимость PnL позиции от первого момента (M1) распределения вероятностей, где 
окажется цена БА на экспирацию (вон оно на заднем фоне профиля). M1 = текущей цене БА. Т.е. мысленно двигаем все распределение влево-вправо (меняем M1) и считаем, как изменится PnL позиции при этом. Но, когда торгуем волатильностью, влияние первого момента ведь стараемся исключать используя дельтахедж (ДХ). И в большей степени нас должен интересовать профиль PnL от второго момента распределения (M2). Именно от него зависит финрез торговли волатильностью. Фактически, M2 почти тоже самое, что IV на центре улыбки (IVC). Смотрел на истории, специальным образом нормированный M2 (на цену БА и время до экспы) коррелирует с IVC почти 100%.

Если у нас есть опционная модель, в которой можно точечно менять второй момент, то легко посмотреть профиль PnL от изменений M2. Я использую замечательную модель Курбаковского, в которой главный параметр mI — как раз и отвечает за второй момент. Поэтому добавил в своей программе отрисовку такого профиля. И вот что рисует для проданного стрэдла:



( Читать дальше )

Источники маркетдаты для алготрейдинга

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

ВНИМАНИЕ: Проверяйте внимательно, что вы покупаете и кому вы платите (чтобы не получилось так, что вы заплатите каким-нибудь мошенникам, а реальная компания по ссылке давно вышла из бизнеса).

---

www.automatedtrader.net/tick_data.xhtm

www.activetick.com/activetick/contents/MarketDataServicesPricing.aspx

www.tickdata.com/

www.tickdatamarket.com/

www.tradingphysics.com/Feeds/DownloadableFeeds.aspx

www.cqgdatafactory.com/
www.portaracqg.com/

trdata.tickvault.com/sso/index.html
www.refinitiv.com/en/financial-data/market-data/tick-history
www.refinitiv.com/en/products/elektron-enterprise-data-management/market-data-feeds/
www.bellin.com/products/partner-offerings/market-data/

www.csidata.com/

www.algoseek.com/

www.nanex.net/

( Читать дальше )

Упрощённый FAQ по торговле криптовалютами и краткие рекомендации.

FAQ составлен на основе реальных вопросов крипто-новичка

smart-lab.ru/blog/485793.php

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

Оставлены только выводы и рекомендации, сделанные на основе моего личного опыта использования крипто-сервисов.

1 Где торговать. Какие биржи.

2 Какой минимальный депозит

3 В чем этот депозит номинирован

4 Какие коммисионные

5 Какие издержки при вводе/выводе средств

6 Какая процедура ввода вывода.

7 Я слышал про ПО тормозное. Что ордера могут не исполнить. Как с этим дела в действительности. 



( Читать дальше )

О трудностях низкой волатильности (много "буков")

    • 14 ноября 2017, 11:43
    • |
    • А. Г.
  • Еще

Существует ошибочное мнение, что трендовые системы зарабатывают на движениях. Это не совсем точное выражение. На движениях меньше нескольких волатильностей реального таймфрейма (что это такое «реальный таймфрейм системы» – чуть ниже) трендовые системы как раз и не забатывают, а либо в нуле, либо в минусе, размер которого грамотная трендовая система и призвана ограничивать.

Что такое реальный таймфрейм для любой системы, не только трендовой? Это время в 2-3 раза меньше среднего времени в позиции. Для простейших систем «вошел-вышел» реальный таймфрейм вычисляется легко, для систем с пирамидингом и(или) усреднением – чуть сложнее, но это тоже возможно.

Что такое волатильность таймфрейма? Это стандартное отклонение  приращения цены в %. Точное значение мы его не знаем, но можем оценить через выборочное стандартное отклонение с некоторым «окном». Выбор «окна» расчета – это тоже интересный вопрос. Маленькое «окно» — большая ошибка, большое «окно» — увидим изменения в реальной волатильности с большой задержкой. Надо искать «золотую середину», например, использовать два «окна» или другие «танцы с бубнами».



( Читать дальше )

Плеер опционных позиций. OptionTesterFVV. Версия 1.

Здравствуйте дорогие друзья!

Теперь тест опционных стратегий на истории возможен ;)

Хочу поделиться с вами давнишней моей прогой, но чрезвычайно важной и без преувеличения уникальной. Я не видел еще таких плееров у нас в России, может они конечно и существуют, но както не попадались на глаза.

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

Для чего плеер нужен (для чего применяю его я):

( Читать дальше )

Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#

Вступление

     Никогда не увлекался скоростным трейдингом. Всегда хватало терминала. Изучать этот протокол меня побудил набор вакансий. Надо отметить, что я неспешно перебираю хорошие вакансии на рынке. Частному трейдеру очень сложно развиваться в одиночку — психологически, эмоционально, физически. Создавать и развиваться постоянно хочется, поэтому принял решение вливаться в коллектив. За несколько месяцев, мне удалось провести несколько собеседований. На втором этапе я проваливался именно из за не знаний протокола.  Предметную область я примерно представлял. Ну что там сложного? Соединился с биржей по сокетам и начинай обмен сообщениями. Надо отметить, что в этой области есть уже готовые разработки в виде quickfix или готового API от StockSharp (правда платные). Но я принял решение разбираться с нуля, чтобы вникнуть в детали.

Технические аспекты протокола


     Итак. Любой протокол, какой бы он сложный не был, работает примерно одинаково. Мы создаем у себя соединение с сервером, устанавливаем некий туннель между нами и сервером, посредством которого будем обмениваться сообщениями. Протокол — это как раз и есть набор правил, по которым строятся сообщения нужного формата. Если говорить технически, то мы должны создать сокет соединение с сервером на указанный порт.
Сообщение в FIX, как и в любом другом протоколе, состоит из нескольких блоков:
  • <Заголовок сообщения>
  • <Сообщение>
  • <Концовка сообщения>
     Наша задача, правильно заполнить эти блоки и отправить на сервер. Заголовок сообщения в свою очередь состоит из следующих данных:
  • <Начало сообщения, версия протокола>
  • <Длина (размер) сообщения>
  • <Тип сообщения>
  • <Идентификатор отправителя>
  • <Идентификатор получателя>
  • <Номер сообщения>
  • <Время отправки>
     Обращу ваше внимание, что я перечисляю обязательные поля. Есть еще и дополнительные. Концовка сообщения должна выглядеть так:
  • <Контрольная сумма сообщения>
     Сами данные заполняются достаточно легко. В виде: <тип поля> = <значение>. Например, <длина сообщения> = 78, то есть мы серверу говорим, что размер передаваемого нами сообщения составляет 78 байт. Стоит обратить внимание, что в протоколе FIX, типы полей кодируются в виде числовых значений. Например,  <длина сообщения> в протоколе передается как цифра 9. Исходя из выше сказанного, наш заголовок сообщения, выглядел бы следующим образом:
  • 8=FIX.4.4 _____ начало сообщения, протокол версии 4.4
  • 9=78 _____ размер сообщения 78 байт
  • 35=A _____ тип сообщения А, что означает попытка на соединение с сервером
  • 49=<ваш идентификатор выдается биржей>
  • 56=FG _____ идентификатор получателя, раздел Forts на бирже
  • 34=1 _____ первое сообщение
  • 52=20160212-11:42:51.812 _____ время отправки сообщения

Организационные вопросы

  1. Наша биржа дает тестовый контур для отработки своих алгоритмов по данному протоколу. Надо всего лишь написать запрос на доступ. Надо признать, тех служба работает отменно. Очень все быстро было организовано. Подробности http://moex.com/s442
  2. Обязательно понадобится описание протокола для нашей биржи ftp://ftp.moex.com/pub/FIX/Spectra/test/docs/spectra_fixgate_ru.pdf
  3. Чтобы вникнуть в тонкости передачи, мне очень помогла эта программа от биржи (позже я покажу как помогла) ftp://ftp.moex.com/pub/FIX/Spectra/Utils/fix_client.zip
  4. Описание самого протокола от создателей (на английском). Мне помог сильно wiki. http://fixwiki.org/fixwiki/FIXwiki
  5. Чтобы найти свои ошибки, мне приходилось перехватывать сообщения рабочего клиента биржи и сверять со своими. Для этого мне понадобился tcp/ip сниффер — программа перехвата сетевого трафика.
  6. Разработку я веду на c#.

К бою. Немного теоретической практики

     На момент изучения протокола, я уверен, многие столкнуться со следующими вопросами:
  • как именно считать длину сообщения
  • как разделять между собой данные
  • как считать контрольную сумму

     Если говорить образно. То, чтобы отправить сообщение на сервер, нам просто нужно сформировать нужную строку со всеми данными и отправить ее на биржу. Ну например:

8=FIX.4.4
;9=78;35=A;49=FG;56=tgFhcfx901U05;34=1;52=20160212-11:42:51.812
;98=0;108=3000;141=Y;10=047;

Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#

     Если быть внимательным, то мы увидим, что кол-во символов в строке у нас 100, а в заголовке сообщения мы передаем, что 78 (9 = 78). По правилам протокола FIX, длину сообщения нужно считать без учета концовки и первых двух полей заголовка. А именно:

Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#     С длиной сообщения разобрались. Теперь про разделитель. Пока в моем скрине это ";". В документациях западных написано что это символ SOH. Чтобы однозначно ответить на этот вопрос, я запустил прилагаемого клиента биржи и сниффером стал перехватывать сообщения между клиентом и биржей. Кстати, программа ведет логи, и их общение выглядит так (зеленое — передача запроса на биржу, красное — ответ от биржи):
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#
     Зачеркнул свой идентификатор, прошу понять правильно. Ну а перехват сообщения выглядит так:
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#     Зеленым я отметил именно разделители. Как вы уже видите, это просто в шестнадцатеричном виде код 01. То есть, в нашу строку в виде разделителей, нужно вставлять код 01. Также я отметил для себя последовательность полей в сообщении. Почему то в другом порядке у меня вызывало ошибки (возможно тут я не прав)
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#     Ну и контрольная сумма. Контрольная сумма считается над всем сообщением, за исключением концовки. То есть в расчет берется только заголовок и само сообщение. Для этого, мы переводим каждый символ в его Ascii код и вычисляем их сумму. Полученную сумму делим по модулю 256. Это и будет контрольной суммой сообщения. При этом, значение должно быть трехзначным. Если мы получаем 2 знака, то подставляем 0 слева (например, если контрольная сумма = 68, то должны передать значении 068).

К бою. Начало программирования

     В законченном виде, разработка будет составлять готовый класс, для работы с протоколом. Теперь начинаю строить его по кирпичикам. Для начала, я создал несколько классов:
  • класс для работы с заголовками
  • класс для работы с сообщением подключения к серверу (onLogon)
  • класс для работы с концовкой
    Каждый класс включает в себя поля, которые передаются и некоторые методы для их обработки.
    Класс для работы с заголовками. Пока просто выглядит так: 
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#

Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#     Как видим, первый метод строит нужную строку из полей. Обратите внимание, там присутствует наш разделитель в виде спец символа \u0001. Второй метод вычисляет размер заголовка (чтобы потом высчитывать размер сообщения). Надо обратить внимание, что при передачи времени, миллисекунды должны указываться в трехзначном формате (даже если миллисекунды = 52, то передаем 052). Следующие классы строятся по аналогии.
Класс создания сообщения на подключение (инициализация сессии)
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#
Класс создания концовки сообщения
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#

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

//Получаем ip сервера
IPAddress ipAddr = IPAddress.Parse(server);
IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, port);
//Создаем заголовк
HeaderMessage msHeader = new HeaderMessage
{
BeginString = «FIX.4.4»,
MsgType = «A», //Тип сообщения на установку сессии
SenderCompID = "",
TargetCompID = «FG»,
MsgSeqNum = 1
};
//Создаем сообщение на подключение onLogon
LogonMessage msLogon = new LogonMessage
{
EncryptMethod = 0,
HeartBtInt = 3000,
ResetSeqNumFlag = true
};

//Вычисляем длину сообщения
msHeader.BodyLength = msHeader.GetHeaderSize() + msLogon.GetMessageSize();
//Создаем концовку сообщения
TrailerMessage msTrailer = new TrailerMessage(msHeader.ToString() + msLogon.ToString());

//Формируем полное готовое сообщение
string fullMessage = msHeader.ToString() + msLogon.ToString() + msTrailer.ToString();
Console.WriteLine(«Сообщение для отправки {0}»,fullMessage);

//Создаем сокет для подключения
sSender = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
//Подключаемся
sSender.Connect(ipEndPoint);
Console.WriteLine(«Сокет соединился с {0} », sSender.RemoteEndPoint.ToString());


byte[] msg = Encoding.UTF8.GetBytes(fullMessage);
//Отправляем сообщение
int bytesSent = sSender.Send(msg);
Console.WriteLine(«Отправил {0} байт», bytesSent.ToString());


//Получаем ответ от сервера
byte[] bytes = new byte[1024];
int bytesRec = 0;
bytesRec = sSender.Receive(bytes);
Console.WriteLine(«Ответ от сервера: {0}», Encoding.UTF8.GetString(bytes, 0, bytesRec));


Все таки приложу и в виде картинок. Так наглядней. Кликабельно.
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#
В результате мы запросили у сервера подключение с нашим логином. И получили от него ответ.
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#
По мере развития, буду продолжать с теоретической частью. Если модераторы перенесут в раздел «Алго», я не против.

Продолжение Изучаю FIX протокол с нуля. Рисуем и программируем дальше.

Дивидендный механизм рфр

Участвовала в конференции первый раз.
Прекрасная погода
Организационная сторона  на высоте.
Отель «Новый берег» понравился.Вид из отеля был  как бы намекающим :)
Дивидендный механизм рфр
«Заработай на бирже на покупку яхты» :)
После моего выступления ряд участников попросил меня выложить в виде обзора моё выступление на конференции.
Выкладываю :)

Тимофей Мартынов предложил мне выступить на этой конференции на тему «Как жить на дивиденды»
Отвечаю: жить на дивиденды и доходы от дивидендных акций, как я их назвала дивитикеры, можно весьма не плохо, но финансовую отдачу от дивидендов можно значительно повысить, если понять дивидендный механизм рфр.
И так, мы пришли на рфр за дивидендами.
Можно просто и не замысловато купить акции из Индекса ММВБ 10
Дивидендный механизм рфр



( Читать дальше )

Сравнение стреддла и стренгла при дельтахедже

Добрый день опционщикам! и всем читателям.

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

Всё время было интересно почему ровнять нужно обязательно стреддл?, а не стренгл с купленными  колами и путами ч/3, допустим 10 000п. Решил сделать некий разбор полётов.

Интуитивно кажется что стренгл (любой даже на 2 500п) дешевле чем стреддл, т.к. в стреддле покупаем самые дорогие опционы, на как ведёт себя конструкция при отклонении цены? какие убытки максимальны по конструкции?

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

Для упрощения расчётов будем рассматривать только односторонее движение цены на n пунктов, шаг рехеджа примем 700п, он будет постоянным. Цену опционов посчитаем по базе скачанной с биржи РТС, вот от сюда ftp.moex.com/pub/FORTS/volat_coeff/  Исходя из шага 700п будем набирать наши позиции таким образом что бы на начальном этапе (при создании конструкции) дельта действительно менялась ч/з 700п, для этого гамма позиции должна быть равна 1/700*100=0,1428  — значение гаммы при изменении цены на 100п.  Тут надеюсь понятно что на самом деле в стреддле гамма будет постоянно уменьшаться при отклонении цены от центрального страйка и тем дальше тем больше, в стренглах же наоборот: при отклонении цены от центра и приближении её к одному из страйков купленных опционов гамма будет расти. Так же гамма будет меняться с течением времени и т.п. но это всё оставим. (и уж тем более я не обращаю вниманию на ГО который если очень грубо прикинуть будет равен половине стоимости конструкции).



( Читать дальше )

Стратегия ротации глобальных рынков

6522331-13758890904933708-Fgrossmann

Насколько могут быть прибыльны портфельные инвестиции, если ими правильно управлять? О своем опыте рассказывает Frank Grossman в блоге Seeking Alpha.

Стратегия ротации глобальных рынков использует переключение между 6 разными биржевыми фондами ETF на месячных отрезках. Бэктестирование доходности такой стратегии c 2003 года впечатляет.

  • Годовая доходность = 41,4% (для S&P500 = 8,4%)
  • Общая доходность с 2003 года = 3740% (S&P500 = 134%)
  • 69% месячных трейдов имели положительную доходность против 31% с отрицательной доходностью

В заглавии статьи приведен график доходности стратегии по сравнению с индексом S&P500.

Используются следующие рынки и инструменты:

  • Американский рынок (MDY — S&P MidCap 400 SPDRs)
  • Европа (IEV- iShares S&P Europe 350 Index Fund)
  • Развивающиеся рынки (EEM — iShares MSCI Emerging Markets)
  • Латинская Америка (ILF — iShares S&P Latin America)
  • Тихоокеанский регион (EPP — iShares MSCI Pacific ex-Japan)


( Читать дальше )

....все тэги
2010-2020
UPDONW