Albus (Игорь Китаев)
Albus (Игорь Китаев) личный блог
07 апреля 2017, 14:20

Робот ContanGO! 2.0

Робот ContanGO! 2.0
Месяц назад я написал пост Робот ContanGO! smart-lab.ru/blog/385513.php
В нём был изложен черновик торговой идеи. Между фьючерсом и акцией всегда есть разница в цене. Обычно фьючерс дороже акции. Это называется контанго. Контанго всё время меняется. Оно то больше, то меньше. С каждым днём контанго распадается и стремится к нулю. Контанго достигает нуля к дате экспирации.
Робот, выложенный в первом посте, был первым наброском. Он многое не учитывал. С тех пор он стал умнее, я полностью переписал код и обогатил его новыми аналитическими элементами.
1. Теперь роботу не нужно задавать код фьючерса. Он сам возьмёт новый список фьючерсов, когда до экспирации останется 5 дней.
2. Робот умеет учитывать то, что часть денег морозится во фьючерсах, заблокированная под ГО. Он уменьшает доходность на размер замороженных денег.
3. Робот учитывает комиссию биржи автоматически (ничего писать не нужно)
4. Робот учитывает комиссию брокера. Задаётся пользователем в файле ContanGO.lua
5. Робот вычитает из доходности налог НДФЛ 13%
6. Если вы знаете что делаете, вы можете вписать размер дивиденда по каждой акции. Вписав дивиденд, вы поднимете доходность до справедливого значения. Дивиденд считается с налогом 13%. После среза реестра дивиденд нужно обнулить , потому что он перестанет играть роль. Этот пункт — для продвинутых. Если он вам не понятен — поставьте в дивидендах нули.

Ещё раз пройдусь по значениям полей.
1. Share — базовый актив — акция. Под валюты робот не адаптирован, не пытайтесь вписать туда доллар рубль, будет глючить.
2. Nazvanie — название акции — базового актива.
3. Futures — фьючерс на эту акцию.
4. Expire_Days — сколько дней до экспирации.
5. GO % — размер ГО по сравнению с полной стоимостью фьючерса.
6. Div_rub — размер дивиденда на акцию в рублях. Пишется при условии, что срез реестра выпадает до экспирации. И при условии, что этого среза ещё не было. Если срез уже был, то в этом поле надо поставить 0.
7. spread — разница в процентах между фьючерсом и акцией.
8. profit % — это разница в процентах между фьючерсом и акцией за вычетом всех отрицательных моментов: замороженное ГО, комиссия биржи и брокера, налог 13%. В скобках показано насколько это больше или меньше, чем доходность депозита. Если больше 1, то выше, если меньше 1, то ниже.
9. max_profit — робот засекает какой максимальный размер принимал предыдущий параметр и запоминает его. В скобках показано, на сколько он обыгрывает банковский депозит.
10. Depozit_v_banke — средняя доходность годового депозита в российских банках. Я его беру на banki.ru в разделе Аналитика. Сейчас он равен 7,57% годовых. Робот считает какую доходность даст такой депозит за количество дней, оставшееся до экспирации фьючерса.

Робот лежит здесь. Вот ссылка:
yadi.sk/d/1K7lQEaA3FT7fy
В архиве сам робот ContanGO!.lua и библиотека QL.lua. В ней торговые функции, необходимые для работы робота.

А это платформа LuaForWindows. Она нужна для работы библиотеки QL
github.com/rjpcomputing/luaforwindows/releases/download/v5.1.5-51/LuaForWindows_v5.1.5-51.exe

1. Установите LuaForWindows
2. Перезагрузите комп.
3. Положите в отдельную папку файлы ContanGO и QL
4. Запускайте в КВИКе робота ContanGO.lua через Сервисы — Lua скрипты — добавить.

