Блог им. bosco

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

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

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

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

avatar
Не зная точных алгоритмов биржи и маркет-мейкеров по установлению цены, проще этим пренебречь.
avatar
В части Динозавров в корне не согласен, тк чем на больше промежутке исторических данных робот показывает стабильный результат, тем спокойней он будет жить и в реале (конечно все зависит от самого алгоритм, все что написал я, косается исключительно среднесрочной торговли)

avatar
Захаров, ну в целом я согласен и с вами и с предыдущими двумя коментами, что можно и так — просто на истории. 

песочница — это такая большЕ академическая задачка для интереса. из которой потом наверняка может выйти что-то полезное. например станешь больше понимать тех самых маркет-мейкеров. а в идеале даже найдёшь одну две их или своих слабости.

или поймёшь, почему цена так часто разворачивается на стопе, без разницы, будь то стоп человека или стоп робота.
avatar
научи робота зарабатывать и уЗбогойся, у тех кого надо такие задачки давно уже решены на уровне который для обыкновенного участника Сматлабика не досягаем.
avatar
Олег Ложкин, зарабатывать научил, осталось научить не сливать заработанное обратно :)
avatar
Этот подход для обучения/отбора рыночных роботов не работает. Данных мало.

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

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

Тут же уже на этапе генерации данных колоссальные проблемы.
avatar
Пафос Респектыч, вот это похоже на правду. я правда не уверен что в шахматах всё в разы проще чем на рынке, но наверно да
avatar
ПBМ, в шахматах запись партии проста и компактна, и кроме неё гарантированно ничего нет. На рынке — график это только график, к нему ещё в каждый момент времени прилагается весь мир вокруг. То есть можно сказать, что график — это запись реакций всей публики которая торгует этот инструмент на все события, которые с ней происходят, то есть «неизвестных неизвестных» просто масса разных
avatar
В игре где надо замки захватывать и строить… роботы друг против друга играли… Закончилось тем, что они просто поделили территорию и перестали нападать друг на друга..
Тут тоже в оконцовке самообучаемые роботы начнут зеркалить алгоритмы друг друга и каждый останется при своих… эффективный рынок…
Роботу жрать не надо, он профит может вечно ждать..
-----
На рынке терпеливый и расчетливый забирает деньги у азартных и эмоциональных, а таких большинство… Толпа гонит цену: то слишком высоко, то слишком низко..
Вот за счет перекосов и будет заработок…
avatar
Сергей, можно в песочницу вставить какие-нибудь переодические дизастеры. типа утренних гэпов, смен волатильности и тп
avatar
ПBМ, будет затухание и снова система быстро придет в равновесное состояние…
Да и откуда берутся гепы и повышенная вола? Это ж чисто психологическая реакция толпы на новость, отчет, или азарт…
avatar
когда много систем
возникает лотерея:
угадай систему
Eugene Logunov, спасибо, про вас как раз вспоминал, думал что наверняка похожая задача решалась…
avatar
Вам надо написать биржу, а Ваши роботы там будут просто игроками и будет один супербот, который будет а-ля маркет-мейкер, который поддерживает ликвидность
avatar
Eugene Logunov, насколько я понял из краткого наскока, там задача построения самой среды для роботов не решалась, описывались лишь условно сами роботы.
а мне интересно на каких принципах сделать движок.
ну то есть вот есть робот, он там почему-то купить решил.
куда после этого движок должен двигать цену? вероятно, что если робот был один, то цена должна двигаться против него.

можно пойти чуть дальше и сказать что рынок, среда, это мега-агент, который двигает цену в выгодную для него сторону. и каждый робот-агент покупает-продаёт актив либо у другого робота агента, либо у мега-агента-рынка-ЦК.
тогда если 1 робот захочет купить, ему продаст ЦК-мега-агент, потом станет снижать цену, но тут придут ещё 10 роботов и захотят ещё дешевле купить, ЦК-мега-агенту придётся цену повышать. или, может быть, наоборот резко обрушить. но если до первого робота в шортах сидело 20 ещё более других роботов, то ЦК выгоднее цену поднять. 
как-то так и вроде даже не слишком сложно.
avatar
как я слышал, эти шахматные проги работают засчет памяти, у них алгоритмы отличаются от мышления. Основа человеческого мышления в шахматах совершенно иная, человек не может видеть все варианты развития игры, он вместо этого пытается обобщать и искать инварианты, а так же использует тактиические фишки, как например, видя атаку на слона, он вместо защиты нападает на ферзя используя общий принцип атакующей защиты

