RUH666
RUH666 личный блог
29 апреля 2020, 13:19

Про "неготовность" Мосбиржи к отрицательным ценам фьючерсов

Интересно, а в чём может быть неготовность. В чём сложность внести в софт такую возможность? У вас же больше ничего не меняется, вариационка считается так же, из одной цены вычитают другую и умножают на количество контрактов. Вам же не корни из цены извлекать, мнимые числа не нужно в софт вводить.

Да, будут некоторые глюки с процентным изменениям цены, ибо по формуле, если цена была -10, стала -20, то выйдет, что она выросла на 100%, поэтому таблицы местами будут выглядеть диковато, но в целом это что меняет? Клиринг же каким был, таким и останется.

Да и, скорее всего, тот фокус с CL был первым и последним, по крайней мере в обозримом будущем. Зачем под этим предлогом экспиру по контракту экстренно сдвигать? Или там другой предлог?

И не забывайте подписываться на мой телеграм-канал и YouTube-канал

Если находите статью интересной, ставьте плюсики и добавляйте в избранное.
180 Комментариев
  • Виталий Зенин
    29 апреля 2020, 13:21
    Ты программист?
      • Виталий Зенин
        29 апреля 2020, 13:22
        RUH666, в нюансах
          • Виталий Зенин
            29 апреля 2020, 13:25
            RUH666, я код ядра не видел, но, уверяю, будет куча всяких нюансов, вроде расчетов индексов и чего еще угодно
              • Виталий Зенин
                29 апреля 2020, 13:33
                RUH666, там и индексы и модели считаются, о которых мы даже и представить не можем, уверен по коду еще эксепшины сыпятся если прайс негативный
            • flextrader
              29 апреля 2020, 17:40
              Виталий Зенин, мля, какой код Вы обсуждаете, 7+ лет на moex есть отрицательные цены исчо с самых первых  3.*-ей спектры (мэйджор релизов).

              Проблема сейчас больше методологическая: утвердить изм-я в модуль расчета ГО, чтоб на простых несинтетических (не реплицируемых синтетикой) инструментах отвязать от (только) последних значений расчетных цен (или цен БА) минБГО
      • Виталий Зенин
        29 апреля 2020, 13:23
        RUH666, это же биржа епта, баг дорого стоить может. Эту фитчу месяца 3 пилить и тестировать можно
          • Виталий Зенин
            29 апреля 2020, 13:25
            RUH666, никогда с программистами не работал?
              • Виталий Зенин
                29 апреля 2020, 13:30
                RUH666, ну когда лично с кодом больше 1кк столкнетесь, либо с командами, которые поддерживают такой объем столкнетесь — вопросы отпадут.
                  • Виталий Зенин
                    29 апреля 2020, 13:35
                    RUH666, зависимости, всякие риск модули, либо еще что-то. Это далеко не одна переменная. Поработайте в ИТ сфере, подобные вопросы отпадут.
                      • Виталий Зенин
                        29 апреля 2020, 13:39
                        RUH666, так не на одном человеке замкнулся мир, плюс еще документацию приводить в порядок
          • Виталий Зенин
            29 апреля 2020, 13:37
            RUH666, плюс история прайсов может храниться в беззнаковых каких-нибудь колонках, всякие алгоритмы сжатия на это могут опираться, а значит еще бд надо мигрировать на другую структуру, короче много всего может быть
            • GoodBargains
              29 апреля 2020, 13:43
              Виталий Зенин, да наверно и не надо эхти отрицательные цены вводить. Этого не будет больше. Достаточно оставить один Брент расчетный и прописать к нему документацию в случае отриц цен. Но их не будет больше скорее всего. это бред.
              • Виталий Зенин
                29 апреля 2020, 13:48
                GoodBargains, запилят точно, но не факт, что скоро. А то второй раз через полгода так же обосраться это прям зашквар будет.
          • Max Skinner
            29 апреля 2020, 14:25
            RUH666, как хорошо, что с таким подходом вас нет в IT
      • _sk_
        29 апреля 2020, 13:33
        RUH666, это примерно как введение 19-значных номеров заявок. Тянется история с зимы, дату релиза двигали несколько раз.
      • deke
        29 апреля 2020, 14:04
        RUH666, тебе все правильно говорят, но ты не программист и не поймешь. Всего одна переменная может порушить все. Напомнить про баг 2000 года?
        У них в коде может запросто вычисляться минимум как min(value,0), т.е. жестко задан 0 как минимальное значение в сотнях строк кода по разным модулям. 
          • deke
            29 апреля 2020, 14:23
            RUH666, долго, потому что проблемы нарастают как снежный ком. Исправил строчку — вылезло исключение. Надо понять почему оно возникло — исправить логику алгоритма. И так для каждого модуля, который могут поддерживать разные команды программистов. Все юнит-тесты прийдется править или переписывать.
              • deke
                29 апреля 2020, 14:37
                RUH666, я так тоже спрашиваю когда вылетает ошибка в простеньком коде. Складывается 2+2, а на выходе 5. В итоге ошибка совсем в другом месте и она портит память. 
                Ошибка может быть в одной строчке на миллион, но ее надо найти. А для этого прийдется перебрать весь миллион строчек или прогнать заново все юнит-тесты.
                  • deke
                    29 апреля 2020, 15:01
                    RUH666, а ты понимаешь что с C++ даже у нуля есть знак?
                      • deke
                        29 апреля 2020, 15:14
                        RUH666, я исходники не видел и даже не знаю на каком языке написано ядро биржи. В финансовом софте много нюансов именно в математике — сделал неправильное округление или сравнение и результат искажается. Числа с плавающей запятой даже сравнивать напрямую нельзя на равенство.

                        Самая очевидная проблема — отрисовка графиков. Все терминалы прийдется обновлять.
                          • deke
                            29 апреля 2020, 15:43
                            RUH666, чего смешного если сейчас ВСЕ графики строятся от 0 до максимума?
                          • deke
                            29 апреля 2020, 15:45
                            RUH666, стал тяжелее потому время-деньги. Майкрософт отказался от команды тестеров и испытывает Win10 на пользователях.
                              • deke
                                29 апреля 2020, 16:00
                                RUH666, так я же говорю, время = деньги. Сперва на asm писали, но это слишком долго и сложно, потом перешли на С, добавилась библиотека рантайма, потом C++ со своими классами. Сейчас С# со своей компиляцией во время исполнения. Код некогда оптимизировать, надо нанять самого дешевого индуса и побыстрее выйти на рынок.
                  • deke
                    29 апреля 2020, 15:02
                    RUH666, а откуда ты знаешь где она используется как исключительно положителная? это изначально не планировалось и считалось ошибкой.
                      • deke
                        29 апреля 2020, 15:41
                        RUH666, там же иерархия, архитектор-лид-кодер, каждый за свою часть отвечает
                          • deke
                            29 апреля 2020, 15:54
                            RUH666, слушай, ты же не думаешь что я тебе на форуме все нюансы программирования преподам за 5 минут? Этому и в вузах толком не учат, все на практике познается. Ошибки и дырки есть в компиляторах и библиотеках, которым десятки лет.
                            Просто поверь на слово — добавление отрицательных цен потребует много работы, даже если все исправление будет в одной строчке.
                              • deke
                                29 апреля 2020, 16:08
                                RUH666, я тебе уже приводил пример — сейчас минимальное значение = 0, а с отрицательными ценами максимальное значение может быть меньше 0.

                                В алгоритме чтобы избежать деления на ноль или проблем с округлением может быть проверка, все что меньше 0.0000000001 будет равно 0.0000000001. С положительными числами это работает, а с отрицательными -100 будет превращаться в 0.0000000001. Значит надо будет брать значение по модулю.

                                  • deke
                                    29 апреля 2020, 16:22
                                    RUH666, да, они равны, но при делении дадут либо -бесконечность, либо +бесконечность, что не одно и то же.
                                      • deke
                                        29 апреля 2020, 16:50
                                        RUH666, так что деление на 0 не вызывает ошибки, а знак сильно меняет результат. Бесконечно малое и бесконечно большое число — разница очевидна.

                                        Если тебе интересно, то дальше сам изучай тему.

                                        Лично у меня из-за знака последний раз были проблемы с atan2, но это не финансовый продукт, а цифровая обработка сигналов.
                                          • deke
                                            29 апреля 2020, 17:16
                                            RUH666, мы с тобой ходим по кругу — откуда ты узнаешь что ноль появился в расчетах? ты раньше складывал положительные числа и они всегда были больше 0, а потом сложил +1 и -1 и получил 0. В изначальной задаче такого не было. Надо добавить проверку на 0 в алгоритме.
                                  • deke
                                    29 апреля 2020, 16:28
                                    RUH666, да как ты не поймешь — чтобы что-то исправить, сперва это найдо найти. А где искать никто не знает. И что искать никто не знает. Может этот код писал программер, уволившийся год назад. Изначально не стояло такой задачи.
                              • deke
                                29 апреля 2020, 16:11
                                RUH666, и откуда это ясно? раскрой тайну и можно будет разгонять отдел QA
                                  • deke
                                    29 апреля 2020, 16:31
                                    RUH666, архитектура кода — это тупо движок, коробка, шасси, тормоза. Дальше по каждому модулю свой тим-лид. А он управляет кодерами, которые алгоритм реализуют. Все что не указано в ТЗ — пофиг.
                                      • deke
                                        29 апреля 2020, 16:52
                                        RUH666, чего непонятно? обычная иерархия на крупных проектах. еще про QA забыл — эти тестированием занимаются.
          • Max Skinner
            29 апреля 2020, 14:29
            RUH666, есть интересные статьи типа «ТОП 10 ошибок программистов», там ракета из-за одного минуса развернулась и полетела вниз.
  • КРЫС
    29 апреля 2020, 13:22
    правильно. нечего двигать. 
    Надо полностью закрывать зеркалки товарных фьючерсов
      • КРЫС
        29 апреля 2020, 13:25
        RUH666,  да биржа сама скоро их закроет — зачем ей потенциальный риск по судебным искам на суммы убытка по фуфловой экспирации?
    • GoodBargains
      29 апреля 2020, 13:34
      КРЫС, брент один оставить надо, как никак в РФ живем.а поставочный ВТИ реально закрыть надо, повысив ликвидность. Доработать отрицательные цены нужно. А смысл закрывать все? Тогда давайте биржи вообще закроем
      • КРЫС
        29 апреля 2020, 13:41
        GoodBargains, зачем биржи закрывать? Есть биржи, готовые нести инфраструктурные биржи. И надо брать пример с них. И если не можете нормально отторговать зеркалки на поставочные контракты — нах их…
        • GoodBargains
          29 апреля 2020, 13:44
          КРЫС, поставочные-конечно надо закрыть-это бред. Есть брент расчетный  и этого достаточно. 
          • Alexander
            29 апреля 2020, 17:01
            GoodBargains, на мосбирже нет поставочных фьючерсов по нефти.
      • КРЫС
        29 апреля 2020, 13:44
        GoodBargains, вы знаете, что на сайте биржи транслируются иногда 2 значения параметра биржевого инструмента? И здравый смысл корректности одного из них так у сотрудников не встречен.
        • GoodBargains
          29 апреля 2020, 13:46
          КРЫС, какие 2 параметра?)
          • КРЫС
            29 апреля 2020, 13:53
            GoodBargains, у облигации, оказывается, может быть две дюрации… -)
            И это не смешно, потому что управляющему за это пытаются выставить штраф на 750 тысяч ре -)
  • _sk_
    29 апреля 2020, 13:28
    Так они и к переносу экспирации не готовы. Квик сегодня транслирует для CLK0 дату экспирации 30.04.2020, но до погашения, якобы, осталось 20 дней. В одном месте поправили, а в другом — забыли. Ручное управление.
    Дата погашения и дней до погашения

      • _sk_
        29 апреля 2020, 13:30
        RUH666, у вас тоже так в терминале написано?
    • _sk_
      29 апреля 2020, 14:24
      _sk_, после клиринга исправили.
        • _sk_
          29 апреля 2020, 14:30
          RUH666, число дней до экспирации правильное поставили.
  • Константин Дубровин
    29 апреля 2020, 13:33
    Вопрос: какой ГО должно быть у контракта, цена которому 0.00?
    Второй вопрос: какой ГО должно быть у контракта ценой 10 и ценой -10 и какой больше?
      • Константин Дубровин
        29 апреля 2020, 13:38
        RUH666, Но раньше ГО считалось как  какой то процент от стоимости контракта
        стоимость контаркта поеределяется как цена * валютный курс
         если цена становится 0.00, то стоиомсть контаркта сводится к нулю
        дальше ГО считаемое от нуля равно нулю...
        т.е когда цена будут 0.00, ГО посчитается как ноль… и ты сможешь отрыть безлимитное число контарктов в любую сторону
        Нужно ли говорить что будет с размером депозита  когда цена с нуля изменится до 1....? 
    • _sk_
      29 апреля 2020, 13:34
      Konstantin, ГО зависит от волатильности. Его устанавливать можно в расчёте на 1 контракт. Другое дело, что привыкли в виде % от номинала указывать. Тут проблема.
      • Константин Дубровин
        29 апреля 2020, 13:39
        _sk_, хорошо.
        есть опционы… при отрицательном страйке ГО продавца или ГО покупателя будет выше? 
      • Константин Дубровин
        29 апреля 2020, 13:40
        _sk_, волатильность тоже не панацея… мы же знаем что пред взлётом волатильности всегда идет затухание… и по сути если считать ГО от волатильности то всегда будет недостаток ГО при сильных движениях и преизбыток при затухании
          • Константин Дубровин
            29 апреля 2020, 14:12
            RUH666, да но при движении цены более 100%  ГО становится выше стоиомтси базового актива
            а разница ( в процентах) между ценой 0 и -37… знаешь сколько процентов?
            БЕСКОНЕЧНОСТЬ ( на ноль делить нельзя)
            точно так же как между 0 и +37
            даже если прикинуть разницу между 0,01 и -37= 369900% вот на сколько процентов упала цена от -0,01 до -37
            по идее при таком разгуле цены нгикакого дпозита не хватит даже если без плеча купить — это всеравно уводит депозит в минус
            убыток 100% обнуляет а тут минус 369.9 тысяч процентов 
        • flextrader
          29 апреля 2020, 17:52
          Konstantin, да оно всю жизнь так считается (от «сигмы»), разница тут в том что за денежный эквивалент (Вашего «элементарного» портфеля) берется последняя РЦ контракта (теперь в 6-ых релизах иногда это не только РЦ, а исчо: «спот цена БА», или цена более ликвидного контракта на тот же БА,  скорректированная на соотв. срок).

          ну будет сейчас другая стоим-я (денежная) характеристика-эверидж N расчетных цен, % цены контракта с др. ключевым сроком, и т.п.
      • flextrader
        29 апреля 2020, 17:45
        _sk_, сорри, что грубовато м б: а вола-то типа является value-term, денежную размерность имеет, не?)))))
  • GoodBargains
    29 апреля 2020, 13:37
     кроме нефти брент сейчас и торговать то нечего. Этот дибильный долл рубль не буду никогда. Ртс не торт стал
      • GoodBargains
        29 апреля 2020, 13:47
        RUH666, я тут хочу. там непонятно мне ничего. я ж ее торгую программно. Но если прикроют тут, допишу и уйду к буржуям, хотя комис там наверняка выше
  • Harry_Potter
    29 апреля 2020, 13:40
    неготовность к отрицательным ценам мамбе проплатили чтоб кидок удался, также как и отмену торгов 21го апреля
      • Harry_Potter
        29 апреля 2020, 13:51
        RUH666, на СМЕ -37 нарисовали один раз, в день когда экспирация этого фьюча на ммвб, ммвб о возможности отрицательных цен не предупредила, к торгам по ним не подготовилась, 20-го вечером на 8.8 закрыли и не открылись, 21го мамба изменила регламент торгов по фьючу чтобы не открываться и срочно всех по -37 исполнила. Вы уверены что это случайная и ничем не обусловленная цепочка событий в которой не было умысла?
        • _sk_
          29 апреля 2020, 13:52
          Harry_Potter, через некоторое время вплывут бенефициары этого на CME.
            • _sk_
              29 апреля 2020, 13:55
              RUH666, если это публичные организации, увидим в их финансовых отчётах. А вот если не всплывут, то будут вопросы. Не только же в России были сильно пострадавшие. Теперь весь мир будет под CME копать, искать.
          • Harry_Potter
            29 апреля 2020, 13:58
            _sk_, в сша расследование началось, пишут что займёт пару лет, но потом те кто это затеял получат сразу лет по 20-30 так что есть смысл подождать
          • Harry_Potter
            29 апреля 2020, 13:56
            RUH666, на СМЕ они шли в положительной зоне пока у нас были отключены, если бы они проводились то и на мамбе шли в положительной зоне, люди могли бы хотя бы по 2 доллара продать
              • Harry_Potter
                29 апреля 2020, 14:00
                RUH666, это не так
            • flextrader
              29 апреля 2020, 18:11
              Harry_Potter, ответь: кто бы «людям» стал давать ликвидность на принтах $2, если таких гипотетических спонсоров все равно проэкспирируют по — $37.63.  все было решено накануне, пока в стакане оставался 1 последний ММ. по-развернутей сценарий тут
  • Григорий
    29 апреля 2020, 13:44
    Там много вопросов: расчет ГО, расчет индексов, клиринг, готовность терминалов. дело не только в МБ, но и в брокерах.
      • Константин Дубровин
        29 апреля 2020, 14:00
        RUH666, а от чего считают ГО? если на от цены...
         зайди н асайт биржи по риск параметрам и там четко написано ГО счиатется от стоимости контракта
        https://www.moex.com/ru/derivatives/parameters.aspx?tid=1576
        читай мелкий шрифт 1 и2 Поэтому в процентном значении размер минимального базового ГО, рассчитанный в российских рублях, выше указанного процента.
          • Константин Дубровин
            29 апреля 2020, 14:15
            RUH666, меньше в процентах 12-15
              • Константин Дубровин
                29 апреля 2020, 14:16
                RUH666, от цены был 12-15 процентов… я ж говорю от цены в процентах 
                  • Константин Дубровин
                    29 апреля 2020, 14:20
                    RUH666, я еще раз повторю при текущих условиях ГО контракта который имеет нулевую цену — будет считаться как ноль и ты сможешь открыть бесконечное число контрактов в любую сторону
                     при  этом изменение цены на 1$ мгновенно обнуляет твой депозит и обнуляет твоего брокера и соответственно всех клиентов этого брокера… и брокера контрагетов
                    Это риски которые невозможно просчитать
              • Константин Дубровин
                29 апреля 2020, 14:18
                RUH666, да, не от цены а от стоимости контаркта 
                цена — в долларах
                а стоимость в рублях
        • flextrader
          29 апреля 2020, 18:13
          Konstantin, от спота  БА теперь считают ГО, если он есть на moex
          • Константин Дубровин
            29 апреля 2020, 18:17
            flextrader, не знал. точно?
            • flextrader
              29 апреля 2020, 18:26
              Konstantin, когда в 6й спектре стали вводить кросс-маржирование между рынками (породившее потом клиентские ЕБС и прочее) на тикерах, где возможно, перестали использовать РЦ (для этой цели), через спот-цену  стали считать теор. справедливую стоимость фьюча на этот момент и далее уже лимиты/ГО от этой величины
      • Григорий
        29 апреля 2020, 14:04
        RUH666, правильно сказали выше мы даже не представляем как может быть.
        Но в целом инфраструктура должна быть у всех броков работать, а это время.
        Что касается ГО, то она в неявном виде всё-равно от цены считается, но другое дело, когда контракт стоит 0,01 и запаса вниз нет, а другое, что там внизу бесконечность. В общем, для риск-менеджмента не такой уж простой вопрос.
  • Кухонный трейдер
    29 апреля 2020, 14:21
    А давайте еще предложим считать цену нефти комплексной переменной. И будем вычислять дисперсию от -37 через квадратный корень...
    ИМХО, слишком много придется переделывать. И, самое главное, придется допиливать программы, которые нас обувают, особенно. если разработчик на больничной койке.
  • Константин Дубровин
    29 апреля 2020, 14:23
     Да и факт.
     допилить кучу когда когда все по домам сидят....
     не так просто
    хорошо хоть баиржа работает и на том спасибо 
    • Value
      29 апреля 2020, 15:03
      Konstantin, проблема не в этом. Программисту все равно где работать.
  • Константин Дубровин
    29 апреля 2020, 14:31
    Открою вам секрет, только вы никому не говорите
    В России курс долалра 1к100 тоже за пределами допустимого
    потому что по методике ЦБ когда курс за еденицу валюты более 100 рубей, то транслируется обратный курс за 100 рублейсколько едениц валюты
    Пример 1:
     доллар стоит 99 рублей — курс 99
    один доллар стоит 99 рублей
    Пример 2
    доллар стоит 101 рубля — курс  будет 0,99
    //
    за 100 рублей можно купить 0,99 доллара

    Об это пока не говорят, но у ЦБ есть методичка
  • Value
    29 апреля 2020, 15:09
    Это кажется, что просто — всего лишь одна переменная. Но это одна из ключевых переменных. В том месте весь код связан между собой. Проблема не в том, чтобы поменять, проблема в том, что нужно 2 месяца думать как это сделать, чтобы ничего не испортить. А поменять не долго. Вот с Боингом 737-MAX поторопились — одна ошибка — и вся конструкция рушится, самолет падает.
      • Value
        29 апреля 2020, 15:22
        RUH666, может быть так всё просто в функциональной парадигме программирования. Но промышленный стандарт — объектно ориентированное. Это значит, что есть 100500 объектов, которые хранят свое состояние. И все эти объекты меняют состояние друг друга как попало. Нужно убедится, что изменение состояния одного объекта не приведет к критической ошибке в других.
  • Мясник
    29 апреля 2020, 15:28
    На календарных спредах отрицательная цена же норма, вообще не вижу проблемы
  • MadQuant
    29 апреля 2020, 16:14
    В чём сложность внести в софт такую возможность? У вас же больше ничего не меняется, вариационка считается так же, из одной цены вычитают другую и умножают на количество контрактов. Вам же не корни из цены извлекать, мнимые числа не нужно в софт вводить.

    Сразу видно человека, который близко не представляет биржевой софт. А прикол в том, что цены в системе не хранятся так, как видите их вы, для максимальной точности расчетов они хранятся в минимальных шагах цены. Например, если для акции это 1 копейка — то в системе цена 1234.2, например, будет храниться как 123420. При этой если софт не написан под отрицательные цены — храниться (чтобы больше влезло) это будет в целом беззнаковом типе. Соответственно, чтобы можно было уходить в «минус» — надо во всем софте беззнаковый тип заменять на знаковый (что вообще жесть), да еще и в базах формат хранения менять. Это, в общем, архи-сложно, на самом деле.
      • MadQuant
        29 апреля 2020, 16:22
        RUH666, разработкой софта занимались? Везде
          • MadQuant
            29 апреля 2020, 16:33
            RUH666, вам нужно создавать новую базу (я слышал, у них это все крутится под SQL) с другими полями, все туда переносить, перелопачивать весь софт для работы с новой базой и знаковым типом вместо беззнакового. А это полный рефакторинг всего кода, регрессионное тестирование. Вообще если изначально система пилилась без предположения о возможности отрицательных цен — то это горе.
      • MadQuant
        29 апреля 2020, 16:23
        RUH666, ну надо смотреть. Календарный спрэд в системе может храниться (и наверняка хранится) как просто пара ссылок на инструменты, а цены и результаты по нему уже рассчитываются исходя из цен на исходные инструменты.
          • MadQuant
            29 апреля 2020, 16:33
            RUH666, я детали не знаю. Для этих контрактов может своя база, свой отдельный софт, например.
              • MadQuant
                29 апреля 2020, 16:59
                RUH666, не знаю. Надо смотреть архитектуру конкретной системы. Вы спросили в чем сложности — я вам ответил, исходя из своего понимания вопроса (довелось за свою карьеру поработать с парой человек, которые движок МосБиржи пилили).
                  • MadQuant
                    29 апреля 2020, 17:02
                    RUH666, ну да, но на это нужно время и человеческие ресурсы. Креатив был нужен при разработке архитектуры системы, чтобы учесть возможность, что когда-нибудь в будущем могут понадобиться отрицательные цены.
                      • MadQuant
                        29 апреля 2020, 17:08
                        RUH666, как сказали — два месяца. Имхо, за два не управятся, если проблема в том, о чем я описал.

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

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