StockChart.ru
StockChart.ru личный блог
17 ноября 2012, 10:57

Вся правда о роботах

Что являет собой обычный трейдинг? Формально его можно преставить как нахождение закономерности в графике цены, используя индукцию.
 Т.е. предполагая, что поведение фукции будет повторятся.
 
  Простейшим примером является функция «купил и держу». Предполагается, что функция цены индекса восходящая. 
 Т.е. делается предположение что f'(X) > 0 (производная больше нуля)

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

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

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

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

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

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

  Поэтому я с улыбкой наблюдаю все это повальное увлечение роботами. Спекулянты (уже часто взрослые дядьки) сметают с полок «основы программирования на бейсике» в надежде обыграть рынок. Я чуть со стула не упал, когда прочитал недавнюю тему «а нужно ли рисовать блок-схему при создании робота». Если вы рисуете блок схемы — вам в программировании делать не-че-го. (С). 
   Я не очень представляю, что творится в голове у человека, который надеется написать универсальный алгоритм для любого таймфрейма. Наверное, это тоже самое, как если бы современный человек попытался вырастить гомунклуса в трехлитровой банке на кухне, используя стиральный порошок, уксус, растворитель и аспирин. 
   Тем не менее такие уникумы существуют. Даже на смартлабе помню один пытался продать подобную программу. И ведь покупают же!

 * * *

 Предвижу комментарии дескать как же так, люди стабильно зарабатывают, в ЛЧИ в топе роботы и пр. 

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

****

   Написал тезисно:

smart-lab.ru/blog/88093.php







