#72839 - Tue Sep 01 2015 06:42 PM
Как работают блоки в опционных скриптах?
|
enthusiast
Registered: Thu Jun 23 2011
Записи: 331
Loc: Москва
|
Запускайте смело Buy Vola в виде агента. Там по умолчанию торговля заблокирована да ещё и выставлен режим виртуализации сделок. Поэтому без Вашего разрешения никаких реальных торговых операций не произойдет. Теперь конкретно Ваша ситуация: - 1. Берете скрипт Buy Vola. Копируете.
- 2. Добавляете свою формулу (обязательно возвращать именно double и обязательно это должен быть реально существующий страйк).
- 3. Рвете связь от блока CentralStrike к блоку SellVola.
Вместо неё на освободившийся вход подаёте свою формулу. - 4. Сохраняете скрипт. Создаете агента на базе уже своего скрипта. Запускаете, наслаждаетесь.
Для контроля, рекомендую продублировать выход вашей формулы на панели управления в виде NumericalValue. PS Если Вы скажете какую примерно формулу хотите реализовать, возможно это можно сделать настройками блока CentralStrike. Спасибо за консультацию, это наверно самый рациональный способ - использовать за прототип готовый скрипт и его модифицировать. Скорее всего в нем все и найдется. Проблема в том, что непонятно как работают блоки - нет описания. В первую очередь блок "BuyOptions": 1. Раньше были блоки типа "Открыть позицию..." и "Закрыть позицию..." - сейчас это что делает один блок "BuyOptions"? 2. Если п.1. верен, смена численного страйка на входе - он что закроет предыдущий опцион и откроет новый с другим страйком? Какова логика работы блока по входным сигналам? 3. Что такое входы "Текущий риск" и "Максимальный риск" - это единицы дельты или еще чего, целочисленные или...? 4. Если это блок исполнительный, для чего на вход подается "Улыбка", для работы с серией опционов? какова здесь функция блока? 5. Или надо управлять куплей/продажей через вход "Permission" (судя по всему - это строб -разрешение на работу блока)? Для Вас эти вопросы могут показаться странными, типа это очевидно, так как вы работаете с этой версией давно.
Отредактировано Evgeny_z (Tue Sep 01 2015 11:02 PM)
|
Наверх
|
|
|
|
#72848 - Wed Sep 02 2015 11:37 AM
Re: Как работают блоки в опционных скриптах?
[Re: Evgeny_z]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
1. Для опционов в принципе по (их идеологии) нет понятия "закрыть позицию". Например, Вы можете сформировать синтетику +1*колл-1*пут накрыть её фьючерсом и оказаться вне рынка (ну, почти). При этом брокер будет занудно уверять Вас, что "вот же она позиция! аж 3 штуки."
Блок Buy Options покупает опционы в том страйке, который ему указан, если это разрешено сигналом на входе Permission.
2. Если страйк изменился, а сигнал набирать позу ещё действует, то блок будет покупать опционы в новом страйке. Опционная позиция -- это единая сущность.
В скрипте-примере при сильном движении БА будет меняться центральный страйк и данный блок будет часть позы набирать в одном страйке, часть в другом, часть в третьем.
3. Мы ввели обобщенное понятие "Риск позиции". Вы можете в качестве риска использовать суммарное кличество опционов, можете использовать гамму, вегу, тету, положение звезд на небе или любую интересующую Вас характеристику. Тип входа double.
В скрипте-примере в качестве меры риска используется величина "сумма полустреддлов на всех страйках" (это, кстати, написано в описании блока TotalRiskN2; кто-то, возможно, узнает в этой метрике функцию риска от Твардовского).
Как это работает: на вход блока Buy Options подаётся текущий риск, максимальный риск и общий управляющий сигнал Permission. Если набор позиции разрешен и текущий риск меньше максимального, блок начинает котировать указанный ему страйк лимитными ордерами на покупку.
Если же блок видит, что текщий риск превышает максимальный, он начинает попытку продать старые опционы. Чтобы упростить логику и не морочить людям голову, он закрывает позицию не синтетикой, а "по-честному" пытается продать имеющиеся опционы.
4. Улыбка подаётся на вход для того, чтобы блок знал по какой цене он должен выставить лимитник. Вы сейчас скажете: можно было бы просто передать цену, но тогда её придется расчитывать где-то в другом месте. А если мы начнем делать блок, который, к примеру, занимается покупкой кондора? Ему на вход передавать 4 цены? Чтобы упростить ситуацию и сделать общее решение, на вход блока передаётся сразу вся улыбка целиком.
По улыбке он расчитывает "теоретическую" цену опциона в указанном страйке и потом от этой цены делает отступ на несколько Price Step. Отступ управляется настройкой Entry Shift. Это даёт возможность в какой-то ситуации котировать позицию и ждать лучшей цены, а в какой-то ситуации хватать чужие котировки по рынку.
5. Совершенно верно: вход Permission -- это внешняя блокировка работы блока. "Сейчас хочу набирать, а через 5 минут вообще не хочу".
В скрипте-примере разрешением является следующее условие: историческая волатильность превышает подразумеваемую на 5% (точное значение задаётся параметром Entry Level).
Собственно, все эти тонкости работы становятся уже более-менее понятны, если недельку поторговать (в режиме симуляции!) на подвижных инструментах вроде Si, GZ, RI и им подобных.
Основное ограничение работы с виртуальными позициями в том, что эти заявки всегда считаются исполненными. Что не соответствует реальной рыночной практике, но позволяет получить хотя бы приближенное представление о работе скрипта.
ПС Ещй раз напоминаю, что агентам желательно давать разумные имена. Это позволит в дальнейшем избежать путаницы. Например, своих агентов на скрипте Buy Vola я предпочитаю называть "bv-SRU5-Sep", "bv-GZU5-Aug".
Приставка bv намекает, что это Buy Vola; в середине стоит Базовый Актив; суффиксом идет конкретная серия с которой агент работает.
Это позволит легко ориентироваться в ситуации, когда у Вас будет по 3 агента на покупку и продажу (итого 6) в наших самых ликвидных фьючерсах (примерно 5). Суммарно 30 агентов в перспективе. Если не дать им разумные имена, потом в таблице Autotrading Control Center будет нереально ориентироваться.
|
Наверх
|
|
|
|
#72861 - Wed Sep 02 2015 09:00 PM
Re: Как работают блоки в опционных скриптах?
[Re: Evgeny_z]
|
stranger
Registered: Wed Sep 02 2015
Записи: 15
|
Здравствуйте! Подскажите, есть возможность вывести стакан по определенному опциону?
|
Наверх
|
|
|
|
#72863 - Wed Sep 02 2015 10:26 PM
Re: Как работают блоки в опционных скриптах?
[Re: Option Wizard]
|
veteran
Registered: Wed Oct 02 2013
Записи: 1357
|
1. Для опционов в принципе по (их идеологии) нет понятия "закрыть позицию". Например, Вы можете сформировать синтетику +1*колл-1*пут накрыть её фьючерсом и оказаться вне рынка (ну, почти). При этом брокер будет занудно уверять Вас, что "вот же она позиция! аж 3 штуки." Уважаемый Option Wizard Можете пояснить это!! Как тогда быть в случае с брокером в такой ситуации??
Отредактировано Stan (Wed Sep 02 2015 10:27 PM)
|
Наверх
|
|
|
|
#72869 - Thu Sep 03 2015 11:24 AM
Re: Как работают блоки в опционных скриптах?
[Re: bic]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
Подскажите, есть возможность вывести стакан по определенному опциону? Конечно. В этом смысле опцион ровно такой же инструмент как и все остальные. 1. Открываем Orders Manager 2. Там есть возможность задать инструмент или другой способ: накидать интересующих тикеров на панель Quotes (Котировки) и поднимать Orders Manager из неё с помощью контекстного меню. Тогда не надо тикер вводить.
Отредактировано Option Wizard (Thu Sep 03 2015 11:25 AM)
|
Наверх
|
|
|
|
#72870 - Thu Sep 03 2015 11:28 AM
Re: Как работают блоки в опционных скриптах?
[Re: Stan]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
Можете пояснить это!! Как тогда быть в случае с брокером в такой ситуации?? Никак. Просто тянете позицию до экспирации и она схлопывается автоматически. Если у вас много таких синтетических конструкций в далеких от денег страйках, то нет никакой физической возможности от них от всех избавиться. Там просто необходимых оборотов не будет. Конечно, можно вставать хуже рынка, но с таким же успехом можно деньги в окно выбрасывать.
|
Наверх
|
|
|
|
#72875 - Thu Sep 03 2015 04:44 PM
Re: Как работают блоки в опционных скриптах?
[Re: Stan]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
Блин сразу копятся вопросы, потому что не так давно читал на смарт лабе о использовании таких синтетических инструментов. Мы про разное. Я говорю про обычный колл-пут паритет при котором можно набрать позу эквивалентную (почти) полному выходу из позиции. Вы же явно имеете в виду что-то другое.
|
Наверх
|
|
|
|
#72877 - Thu Sep 03 2015 08:42 PM
Re: Как работают блоки в опционных скриптах?
[Re: Evgeny_z]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
1. Тестов на истории для опционов нет ни в каком виде.
2. Опционные скрипты не предназначены для работы в режиме лаборатории.
Процитированное сообщение явно говорит о том, что скрипт не готов к торговле (не запущен в виде агента или агент ещё не полностью проинициализирован). Поэтому в целях безопасности его торговые операции полностью блокируются.
После завершения инициализации агента данное сообщение исчезнет.
|
Наверх
|
|
|
|
#72878 - Thu Sep 03 2015 11:04 PM
Re: Как работают блоки в опционных скриптах?
[Re: Option Wizard]
|
enthusiast
Registered: Thu Jun 23 2011
Записи: 331
Loc: Москва
|
1. Тестов на истории для опционов нет ни в каком виде.
2. Опционные скрипты не предназначены для работы в режиме лаборатории.
Процитированное сообщение явно говорит о том, что скрипт не готов к торговле (не запущен в виде агента или агент ещё не полностью проинициализирован). Поэтому в целях безопасности его торговые операции полностью блокируются.
После завершения инициализации агента данное сообщение исчезнет. 1. Тестов на истории может быть и нет, а вот реальных исторических данных М1, фьючерс+опционы (по десятку ближних) - помесячно накоплено достаточно. В TSLab 1.2 применял для моделирования. Жаль, что сейчас нельзя использовать. 2. Что касается Buy Vola - действительно, дело было в лаборатории. Запустил в качестве агента - пошли стандартные сообщения. Но сделок пока нет - погоняю может быть подольше... Но главное не это. Не могу из новых блоков составить цепочку покупки опционов (или как Вы выражаетесь, набора позиции)... Пытаюсь методом копирования разных наборов блоков из Buy Vola в новый скрипт (отдельными блоками из панели инструментов, я уже понял, мне не поднять), но нет, не получается таким методом тыка... наработано много, а описаний нет. Возможно я пытаюсь решать задачу не ту, под которую они "заточены". Подскажите набор блоков для этой простой задачи. Требуется покупать заданное количество опционов Put по заданному страйку, затем закрывать всю позицию, и покупать по вновь заданному страйку (скорее всего, соседнему с заданным шагом). Задачу я назвал "простой" условно, понятно что требуется использование наработанного Вами арсенала технических решений, заложенных в новой версии программы (выбор серий, покупка/продажа по нужным ценам и т.д. и т.п.). А дальше пойдут вопросы по грекам... Но в этом все и дело, без Вашей помощи не обойтись. Помогите воспользоваться мощным инструментом и, как говорится, "Да пребудет с вами Вола!"
|
Наверх
|
|
|
|
#72879 - Fri Sep 04 2015 12:24 AM
Re: Как работают блоки в опционных скриптах?
[Re: Evgeny_z]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
Как уже говорил, правильным будет не копировать куски блок-схемы в "свой" скрипт, а скопировать целиком весь скрипт в новый и "мутировать" копию к желаемому поведению. 1. Раз страйк фиксирован, значит вместо блока CentralStrike следует использовать блок "Числовая Константа" (Constant Value) Его можно кинуть на панель ControlPane (куда сейчас выводится значение страйка) и сделать редактируемым числовым значением. То есть страйк оператор выбирает сам руками какой хочет. TODO: сделать блок с возможностью выбрать один страйк из списка возможных с помощью дроп-дауна. Это защитит от ошибок оператора.2. Чтобы не париться с Permission, делаем блок "Логическая константа" (емнип Boolean Value или как-то так). Привязываем её на ControlPane вместо числовой константы EntryLevel. В качестве элемента управления подойдет чекбокс. То есть когда мы хотим покупать -- ставим галку. Когда нам это надоедает -- галку снимаем. По большому счету, можно вообще сделать логическую константу на входе Permission всегда TRUE и тогда регулировать поведение скрипта можно будет единственной настройкой Max Risk -- это упростит ситуацию ценой некоторой потери гибкости. 3. Раз мы со страйком определились -- дело сделано. Параметр MaxRisk отрегулирует сколько Вы хотите купить. Когда захотите продать -- поставите его в 0. Если через денек Вам захочется поработать с другим страйком -- отлично. Меняете страйк, ставите желаемый Max Risk и вперед. Успеха! ПС В Вашей фразе затем закрывать всю позицию, и покупать по вновь заданному страйку (скорее всего, соседнему с заданным шагом) мне почудился намек на то, что это определяется неким алгоритмом. Тогда блок "Числовая константа" следует заменить на формулу или на свой рукописный индикатор. ППС Обращаю Ваше внимание, что при выделении в тулбоксе каждого опционного блока в Свойствах в поле Описание дано краткое пояснение что этот блок делает. Теперь если блок уже стоит в блок-схеме, то после его выделения можно просмотреть краткое описание каждого параметра этого блока. Естественно, это не полноценная документация, но хорошая подсказка в трудную минуту.
|
Наверх
|
|
|
|
#72881 - Fri Sep 04 2015 10:40 AM
Re: Как работают блоки в опционных скриптах?
[Re: Option Wizard]
|
enthusiast
Registered: Thu Jun 23 2011
Записи: 331
Loc: Москва
|
Добрый день! Спасибо, что быстро откликаетесь. Как уже говорил, правильным будет не копировать куски блок-схемы в "свой" скрипт, а скопировать целиком весь скрипт в новый и "мутировать" копию к желаемому поведению. Дело в следующем. Это общеизвестный в практике прием работы с блоками неизвестного функционала и свойствами ("черным ящиком"). Подаем разные комбинации сигналов на входы, смотрим что получаем на выходе... Иногда это достаточно быстрый способ освоения. В данном случае процесс "мутации" пошел. Копировать целиком и "отрезать" или копировать части - вопрос, скорее всего, не принципиальный. 1. Раз страйк фиксирован, значит вместо блока CentralStrike следует использовать блок "Числовая Константа" (Constant Value)
Его можно кинуть на панель ControlPane (куда сейчас выводится значение страйка) и сделать редактируемым числовым значением. То есть страйк оператор выбирает сам руками какой хочет.
TODO: сделать блок с возможностью выбрать один страйк из списка возможных с помощью дроп-дауна. Это защитит от ошибок оператора.
2. Чтобы не париться с Permission, делаем блок "Логическая константа" (емнип Boolean Value или как-то так). Привязываем её на ControlPane вместо числовой константы EntryLevel. В качестве элемента управления подойдет чекбокс.
То есть когда мы хотим покупать -- ставим галку. Когда нам это надоедает -- галку снимаем. По большому счету, можно вообще сделать логическую константу на входе Permission всегда TRUE и тогда регулировать поведение скрипта можно будет единственной настройкой Max Risk -- это упростит ситуацию ценой некоторой потери гибкости. По пунктам 1 и 2 как раз вопросы не возникают. Конечная цель - робот, временно можно дать значения и от константы. Кстати, на вход Permission "Логическую константу" прицепить не удалось, подал от блока "Константа". 3. Раз мы со страйком определились -- дело сделано. Параметр MaxRisk отрегулирует сколько Вы хотите купить. Когда захотите продать -- поставите его в 0.
Если через денек Вам захочется поработать с другим страйком -- отлично. Меняете страйк, ставите желаемый Max Risk и вперед.
Успеха! ...
Чем дело закончилось. Вычленил и скопировал несколько блоков с настройками и связями: от блока "Источник-Опцион" до блока "ПокупкаОпционов" - TSLab перестал выдавать "плохие" сообщения и запустил скрипт. Вопрос, как теперь проверить, что получилось... На входы блока "ПокупкаОпционов" подал константы: Permission=1; Текущий риск=80; Макс риск=100. Выход блока "ПокупкаОпционов" показывает на выходе (по графику) значение - ПокупкаОпционов(Put,1,0,0)=0 Подключил блок "Количество опционов" к источнику и вывел на панель графика - показывает число =210. Что в данном случае может показывать блок "Количество опционов" и правильно ли я его подключил (по аналогии с TSLab 1.2)... Как проверить открытие позиции и покупку опционов? P.S. Кстати, агент Buy Vola, запущенный вместе Collect IV (All), HV (All) - работает, но позиций нет, только графики... Как и где в Buy Vola видны позиции - например, какие в данный момент куплены опционы (если они есть)?
Отредактировано Evgeny_z (Fri Sep 04 2015 11:13 AM)
|
Наверх
|
|
|
|
#72884 - Fri Sep 04 2015 12:55 PM
Re: Как работают блоки в опционных скриптах?
[Re: Evgeny_z]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
P.S. Кстати, агент Buy Vola, запущенный вместе Collect IV (All), HV (All) - работает, но позиций нет, только графики...
Как и где в Buy Vola видны позиции - например, какие в данный момент куплены опционы (если они есть)? Контрольный вопрос: в скрипте Buy Vola галка Block trading снята? Если снята, то выполнено ли условие на вход? Действительно ли HV>IV на величину EntryLevel? Если у Вас цель просто потестить погонять, то загоните EntryLevel в (-15) -- и он почти гарантированно будет покупать. Что касается основного вопроса: уже нужны или скриншоты блок-схемы или давайте поднимемся в личку -- Вы мне пришлете свой скрипт что у Вас получается и тогда более грамотно отвечу. Имхо, в простом варианте зафиксированного страйка задача решается не очень большой кровью.
|
Наверх
|
|
|
|
#72888 - Fri Sep 04 2015 02:09 PM
Re: Как работают блоки в опционных скриптах?
[Re: Option Wizard]
|
enthusiast
Registered: Thu Jun 23 2011
Записи: 331
Loc: Москва
|
...Контрольный вопрос: в скрипте Buy Vola галка Block trading снята?
Если снята, то выполнено ли условие на вход? Действительно ли HV>IV на величину EntryLevel?
Если у Вас цель просто потестить погонять, то загоните EntryLevel в (-15) -- и он почти гарантированно будет покупать.
Что касается основного вопроса: уже нужны или скриншоты блок-схемы или давайте поднимемся в личку -- Вы мне пришлете свой скрипт что у Вас получается и тогда более грамотно отвечу. Имхо, в простом варианте зафиксированного страйка задача решается не очень большой кровью. 1. Галка не снята. Если сниму, агент начнет реальную торговлю или будут виртуальные сделки? 2. Скрипта в версии TSLab 2.0 пока нет и быть не могло. Я пытаюсь разобраться, как опционные блоки применить для торговли по классической стратегии "Покупка стрэддла" (вариант - 2*Put+BA). И, далее, поддержка дельта-нейтральности... А пока не могу увидеть, что и как покупает агент Buy Vola. Есть скрипт-заготовка, промоделированный в версии TSLab 1.2 (усеченный вариант, естественно, с имитацияей дельты, гаммы, теты, с развесистой структурой выбора и "покупки/продажи" опционов) - но все это лишь модель при параллельной торговле вручную. Сильно напрягает то, что нельзя спокойно работать в лаборатории, а сразу требуется запускать агент. Не понято, как проверять отдельные "ветки" планируемого скрипта, тем более, в условиях дефицита информации - интерфейс не дружественный получается... Что касается основного вопроса: Буду, конечно, работать с Buy Vola для дальнейшего понимания... На начальном этапе устроит предложение " ...Имхо, в простом варианте зафиксированного страйка задача решается не очень большой кровью..." Но высылать пока нечего - вырванный из схемы Buy Vola кусок не работает. Возможно, заработает агент, разберусь и с его частью...
|
Наверх
|
|
|
|
#72892 - Fri Sep 04 2015 02:49 PM
Re: Как работают блоки в опционных скриптах?
[Re: Evgeny_z]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
1. Галка не снята. Если сниму, агент начнет реальную торговлю или будут виртуальные сделки? Будут сделки реальными или виртуальным решает вторая галочка в интерфейсе Use virt pos. По дефолту сделки будут виртуальными. Но есть и третий уровень защиты: Entry Shift. Как я лично делаю для отладки: ставлю Entry Shift (-100), снимаю галку Use virt pos, снимаю галку Block Trading. В итоге скрипт начинает котировать опцион очень далеко от рынка. Эту заявку можно (и нужно) увидеть в Orders Manager. После этого просто ставлю адекватный Entry shift. Для акций и доллара это величина в диапазоне (-30)..(-10) шагов цены.
Attachments
2015-09-04 - Панель управления агентом.png (1889 downloads)Description: Панель управления агентом
Отредактировано Option Wizard (Fri Sep 04 2015 03:28 PM)
|
Наверх
|
|
|
|
#72895 - Fri Sep 04 2015 05:04 PM
Re: Как работают блоки в опционных скриптах?
[Re: Option Wizard]
|
enthusiast
Registered: Thu Jun 23 2011
Записи: 331
Loc: Москва
|
Спасибо, информацию принял.
Таким образом, итог первого подхода к инструменту: описаний практически нет, средств отладки нет, чего нагородишь - прямо в рынок (что-то говорили про игровой контур), на истории протестировать - нельзя. Говорю же, интерфейс недружественный...
Может и правильно, на деньгах - быстрее доходит. Это как в преферанс - не научишься, пока на деньги не сыграешь, и на мизере "паровоз" не поймаешь...
Что же спасибо, будем думать, тестировать, и действительно... Ваш девиз как пророчество звучит: "Да пребудет с вами Вола!"
|
Наверх
|
|
|
|
#72896 - Fri Sep 04 2015 06:16 PM
Re: Как работают блоки в опционных скриптах?
[Re: Evgeny_z]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
что-то говорили про игровой контур Если Вы реальный клиент брокера и реальный клиент ТСЛаб, он (брокер) может выдать Вам логин-пароль Плаза-2 к ИГРОВОМУ (не путать с тестовым!) контуру биржи (мой брокер хорошим людям даёт бесплатно). Когда там был последний раз (где-то в июне), там были вполне приличные котировки опционов на RI (и биржевая улыбка). Соответственно, вы с этим логином Плаза-2 обращаетесь в наш саппорт и мы Вам делаем ключ ТСЛаб для данного подключения. В итоге Вы можете торговать на приближенно правдоподобном рынке, видеть свои лимитники и делать "всё как в жизни", но при этом не рисковать счетом. ПС Ваш девиз как пророчество звучит Сейчас, видимо, самый удачный момент начать продавать волатильность... То есть воспользоваться скриптом Sell Vola. Напоминаю про соблюдение риск-менеджмента!
Отредактировано Option Wizard (Fri Sep 04 2015 06:19 PM)
|
Наверх
|
|
|
|
#72966 - Tue Sep 08 2015 12:58 PM
Re: Как работают блоки в опционных скриптах?
[Re: Option Wizard]
|
stranger
Registered: Wed Sep 02 2015
Записи: 15
|
Здравствуйте! Подскажите, как можно сбросить статистику агента? А также, как очищать статистику заявок, сделок позиций?
P.S. Можно ли в настройках агента менять положение центрального страйка или нужно переделывать логику скрипта?
Заранее спасибо!
И конечно же, да прибудит с нами вола! ;-)
Отредактировано bic (Tue Sep 08 2015 01:39 PM)
|
Наверх
|
|
|
|
|
|