А это в сущности то же самое что делает боксер или мечник
Шахматы не случайно в категории спорта. Спорт это искусство воина изначально
Это ныне он деградировал до британского спорта.
avatar
Пытались моделировать. См. minority game
avatar
SergeyJu, погуглил, нашел такое: http://aeguchi.hogsford.com/projects/minority-game-project

там даже есть пример кода.
забавные там выводы в конклюжене, что вобщем-то общение — это ключ.
и ещё интересное хотя и не очень понятное
  • If honest ppl. are the minority, they win against the tricksters
avatar
Гоняя роботов против друг друга в динамической песочнице с обратной связью, можно вырастить хищников, а то и приматов, идея манит. 

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

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

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

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

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

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

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

Я что-то не понял чем одно от другого отличается? Если роботы нацелены на какое то конкретное общее действие они и так соревнуются, вам остается только подсчет запилить
avatar
sortarray sortarray, разница в том, в какой среде соревнуются роботы. об этом весь пост. с точки зрения выбора лучшего никакой существенной проблемы нет.
avatar
ПBМ, пусть есть петя и вася, они собирают клубнику, вася набрал ведро, а петя полведра за то же время. Что сюда нужно добавить, чтобы это соответствовало Вашей концепции?
avatar
sortarray sortarray, генератор клубничных полян, реагирующий на сбор клубники.
avatar
ПBМ, ну, и в чем проблема? Я же вам говорю, одно от другого отличается только подсчетом результатов
Другое дело вопрос стимула и обучаемости
avatar
sortarray sortarray, а я говорю вам, что подсчёт результатов ничем не отличается.
avatar
Eugene Logunov, omg, не понимаю как столько всего помещается в одной голове :)
спасибо
avatar
Есть такая штука в термодинамике — закон неубывания энтропии. Суть в том, что в изолированной системе (которую вы как раз и предлагаете), энтропия может только наростать. То есть, никаких регулярностей и никаких распознаваемых структур в вашей песочнице не будет.
avatar
Cristopher Robin, Формула Фокер-Планка. Структура очень даже конкретная. 
avatar
Дмитрий Новиков, любопытнвая штука. Столько всего готового существует, интересно есть кто-то, кто с этим всерьез разбирется?
avatar
Cristopher Robin, Конечно. Для начала посмотрите это:https://www.lektorium.tv/speaker/3058
 
avatar
Cristopher Robin, честно, в науках давно ослаб, если вообще когда-то был силён (ну были пятёрки по матану, была и незаслуженная тройка по общей физике, хотя я готовился на пять, и была заслуженная тройка по терверу, там я «уже всё»)

я настолько возвысился удалился от науки, что мне реально тяжело понять определение вероятности, из учебника. или определение энтропии из википедии. что это вообще такое на словах? ок, на словах это типа порядок вещей, порядок — типа как мы видим как они должны быть. но как это нормально пояснить — непонятно. все эти изначальные определения похожи на мухлёжку, типа да ладно, это итак всё ясно едем дальше. а как дальше ехать если не ясно в самом начале вообще.
потом, когда ты принимаешь это как данность, становится проще конечно. но всегда есть ощущение, что тебя обманули в самом начале. хотя потом вроде всё честно. 

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

нагуглил на хабре статью по энтропии, читать всё пока не стал — позже. но там связывают физическую и информационную (что тоже по идее не верно),
что чем меньше нам известно о системе — тем больше энтропия.
ок, ну тогда как в замкнутой системе с течением времени нам может быть всё меньше известно о системе? тут явно какая-то ошибка.
avatar
Среда изначально нейтральна. Как только кто-то делает действие, у системы появляется интерес. Баланс системы становится не нулевой. И цена смещается против внешнего участника. Если внешние участники сделали две противоположные сделки с одинаковым объёмом, то система снова сбалансирована. Но заработала на комисах и разнице цен во временном промежутке до балансирования.