Вот часть файла ContanGO!.lua, которую может редактировать пользователь.
Робот ContanGO! 2.0
Примечание. Два таких дефиса — превращают строку в комментарий. Это позволяет писать после них любой текст.
31 Комментарий
  • Igr
    07 апреля 2017, 14:55
    а можно узнать почему прошлый пост про робота удалили? 
  • Igr
    07 апреля 2017, 14:57

     а с какой годовой ставкой в банке вы сравниваете?  надо бы такое значение в таблице 

     

    робот не торгует, только предоставляет информацию?

  • Igr
    07 апреля 2017, 15:00
     скачал, спасибо 
  • Replikant_mih
    07 апреля 2017, 15:41
    Мм, возникло пару интересных мыслей после прочтения, спасибо.
  • ✔Бизне$$ Ангел ✰
    07 апреля 2017, 15:55
    круто, спасибо!
  • ch5oh
    07 апреля 2017, 16:03

    Благодарю. Очень хотел бы воспользоваться.

    Скажите, почему при запуске Ваш скрипт начинает мне бешено спамить сообщение:

    "ContanGO.lua:149: attempt to perform arithmetic on global 'crude_offer_sh' (a nil value)"

    Я что-то не донастроил в Квике? Заказ котировок? Таблица текущих торгов?

  • ch5oh
    07 апреля 2017, 16:31

    Акции все заказаны из секции TQBR (289 штук).

    Там на этой строчке написано

    offer_sh=crude_offer_sh-div[sec]*(1-0.13)

     

    Может, он дивиденды не может найти?..

      • ch5oh
        07 апреля 2017, 17:08

        Albus, Фильтры тоже сброшены.

        Добавил логгирование принудительное всех значений на входе и получил виновника трагедии:

        SEC: SBER; ValPriceStr: -1.#J

        Потом добавил ещё и получил подозрение на багу в методе toPrice:

        SEC: ROSN; offer_parval: 333.950000 # After toPrice: -1.#J

         

        То есть по виду он неправильно выполняет конвертацию, когда в конце очень много нулей после запятой?..

          • ch5oh
            07 апреля 2017, 17:24

            Albus, поставил вместо "toPrice(sec, tableoffer_sh.param_value)"

            "tonumber(tableoffer_sh_param_value)"

            вроде, полегчало...

      • ch5oh
        07 апреля 2017, 17:20
        Albus, а что за метод "toPrice"? Почему нельзя просто проверить, что строка не пустая и сделать tonumber?
          • ch5oh
            07 апреля 2017, 17:32

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

            И фактическая ругань идет в том месте, где этот бред мы пытаемся конвертнуть в tonumber.

             

            Чисто впечатление: круто!

            Но хотелось бы видеть доходности в виде "проценты годовых". Потому что человеческое сознание плохо понимает что такое "Депозит в банке 1.43 за 69 дней" ;-)

      • Алексей Киселев
        13 ноября 2021, 14:07
        Albus (Игорь Китаев), привет! этот скрипт ещё работает у вас? В новой 64-разрядной версии квика не запускается…
        • Андрей
          12 августа 2022, 17:16
          Алексей Киселев, Алексей, Добрый день, что то ответил автор? Не могу Вам насписать в Личку, рейтинга не хватает( 
      • Андрей
        12 августа 2022, 17:17
        Albus (Игорь Китаев), Добрый день, скажите пожалуйста а под актуальную версию квика есть такой же? 
        Очень нужно, или может сможете подсказать как можно подправить этого? 
  • Сергей Гаврилов
    07 апреля 2017, 16:51
    А где деньги то? Там же в спреде просто безрисковая ставка заложена, плюс коммис, плюс проскальзывание…
    Неужели за пять дней до экспира возникает ситуация, когда что-то можно заработать, сомнительно?
    • ch5oh
      07 апреля 2017, 19:37

      Сергей Гаврилов, деньги будут если цены временно разойдутся очень сильно.

      Или если у кого-то другая ставка налога.

      Или если есть инсайд по дивам. =D

      • Сергей Гаврилов
        07 апреля 2017, 19:48
        ch5oh, Вы уверены, что там что-то разойдется? Я не очень… Желающих получать безрисковые бабки выше ставки межбанка херова туча… На табличку посмотрите, где там расхождения? Только газ и то наверно, какая-нибудь ошибка…
        • ch5oh
          07 апреля 2017, 22:08

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

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

          Может, и вправду говорят: "Чистая доходность меньше 120% годовых — отстой и скука".

          • Сергей Гаврилов
            08 апреля 2017, 14:10
            ch5oh, вы не учитываете такую чудную вещь как T+2 — бесплатные бабки на 2 дня, которую Вы как клиент брокера эксплуатировать не можете… А брокер может, хочет и делает это… Этот момент в таком виде арбитража нужно учитывать, т.к. у брокера бабки бесплатные и он может спокойно выполнять двухдневный арбитраж с доходностью ниже межбанка… Поэтому доходность таких операций всегда будет ниже банковского депозита…  И лезть в такие операции частнику не стоит, ну разве что попробовать, чтобы воочию убедится, что не катит.. 
            Какие там 120%, 5-6% годовых дай бог…
  • Stoic
    07 апреля 2017, 18:45
    спа
  • Friendly Deep Space
    09 апреля 2017, 17:03
    Результаты испытаний есть уже?
  • shprots
    13 апреля 2017, 16:51
    ё-моё… Сижу прикручиваю дивиденд к своей безрисковой стратегии. А вы уже всё сделали! Супер! Ещё раз спасибо!!! :)

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн