П М
П М личный блог
01 сентября 2019, 06:29

Песочница для роботов

Многие слышали про шахматную программу AlphaZero, которая научилась играть в шахматы, зная правила и играя сама с собой миллионы раз. Идея такой песочницы для роботов не новая. В простейшем виде это реализуется фитнес функцией, когда каждый робот получает оценку по какому-то критерию, например по профиту за период. Потом победители идут на второй круг, а побежденные выбывают. Для оценки по фитнес функции роботов не надо гонять против друг друга и сделать её не сложно. А вот чтобы стравливать роботов и выбирать сильнейших, тут надо придумывать песочницу.
С программисткой точки зрения задача интересная, но непонятная. Надо придумать как двигать цену, так чтобы она реагировала на роботов и чтобы результат эволюцией роботов в такой среде был бы полезен для работы в реальном рынке. Да, можно гонять роботов на истории, это готовая песочница. Максимально похожая на рынок. Но она никак не учитывает воздействия самого робота на этот рынок. 
Гоняя роботов на истории, мы по сути выращиваем  огромных травоядных динозавров. Им плохо живётся в реальной жизни, то холод, то засуха, то Трамп не в тему твитнет. Гоняя роботов против друг друга в динамической песочнице с обратной связью, можно вырастить хищников, а то и приматов, идея манит.
Какие пути я вижу? Начать со случайного блуждания, меняя вероятности выпадения событий в зависимости от числа поз в рынке. Результаты эволюцией роботов тестировать опять же на истории.
Может у кого есть статьи, книги, свои мысли на эту тему? Задача с практической точки зрения возможно и не самая полезная, интересная скорее с программисткой точки зрения — создание динамического мирка и приближение его к реальному.
74 Комментария
  • Igr
    01 сентября 2019, 07:49

    «воздействия самого робота на этот рынок» 

    если среднесрок и сумма не сотни лямов то думаю воздействием можно пренебречь  

  • iddqd3n
    01 сентября 2019, 08:10
    Не зная точных алгоритмов биржи и маркет-мейкеров по установлению цены, проще этим пренебречь.
  • Захаров
    01 сентября 2019, 08:26
    В части Динозавров в корне не согласен, тк чем на больше промежутке исторических данных робот показывает стабильный результат, тем спокойней он будет жить и в реале (конечно все зависит от самого алгоритм, все что написал я, косается исключительно среднесрочной торговли)

  • Олег Ложкин
    01 сентября 2019, 08:39
    научи робота зарабатывать и уЗбогойся, у тех кого надо такие задачки давно уже решены на уровне который для обыкновенного участника Сматлабика не досягаем.
  • Пафос Респектыч
    01 сентября 2019, 09:44
    Этот подход для обучения/отбора рыночных роботов не работает. Данных мало.

    Для того, чтобы сделать крутую генерилку данных, нужна модель рынка, а чтобы её построить, просто мало данных. Даже если взять минутки за 10 лет, это примерно как оценивать параметры популяции по выборке размера 1 процент от неё ) То есть остальные 99% ты так не нагенеришь, получится что-то совершенно непохожее, со всеми вытекающими.

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

    Тут же уже на этапе генерации данных колоссальные проблемы.
      • Пафос Респектыч
        01 сентября 2019, 11:32
        ПBМ, в шахматах запись партии проста и компактна, и кроме неё гарантированно ничего нет. На рынке — график это только график, к нему ещё в каждый момент времени прилагается весь мир вокруг. То есть можно сказать, что график — это запись реакций всей публики которая торгует этот инструмент на все события, которые с ней происходят, то есть «неизвестных неизвестных» просто масса разных
  • Сергей Ю.
    01 сентября 2019, 10:31
    В игре где надо замки захватывать и строить… роботы друг против друга играли… Закончилось тем, что они просто поделили территорию и перестали нападать друг на друга..
    Тут тоже в оконцовке самообучаемые роботы начнут зеркалить алгоритмы друг друга и каждый останется при своих… эффективный рынок…
    Роботу жрать не надо, он профит может вечно ждать..
    -----
    На рынке терпеливый и расчетливый забирает деньги у азартных и эмоциональных, а таких большинство… Толпа гонит цену: то слишком высоко, то слишком низко..
    Вот за счет перекосов и будет заработок…
      • Сергей Ю.
        01 сентября 2019, 17:00
        ПBМ, будет затухание и снова система быстро придет в равновесное состояние…
        Да и откуда берутся гепы и повышенная вола? Это ж чисто психологическая реакция толпы на новость, отчет, или азарт…
  • Логарифм Интегралыч
    01 сентября 2019, 11:03
    когда много систем
    возникает лотерея:
    угадай систему
  • Иван Егоров
    01 сентября 2019, 11:12
    Вам надо написать биржу, а Ваши роботы там будут просто игроками и будет один супербот, который будет а-ля маркет-мейкер, который поддерживает ликвидность
  • sortarray sortarray
    01 сентября 2019, 11:45
    как я слышал, эти шахматные проги работают засчет памяти, у них алгоритмы отличаются от мышления. Основа человеческого мышления в шахматах совершенно иная, человек не может видеть все варианты развития игры, он вместо этого пытается обобщать и искать инварианты, а так же использует тактиические фишки, как например, видя атаку на слона, он вместо защиты нападает на ферзя используя общий принцип атакующей защиты

    А это в сущности то же самое что делает боксер или мечник
    Шахматы не случайно в категории спорта. Спорт это искусство воина изначально
    Это ныне он деградировал до британского спорта.
  • SergeyJu
    01 сентября 2019, 11:54
    Пытались моделировать. См. minority game
  • sortarray sortarray
    01 сентября 2019, 12:00
    Гоняя роботов против друг друга в динамической песочнице с обратной связью, можно вырастить хищников, а то и приматов, идея манит. 

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

    Основа выделения общих сущностей в выявлении общих свойств по единому контексту.

    Если вы говорите о разбиении по признаку поглощения пищи, у вас общий контект пища.
    если вы разбиваете по признаку развития, у вас общий контекст развитие.
    Это 2 разных категории, нельзя сказать логически «или травоядный или хищник или примат», это блеать как эйнштейн с его временно-гвоздевым континуумом:)

    Вот потому и не любят множественное наследование. Оно естественным образом отражает природу, от чего бегут как от чумы в «математику»:)
  • Дмитрий Новиков
    01 сентября 2019, 12:03
    Задача интересная, но уже решенная. Действия однотипных роботов сформируют очень понятную вещь. Нормальное распределение приращений цены. Если вы обучите их боятся, то появится корреляция цены и волатильности (например) и т.д. Поэтому, лучше взять БА, снять с него параметры, и нагенерировать 1 мил движений. Метод Монте Карло, называется. А вот в него запустить вашего робота и проверить его эффективность. 
    • sortarray sortarray
      01 сентября 2019, 12:05
      Дмитрий Новиков, а зачем вам монтекарло, рандом чем не устраивает?
      • Дмитрий Новиков
        01 сентября 2019, 12:12
        sortarray sortarray, Потому что параметров больше чем -1:+1.
        • sortarray sortarray
          01 сентября 2019, 12:23
          Дмитрий Новиков, простите меня за мою дремучесть:) Вы могли бы привести какой-нибудь пример задачи с рандомом, который бы не был при этом методом Монте-Карло?

          Под метдом Монте-Карло понимается численный метод решения
          математических задач при помощи моделирования случайных величин.
          • Дмитрий Новиков
            01 сентября 2019, 12:29
            sortarray sortarray, {\displaystyle S_{t}=S_{0}\exp \left(\left(\mu -{\frac {\sigma ^{2}}{2}}\right)t+\sigma W_{t}\right),} вот мы решаем вот такую хрень. Здесь рандом Wt. Его надо умножать на сигму. Соответственно нам надо сгенерировать сигму. Сигма имеет корреляцию с St и т.д.
            Посмотрите мои топики «основы» там популярно все расписано и сгенерировано в экселе.
            • sortarray sortarray
              01 сентября 2019, 12:30
              Дмитрий Новиков, я не понял, почему то что Вы привели это не монте-карло?
              • Дмитрий Новиков
                01 сентября 2019, 12:41
                sortarray sortarray, Ну эта функция которую вы будите интегрировать по Монтекарло. От 0 до T
                • sortarray sortarray
                  01 сентября 2019, 12:44
                  Дмитрий Новиков, монтекарло это любая функция использующая рандом, или нет?
                  • Дмитрий Новиков
                    01 сентября 2019, 12:52
                    sortarray sortarray, Мы используем Wt. Это винеровский процесс. Рандомный (случайный) с оговоркой, что средние 0 а дисперисия 1. То есть -1 и +1. Рандомным может быть 1:0. Но у нас цена Бид и аск. Или на шаг вверх или вниз, при заключении сделки. 
    • sortarray sortarray
      01 сентября 2019, 12:29
      Дмитрий Новиков, а под «обучить боятся» Вы что понимаете?

      К примеру, у нас есть крыса на металическом полу. Мы включаем звуковой сигнал, а затем пускаем по полу электрический ток. После нескольих разрядов крыса скорей всего начнет прыгать еще до того как разряд подается на пол, по звуку(то есть, наработан условный рефлекс). Мы это можем определить как то, что мы обучили крысу бояться звукового сигнала? Вы такой принцип имели в виду?
      • Дмитрий Новиков
        01 сентября 2019, 12:37
        sortarray sortarray, Ну это такая очевидная штука. Потери воспринимаются больнее, чем недобор прибыли. Там логарифмическая зависимость. Поэтому рынки падают быстрее чем растут. Отсюда лонг и шорт. И распределение реального рынка получается логнормальным. Соответственно в алгоритм роботов должен быть зашит логарифм и корреляция.
        • sortarray sortarray
          01 сентября 2019, 12:39
          Дмитрий Новиков, Я вас не об этом спрашивал. Принцип самого обучения каков? Такой как я описал с крысой или что-то другое?
          • Дмитрий Новиков
            01 сентября 2019, 12:45
            sortarray sortarray, Другое. Сразу закладываем в робота, что терять плохо. 
            • sortarray sortarray
              01 сентября 2019, 12:48
              Дмитрий Новиков, как закладываем? Как конфеты в коробку или как патроны в обойму?:)
              Ладно, проехали:)

              Знаете чем математик отличается от инженера? Разница в том, что математик это калькулятор отображающий, а инженер — это тот кто реализует этот калькулятор, он делает математиков отображающих с помошью молотка, пассатиж и других внешних устройств:)
              • Дмитрий Новиков
                01 сентября 2019, 12:54
                sortarray sortarray, В формулу. Что бы инженер знал, через сколько сантиметров надо трубку загнуть, пассатижами. 
                • sortarray sortarray
                  01 сентября 2019, 12:59
                  Дмитрий Новиков, Вы не поняли.
                  Формула доярки насадить доильные агрегаты на сиски коров — вот это ваша подстановка в формулу. Она знает как это сделать.
                  Задача инженера в том, чтобы продумать реализовать сам доильный аппарат.
                  Если инженер говорит что-то вроде «подставить в формулу» или «насадить колпачки на вымя», значит это, мягко говоря, инженер с математикой головного мозга
                • sortarray sortarray
                  01 сентября 2019, 13:04
                  Дмитрий Новиков, Это я к тому, что Вы заявляете «обучение», но тщательно избегаете вопросов реализации этого обучения. Нет, обучение робота не сводится к «подстановке».
                  • Дмитрий Новиков
                    01 сентября 2019, 13:07
                    sortarray sortarray, Понял. Я имел ввиду не обучение, типа нейронной сети, а программирование определенных параметров.  
  • sortarray sortarray
    01 сентября 2019, 12:09
    В простейшем виде это реализуется фитнес функцией, когда каждый робот получает оценку по какому-то критерию, например по профиту за период. Потом победители идут на второй круг, а побежденные выбывают. Для оценки по фитнес функции роботов не надо гонять против друг друга и сделать её не сложно. А вот чтобы стравливать роботов и выбирать сильнейших, тут надо придумывать песочницу.

    Я что-то не понял чем одно от другого отличается? Если роботы нацелены на какое то конкретное общее действие они и так соревнуются, вам остается только подсчет запилить
      • sortarray sortarray
        01 сентября 2019, 14:50
        ПBМ, пусть есть петя и вася, они собирают клубнику, вася набрал ведро, а петя полведра за то же время. Что сюда нужно добавить, чтобы это соответствовало Вашей концепции?
          • sortarray sortarray
            01 сентября 2019, 17:03
            ПBМ, ну, и в чем проблема? Я же вам говорю, одно от другого отличается только подсчетом результатов
            Другое дело вопрос стимула и обучаемости
  • Cristopher Robin
    01 сентября 2019, 17:14
    Есть такая штука в термодинамике — закон неубывания энтропии. Суть в том, что в изолированной системе (которую вы как раз и предлагаете), энтропия может только наростать. То есть, никаких регулярностей и никаких распознаваемых структур в вашей песочнице не будет.
    • Дмитрий Новиков
      01 сентября 2019, 17:59
      Cristopher Robin, Формула Фокер-Планка. Структура очень даже конкретная. 
      • Cristopher Robin
        01 сентября 2019, 20:37
        Дмитрий Новиков, любопытнвая штука. Столько всего готового существует, интересно есть кто-то, кто с этим всерьез разбирется?
  • Антон Денисков (Fry)
    01 сентября 2019, 17:36
    Среда изначально нейтральна. Как только кто-то делает действие, у системы появляется интерес. Баланс системы становится не нулевой. И цена смещается против внешнего участника. Если внешние участники сделали две противоположные сделки с одинаковым объёмом, то система снова сбалансирована. Но заработала на комисах и разнице цен во временном промежутке до балансирования.

    Лично я так представляю себе «кукла» в глобальном смысле слова.
    • Виталий Зотов
      01 сентября 2019, 21:22
      Fry (Антон), А почему начально баланс нулевой? Ведь что то надо продать, а откуда это взялось? Баланс должен быть +. Это же не математика. Чтобы продать кому-то ненужное надо сначала у кого-то купить ненужное или сделать. В реальности система никак не нейтральна. 
      • Антон Денисков (Fry)
        01 сентября 2019, 22:42
        Виталий Зотов, это чистая математика. Реальные активы — капля в море. Основная масса трейдов — это деривативы (коэффициенты по обе стороны от =).
        • Виталий Зотов
          02 сентября 2019, 09:16
          Fry (Антон), нет. Срочка тоже самое. Вы покупаете у брокера или биржи… Значит он это уже гдето взял и вам продал. Тут нейтральностью и не пахнет. В корне неправильно рассуждаете. 
          • Антон Денисков (Fry)
            02 сентября 2019, 19:06
            Виталий Зотов, какое-то у нас разное представление о срочке.
            На бирже я покупаю/породаю не у биржи и не у брокера, это не форекс-кухня.
            На срочке всегда есть 2 контрагента в сделке (обычно с промежуточными звеньями, но в конечном счёте нас двое).
            • Виталий Зотов
              02 сентября 2019, 19:44
              Fry (Антон), С чего начинается срочка? Биржа продает вам контракт. Именно биржа. Потом люди могут торговать между собой. Именно биржа определяет Сколько контрактов существует суммарно. Купите контрактов на триллион, как пример, Не выйдет. Количество контрактов лимитировано. Иначе нет торговли. Просто идет покупка. В чем смысл? В ограниченном количестве предложения. Поэтому никак не нейтральна система, ., В ней уже заложен товар или контракты изначально…
        • Виталий Зотов
          02 сентября 2019, 09:18
          ПBМ, нет. Вы себя то послушайте. Слово Получил означает, что чтото уже было и вам это дали. Где нулевая позиция?
            • Виталий Зотов
              02 сентября 2019, 14:56
              ПBМ, Вы о чем говорите вообще? 
              вот что я обсуждал
              Среда изначально нейтральна. Как только кто-то делает действие, у системы появляется интерес. Баланс системы становится не нулевой.

              причем тут ваша или чья-то позиция?
              среда не нейтральна. В нее уже изначально заложили или акции или контракты, а вы их покупаете, а уж потом продаете. 
              а значит у системы интерес в вас есть изначально, а не когда вы делаете шаг. 

              И это очень важно, это основа. Потому что именно это двигает цену — ОГРАНИЧЕННОЕ КОЛИЧЕСТВО ИЗНАЧАЛЬНОГО ТОВАРА. Всякие байки про спрос \предложение. Если товара хватит на всех, то цена не сдвинется ни на шаг. 
              А вы мне тут про шашечки...
              Я понял, что вы ничерта не понимаете сами еще. А уже язвить изволите.

              • Антон Денисков (Fry)
                02 сентября 2019, 19:09
                Виталий Зотов, в том-то и дело, что «или контракты» в ней не заложены. Изначально ОИ по всей срочке = 0 и на момент экспирации будет =0.
                • Виталий Зотов
                  02 сентября 2019, 19:49
                  Fry (Антон), в теории два человека заключили контракт. Но такого давно нет на бирже. Это внебиржевые сделки. А на бирже вы заключаете стандартизированный контракт с биржей., а не с контрагентом. Тем более, если фьюч не поставочныц. 
  • meat
    01 сентября 2019, 19:03
    а для чего эти роботы нужны будут? где применяться и какая конечная цель?
      • meat
        02 сентября 2019, 16:40
        ПBМ, а какой тип робота? hft? направленная торговля по сигналам, в основе которого лежит некое прогнозирование? вот это поясни

        если hft — то тестирование на истории не нужно
  • Андрей К
    01 сентября 2019, 22:58
    Почитал комменты. Опять прибалдел. Все таки насколько трейдинг бывает сложным.
    • Виталий Зотов
      02 сентября 2019, 14:58
      Андрей К, он не сложный. Просто многие очень любят усложнять. Искать на небе, хотя все ценное лежит на земле.
      Не могут смирится с возможностью поражения и пытаются соломки подстелить везде, куда ступают. Гарантия им нужна. Без нее ни шагу. 
      Гарантировано мы все умрем, остальное вилами по воде. 
      Все просто. Пытайтесь и будь, что будет. 
      Провалы могут вести к победам, а победы к провалам. 
      Надо просто иметь смелость действовать, а не страховаться.

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

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