Лично я так представляю себе «кукла» в глобальном смысле слова.
Fry (Антон), А почему начально баланс нулевой? Ведь что то надо продать, а откуда это взялось? Баланс должен быть +. Это же не математика. Чтобы продать кому-то ненужное надо сначала у кого-то купить ненужное или сделать. В реальности система никак не нейтральна. 
avatar
Виталий Зотов, это чистая математика. Реальные активы — капля в море. Основная масса трейдов — это деривативы (коэффициенты по обе стороны от =).
Fry (Антон), нет. Срочка тоже самое. Вы покупаете у брокера или биржи… Значит он это уже гдето взял и вам продал. Тут нейтральностью и не пахнет. В корне неправильно рассуждаете. 
avatar
Виталий Зотов, какое-то у нас разное представление о срочке.
На бирже я покупаю/породаю не у биржи и не у брокера, это не форекс-кухня.
На срочке всегда есть 2 контрагента в сделке (обычно с промежуточными звеньями, но в конечном счёте нас двое).
Fry (Антон), С чего начинается срочка? Биржа продает вам контракт. Именно биржа. Потом люди могут торговать между собой. Именно биржа определяет Сколько контрактов существует суммарно. Купите контрактов на триллион, как пример, Не выйдет. Количество контрактов лимитировано. Иначе нет торговли. Просто идет покупка. В чем смысл? В ограниченном количестве предложения. Поэтому никак не нейтральна система, ., В ней уже заложен товар или контракты изначально…
avatar
Виталий Зотов, на работу кто-то сходил, денежку получил, принёс на рынок. положил брокеру, под обеспечение получил заёмные акции, с плечом, обязательством отдать в будущем проценты за пользование.
полученные акции продал, открыв шорт.
avatar
ПBМ, нет. Вы себя то послушайте. Слово Получил означает, что чтото уже было и вам это дали. Где нулевая позиция?
avatar
Виталий Зотов, вам шашечки или ехать?
в терминах рынка, никто не приходит на рынок без денег.
или у вас никогда не было счёта у брокера?
нет денег — нет счёта. нет торговли.
о какой нулевой позиции речь? назовите эту позицию с деньгами — плюс.
но на ней нет контрактов. и значит она не влияет на цену. она — ноль.
avatar
ПBМ, Вы о чем говорите вообще? 
вот что я обсуждал
Среда изначально нейтральна. Как только кто-то делает действие, у системы появляется интерес. Баланс системы становится не нулевой.

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

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

avatar
Виталий Зотов, ясно, удачи.
avatar
Виталий Зотов, в том-то и дело, что «или контракты» в ней не заложены. Изначально ОИ по всей срочке = 0 и на момент экспирации будет =0.
Fry (Антон), в теории два человека заключили контракт. Но такого давно нет на бирже. Это внебиржевые сделки. А на бирже вы заключаете стандартизированный контракт с биржей., а не с контрагентом. Тем более, если фьюч не поставочныц. 
avatar
Eugene Logunov, мне непонять в чем проблема взять уже готовые цены??? 
avatar
а для чего эти роботы нужны будут? где применяться и какая конечная цель?
avatar
meat, для торговли конечно.
обоснование: ограниченность исходных данных, построение живой но обобщающей модели. не всеобъемлющей, а достаточной для целей создания более приспособленных к реальности роботов. чем те, которые создаются подгонкой по истории.

грубо говоря, каждый создаёт роботов любыми доступными путями. многими путями. захотелось попробовать ещё один. может он что-то даст.
avatar
ПBМ, а какой тип робота? hft? направленная торговля по сигналам, в основе которого лежит некое прогнозирование? вот это поясни

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

теги блога П М

....все тэги



UPDONW
Новый дизайн