99 Комментариев
  • VDev
    17 ноября 2012, 11:11
    Бред какой-то, срочно похмелиться!
  • Сергей Иваненко
    17 ноября 2012, 11:12
    «универсальный алгоритм для любого таймфрейма»
    ТФ не существует это все происки жидомасонов.
  • Максим
    17 ноября 2012, 11:13
    Согласен, тема роботов стала гламурной. Одно дело «заниматься» роботами, другое — зарабатывать на жизнь.
  • Полковник Айвс
    17 ноября 2012, 11:30
    «Мы прекрасно знаем, что любые закономерности работают не долго» — и откуда интересно «мы» это знаем? Тяжелые хвосты и эксцесс выше среднего — неизменные свойства любого рынка, по отношению к случайным блужданиям. Соответственно их эксплуатация возможна вечно. Основная проблема в том, что люди стремятся выбить из роботов нереальные параметры риск/доходность. В общем случае — среднегодовая доходность будет равна максимальной просадке для одиночного робота, которого не надо никогда переделывать, а нужно время от времени проводить оптимизацию. Ситуацию можно улучшить торгуя портфель систем по портфелю инструментов по набору таймфреймов за счет раскорреляции эквити разных роботов и инструментов.
    • А. Г.
      17 ноября 2012, 13:33
      Полковник Айвс,

      +5
    • Роботорговец
      17 ноября 2012, 14:26
      Полковник Айвс, вы очень адекватный человек, хочу заметить, таких в мире мало.

      PS заметка сделана на большой выборке, более 3х сигм.
      • Полковник Айвс
        17 ноября 2012, 21:59
        Роботорговец, Спасибо, давно просто варюсь в этой каше и склонен к избыточному самокопанию.
  • Yo-sen
    17 ноября 2012, 11:31
    а может все гораздо проще и грааль скрывается в простейшей формуле, просто ищут все не по тем данным которые всем навязали (цена тут не причем например)
  • Кан Делябр
    17 ноября 2012, 11:31
    «любые закономерности на рынке работают относительно не долго. А если робот — это всего лишь алгебраическая функция преобразования одного графика в другой — то она долго работать не будет!!» — две ошибки в одной фразе, типичные для профессионального программера. Если коротко, то робот — это преобразование графиков всех рынков в график цены выбранного инструмента. Закономерности устойчивые есть, просто автору нужно говорить, что я их не знаю и не понимаю как их найти.
  • nameless
    17 ноября 2012, 11:37
    машина называется «машина Тьюринга».
  • garry
    17 ноября 2012, 11:51
    Побольше б таких постов!
  • Gogenn
    17 ноября 2012, 12:09
    Вас интересно читать.
  • l-way
    17 ноября 2012, 12:41
    «Спекулянты (уже часто взрослые дядьки) сметают с полок «основы программирования на бейсике» в надежде обыграть рынок.»
    это да — смешно. как и повальное увлечения всякими курсами по программированию )) и главное сразу сколько нашлось тех, кто на этом решил заработать.
  • Антон Кротов
    17 ноября 2012, 12:58
    >> Я чуть со стула не упал, когда прочитал недавнюю тему «а нужно ли рисовать блок-схему при создании робота». Если вы рисуете блок схемы — вам в программировании делать не-че-го. (С).

    В программировании само кодирование — 5-10% всей работы. Остальное — проектирование, отладка, протоколирование, тестирование, верификация, валидация, документирование и сопровождение. Поэтому составление алгоритма на этапе проектирования — дело обязательное (не важно, в виде блок-схемы, текстового пошагового описания, эпюр сигналов или еще как-то), которое нужно не для того, чтобы 5% времени, потраченное на кодирование превратились в 4.5%, а для того, чтобы 80% уходящие на отладку, тестирование, документирование и пр. не превратились в 360%.

    Существует круг программистов-кодеров, которые по сути никогда программистами не были, а 10-20-30 (или сколько там еще) лет занимались только кодированием, т. е. выполняли только 1/10 часть работы программиста. Отладка и тестирование (а уж тем более сопровождение и документирование) их никогда не заботила, потому что они особо не заинтересованы в нормальной работоспособности программы. Пашет — и ладно. З/п таких программистов несоизмеримо мала с з/п программиста-архитектора, а шансы на карьерный рост вообще отсутствуют. Но, тем не менее, именно они являются основными участниками всех прогро-срачей, навроде Си vs Pascal, Windows vs Linux, RTOS vs ООП, роботы vs люди.

    Программирование в нашей стране — отдельная тема, поскольку на программиста сваливаются не только перечисленные задачи (к слову, в цивилизованных странах алгоритмом, кодированием, тестированием и пр. занимаются разные люди, но между ними есть регламент сдачи/приемки), но зачастую еще и постановка начальной задачи, согласование ТЗ, а в особо запущенных случаях еще маркетинг и даже распространение. Но это уже нац. особенности развития ИТ.

    Собственно, мой стаж программиста равен Вашему, но к моменту ухода из этой деятельности я получал з/п в разы больше обычных программистов, занимаясь исправлением их ошибок и косяков, львиная доля которых — следствие недоработки на этапе проектирования.
    • karapuz
      17 ноября 2012, 13:01
      Антон Кротов, а есть еще такая точка зрения что «проектирование алгоритма» должно выражацца в матмодели ))
      реализация которой в коде вопрос сугубо техниццкий)
      • Антон Кротов
        17 ноября 2012, 13:10
        karapuz, мат. меделирование, являясь одним из этапов проектирования (хоть и не всегда обязательным, но в конкретном случае в отношении роботов — неотъемлимым), делается после составления алгоритма. Фактически оно призвано перевести алгоритм из проблемно-ориентированных терминов, в математические и числовые.

        Реализация мат.модели в коде — вопрос технический. Реализация кода без мат.модели — вопрос творческий, ведущий, как правило, к дальнейшему «творчеству» в виде усложненной отладки, внесения изменений в код на лету, а по прошествии определенного времени к постановке, типа «проще с самого начала все переписать, чем разбираться в уже написанном». Как-то так.
        • karapuz
          17 ноября 2012, 13:11
          Антон Кротов,
          «мат. меделирование, являясь одним из этапов проектирования (хоть и не всегда обязательным, но в конкретном случае в отношении роботов — неотъемлимым), делается после составления алгоритма» — разгавор закончин)))
          первый курс..)
      • karapuz
        17 ноября 2012, 13:10
        karapuz, потому как сколько стрелочек и квадратиков не нарисуй — доказательством правильности они все равно не являются — тада вопрос — нах ваще они нужны? )

        на что-то сложнее простого цикла в таком виде все равно лучше смотреть — ничерта ж непонятно — проще код прочесть — компактней и ясней)
        • karapuz
          17 ноября 2012, 13:12
          karapuz, лучше = лучше НЕ…
        • Антон Кротов
          17 ноября 2012, 13:23
          karapuz, приходилось иметь дело с доказательным программированием?

          Я не буду с Вами спорить, я на работе уже набодался с программистами. Но там мне деньги платили за то, чтобы я им объяснял, что они неправы, что такое алгоритм и почему с ним лучше, чем без него.
      • Антон Кротов
        17 ноября 2012, 13:17
        RuTicker.com, Вам.

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

        Важно то, чтобы квадратик «сортировка» в алгоритме стоял на своем месте. Чтобы не возникало коллизий обработки данных.
          • Антон Кротов
            17 ноября 2012, 13:48
            RuTicker.com, а я Вас нигде и не убеждал в своем опыте.

            Насчет для начальства: алгоритм пишется для себя, в первую очередь. Во вторую, когда его форма предусмотренна регламентом фирмы, — для разработчика, который займет место ушедшего на пенсию/покой/в монастырь предшественника.

            >> Да и для программиста куда привычней и проще читать код непосредственно чем разбирать блок-схему

            Это для кодера, а не для программиста. Ладно, не буду спорить, я знаю, что это бесполезно.
              • Тимофей Мартынов
                17 ноября 2012, 14:19
                RuTicker.com, а чо ты такой нервный и негативный?
                  • Антон Кротов
                    17 ноября 2012, 14:32
                    RuTicker.com, перестаньте. Никогда никого не троллил, и Вас не собирался. Умолкаю.

                    Плюсанул бы в профиль, но уже плюсил, больше не дают.
            • karapuz
              17 ноября 2012, 13:59
              Антон Кротов, вы видимо в жизни не видели программы сложней тиминого робота ))
              представляете на что похожа блок-схема более менее сложной системы? ))) да там сам черт не разберется — нахуй не нужны они и ни один практический программер никогда эту хуйню ни для чего не делает — МАКСИМУМ — лишь на самом высоком уровне абстракции — на этапе размышлений (а не _проектирования_. потому что _проектирование_ — суть построение матмодели через которую (и только так) возможно доказать правильность алгоритма и что еще важнее — оценить его _сложность_).
                • l-way
                  17 ноября 2012, 19:27
                  RuTicker.com, у нас все проекты начинаются с фазы проектирование технического решения. а уж в каком оно виде будет — блок схемы или просто текстовое описание алгоритмов — это уже решается в каждом случае отдельно. но суть в том, что без проектирование не начинается разработка ни на одном крупном проекте
                    • l-way
                      17 ноября 2012, 20:42
                      RuTicker.com, если алгоритм сложные и масштабный — он описывается. и в любом случае все(!) алгоритмы описываются после разработки в спецификации на разработку. промышленный стандарт как бы.
                        • l-way
                          18 ноября 2012, 04:12
                          RuTicker.com, алгоритмы должны рисоваться так, как это удобно. В том числе и блок схемами. Например, если алгоритм подразумевает смену статуса или состояния какого то объекта — то блок-схема лучшая модель.
                        • l-way
                          18 ноября 2012, 04:15
                          RuTicker.com, когда ничего не документировано — это просто способ переложить большие трудозатраты и будущие проблемы на потом. Особенно когда команда большая и люди в ней периодически меняются. Либо когда в одну блльшую систему вносят изменения несколько проектных команд. Концов потом не сыщите без бамажек…
              • Антон Кротов
                17 ноября 2012, 14:06
                karapuz, я же писал про детализацию. Алгоритм в квадратиках и стрелочках всегда пишется на высоком уровне абстракции. Это только студенты в институте там пишут i=i+i и a=b*c

                Так занимались доказательным программированием или нет? Надеюсь, знаете, что записи:
                A = B + C — D
                и
                A = B — D + C
                нетождественны?
                  • karapuz
                    17 ноября 2012, 14:14
                    RuTicker.com, но вот если у вас что-нибудь из разряда mission critical — типа навороченного HFT — то без матмодели и доказательства правильности вам просто не обойтись — и никакое тестирование на задачах такого класса вам не поможет — давайте протестируйте матобеспечение ядерного реактора — угу.
                  • Антон Кротов
                    17 ноября 2012, 14:17
                    RuTicker.com, да, дороже. Реально намного. Поэтому и степень эффективности сперва оценивается.

                    Да я, собственно, прицепился к фразе karapuz'а «доказательство правильности».
    • barabas
      17 ноября 2012, 13:22
      Антон Кротов,
      «но к моменту ухода из этой деятельности я получал з/п в разы больше обычных программистов, занимаясь исправлением их ошибок и косяков»

      если не секрет, как вам удалось монетизировать этот скилл?))) я на работе занимался тем же самым, но за это вместо увеличения з/п получал только новые требования от начальства — кто везет, на том и везут.
      • Антон Кротов
        17 ноября 2012, 13:41
        barabas, в личку ответил
        • l-way
          17 ноября 2012, 19:19
          Антон Кротов, и мне если не сложно :) а то практика такая, что бьешься за правильность — а выхлоп — по сути такой же как и у тех, кому в общем то на все класть
    • ves2010
      17 ноября 2012, 13:53
      Антон Кротов, +100 сам был ведущим инженером
    • Тимофей Мартынов
      17 ноября 2012, 14:15
      Антон Кротов, спасибо, утешили.
      (Автор вопроса о составлении блок-схем и алгоритма:)
  • barabas
    17 ноября 2012, 13:15
    >Я программирую практически с детства… т.е. уже скоро как 20 лет.
    >А если робот — это всего лишь алгебраическая функция преобразования одного графика в другой — то она долго работать не будет!!!

    Не ожидал от вас таких противоречащих утверждений. «Алгебраические функции» уже лет 50 как научились адаптироваться и самообучаться.
  • Тимофей Мартынов
    17 ноября 2012, 13:25
    добавил тег "торговые роботы", вывел на главную.
  • Тимофей Мартынов
    17 ноября 2012, 13:26
    машина тьюринГа наверное:)
  • Роботорговец
    17 ноября 2012, 13:59
    может это не автор такое написал, а его враги вскрыли пароли…
  • surinam
    17 ноября 2012, 14:52
    Сложные проекты требуют сложной документации, но это конечно не квадратики со стрелочками. Если программист не способен написать документацию, я у него ничего не закажу.
  • FinSerfing
    17 ноября 2012, 15:40
    Значит давайте по пунктам
    1. Роботы не избавляют от эмоциональной составляющей.
    Это справедливо лишь в случаях, когда нет чёткого алгоритма торговли, а есть лишь эмоции. Правда в этом случае и создать робота невозможно.
    2. Предчувствовать движение цены.
    Это лучший способ слить счёт. Нет алгоритма поведения в тех или иных случаях, а значит на рынке делать нечего.
    3. Универсальных алгоритмов нет.
    Согласен, однако, есть высокоэффективные алгоритмы.

    Теперь о пропущенных случаях использования роботов:
    1. Когда руками делать сделки и контролировать позу не представляется возможным. Например скальпинг и арбитраж.
    2. Для диверсификации портфеля или хэджироания. Если нужно разложить крупный портфель по заранее заданным инструментам и динамически балансировать его по специальным правилам. В опционной тематике для дельта хеджирования.
    3. Когда понимаешь, что ты человек и должен оставаться таковым.
    Т.е. использовать время для семьи, здоровья и создания новых алгоритмов.

    P/S/ Пишу роботов на заказ более 3х лет, и всё вышесказанное — результат личного опыта. Универсальных автономных алгоритмов не встречал, но знаком с рядом систем, которые очень неплохо зарабатывают и требуют минимального человеческого вмешательства.
  • VDev
    17 ноября 2012, 17:09
    «Роботы не избавляют от эмоциональной составляющей» — это почему? Например начался медвежий тренд, я поставил робота торговать по тренду и пошел гулять-отдыхать, вместо того, чтобы дергаться за монитором.
  • TT
    17 ноября 2012, 18:29
    Я думаю, что обычный трейдинг можно представить как выявление расхождения между графиком и реальным положением вещей. Арбитраж между тем, что есть и тем, что должно быть (с точки зрения рынка, а не вашей, естественно). Т.е. предполагая, что рынок инертен и правильное состояние принимает с некоторой задержкой. Из этого следует, что автоматизация торговли лишь на основе графика невозможна. Вобщем, мне кажется, к Вашему выводу можно придти гораздо короче. :)
    • l-way
      17 ноября 2012, 19:28
      TTrader, ларри вильямса писал про это же — «нельзя предсказать A, использую только А»
      • TT
        17 ноября 2012, 20:00
        l-way, По всей видимости толковый товарищ. Скачал его книгу. Спасибо за наводку.
  • mr.profit
    18 ноября 2012, 05:12
    Если не умеешь торговать руками, то робота точно не напишешь :))) А если умешь торговать руками, то нах робот? :)))

    Как можно запрограммировать дивергенцию MACD H4 в MT4? Есть у кого нить эта реализация?
  • VassilSanych
    18 ноября 2012, 18:42
    > «нельзя предсказать A, использую только А»
    Есть такое слово — ЭКСТРАПОЛЯЦИЯ. Зачем-то же его придумали ;)
    • TT
      19 ноября 2012, 16:15
      VassilSanych, Его придумали абстрактные математики, а не реальные трейдеры. :) Как можно экстраполировать цену, если на ее изменение влияют никогда не повторяющиеся события?
      • VassilSanych
        19 ноября 2012, 18:05
        TTrader, Статистически. Все физические процессы имеют вероятностный характер. Это не мешает описывать их гладкими кривыми.
        • TT
          19 ноября 2012, 18:06
          VassilSanych, Цена- не физический процесс.
        • TT
          19 ноября 2012, 18:16
          VassilSanych, Да, и какая может быть статистика у события, которе двигает цену сегодня и до этого никогда не происходило? 11 сентября, например, QE1, Твист, дефолт Греции и т.д. Что можно проэкстраполировать по одной точке?
          • VassilSanych
            19 ноября 2012, 18:26
            TTrader, Есть мнение, что «всё в цене»:
            — у кого-то есть инсайд по этому событию
            — кто-то предполагает это событие
            — кто-то моментально реагирует на это событие
            — остальные реагируют с некоторым запаздыванием.
            Во всех пунктах в наличии как институционалы, так и мелкие трейдеры. Одни набирают позицию об других.
            Всё это рождает определённые формации на графике, которые могут подчиняться некоторым закономерностям.
            • TT
              19 ноября 2012, 20:00
              VassilSanych, Я разделяю убеждение о том, что вся доступная информация заложена в цене. Но из этого не следует, что мы можем знать вероятность того, что та или иная информация будет воздействовать на цену в будущем. Мы можем собрать статистику того, как та или иная информация оказывала влияние на цену, и на основании этой статистики вывести вероятность повторения изменения цены при поступлении аналогичной информации. Сама же цена, взятая отдельно, никакой информации о вероятности будущих событий не несет.
              • VassilSanych
                19 ноября 2012, 20:23
                TTrader, Это уже софистика.
                Отдельно взятая цена не предсказывает будущую цену. Прошлая динамика изменения цены может с некоторой вероятностью предсказать будущую динамику изменения цены.
                • TT
                  19 ноября 2012, 20:57
                  VassilSanych, Это не софистика. Это важно. Естественно под ценой я имею ввиду исключительно прошлую динамику, а не отдельно взятую цену. По поводу формаций. Да, я признаю, что в определенных случаях цена оказывает влияние на саму себя. Типичным примером являются фигуры, уровни и т.д. Динамика цены, неоднократно подтверждающая какой-то определенный уровень, позволяет предсказать нам усиление движения в случае его преодоления. Но сам факт преодоления этого уровня зависит исключительно от события, несвязанного с ценой, что сводит на нет всю пользу от ее анализа. Т.е. вы видите уровень, но является ли пробой истинным или ложным вы не можете вывести из динамики цены. Таким образом, вычислить достоверную вероятность того или иного движения мы можем получить лишь комплексно проанализировав динамику цены и характер водействующего события.
                  • VassilSanych
                    20 ноября 2012, 05:22
                    TTrader, Кескюсе «достоверная вероятность»? 100%? Зачем её вычислять?
                    • TT
                      20 ноября 2012, 08:51
                      VassilSanych, Я имею ввиду, что мы действительно получим вероятность движения цены в ту или иную сторону. В отличие от выводов на основании одной лишь динамики цены, когда мы всего лишь получаем заблуждение о том, что цена будет повторять прошлую динамику с той или иной вероятностью. Это все равно что прогнозировать вероятность подбрасывания монеты по истории этого подбрасывания. Типичное заблуждение.
      • VassilSanych
        19 ноября 2012, 18:09
        Я привёл аналогию. Если бы цена была физическим процессом, последнее предложение не понадобилось бы.
        • TT
          19 ноября 2012, 18:23
          VassilSanych, Я думаю, никакой аналогии тут не может быть. Вероятность того или иного события очень часто не зависит от цены, т.е. находится за пределами этой цены.
          • VassilSanych
            19 ноября 2012, 18:38
            TTrader, Вероятность не материальна. Она не может нигде «находиться». Физические процессы по природе своей так же случайны. Только у них обычно больше «ликвидность» :)
            • TT
              19 ноября 2012, 19:40
              VassilSanych, Очевидно я имею ввиду, что цена не содержит информации о вероятности событий, влияющих на цену.

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

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