Скорости бэктестов. Вопрос.
Всем привет.
Сориентируйте, пож, у кого какие скорости бэктестов на используемой вами технологической платформе. Допустим берем простенькую стратегию с простой логикой — свечная конструкция или что-то аналогичное, где сама торговая логика не ёмкая по вычислительным затратам. Допустим один прогон 5-минуток (речь о свечных данных) за 5 лет сколько будет выполняться?
Изначально хотел узнать, какие скорости на Wealth-lab, но было бы интересно и на других платформах. Сейчас столкнулся с тем, что текущая платформа дает не удовлетворяющую скорости — вот думаю, или адаптироваться или же есть смысл посмотреть в сторону Велс-лаба и т.д…
На 1-минутке за 10 лет один прогон стратегии у меня менее 1 минуты, включая подгрузку данных.
SergeyJu, Хорошие скорости — это на C и есть? — Самописное?
Скорость хорошая.
Replikant_mih, ну да.
Многовато.
Если возможности оптимизации нет, то придётся писать самому.
Либо тестер полностью, либо некий агрегатор.
Который бы переваривал эти данные и выдавал новый набор.
Меньший по размеру и подходящий для текущего тестера.
Полностью самописные вещи трудозатратны.
Особенно если нет навыка программирования.
В большинстве случаев они не рентабельны.
Replikant_mih, точно ответить трудно.
Потому как неизвестно какие расчёты вы ведёте.
Если пальцем в небо, то 5 лет 5 минуток можно переварить меньше, чем за минуту.
Если писать код левой ногой(без особых оптимизаций).
Заняло 2 дня и подумать.
Обычно подумать — самое сложное и самое эффективное.
Отвечать не обязательно, это наводящий вопрос.
cfree0185, В S# отдельный день лежит в отдельном файле в отдельной паке))
Вряд ли это супер-быстро)). Но там и сами вычисления не быстро идут, помимо файловых операций.
bocha, Как легко было бы жить в мире, если бы все комменты отвечали твоим ожиданиям))). Ещё идеальней было бы если бы в табличном виде: первый столбец — платформа, второй — секунды)).
Спасибо! Мне кажется, в велсе что-то подобное было, но именно по велсу пока так никто и не отписался.
Компьютер Core i5, самодельный тестер
Рейт 600 раз в минуту т.е. 10 раз в сек. Это при загрузке всех ядер то есть несколько вариантов считается параллельно.
ivanovr, много строчек кода?
Тоже что ли запилить — простое, очень быстрое, прям даже консольное можно).
Ради скорости надо брать нормально компилируемый язык и писать так, чтобы в основном цикле не нагружать менеджер памяти. Т.е. память и объекты выделить заранее
два робота в одном мире (общий счет) поминутно за 4 года ~80 сек.
в зависимости от числа индикаторов и частоты и сложности их перерасчетов.
9 лет — 20 секунд, это относительно легкий робот.
Java.
параллельно крутится квик и тренируется еще один робот.
ПBМ, А у вас он много чего умеет или простой?
В принципе вырисовывается кучная область со скоростями единицы секунд на обозначенный дата-сет. Мои 7 минут выглядят очень аномально на этом фоне)).
есть ещё оптимизатор c многократным прогоном.
и есть тот в чём крутится реальный робот.
т.е. всё более менее стандартно.
время не сразу такое получилось. тоже профилировал, улучшал медленные куски, дублирование, избавлялся от циклов и вложенных циклов.
Sergey Pavlov, >>«Вообще, S# должен при прочих равных ощутимо по скорости обсчета обыгрывать R.»
чёт не обыгрывает), но я ещё продолжаю пытаться).
Не, я при желании смогу попробовать уложиться в 100 тоже, но не развернешься, конечно)).
Sergey Pavlov, Тебе разве не хотелось никогда протестить стратегию, сделать пару движений рукой и вуаля — можно в бой.
Ну а в целом система довольно мощная, хотя недостатков много.
Sergey Pavlov, Нуу, если взять переменные трудозатраты и постоянные, то S# это дохрена постоянных (разовых), а потом с переменными норм будет когда все настроишь, во всем разберешься — я Shell модифицированный юзаю, реально берешь код, открываешь его в другой вкладке и вот он уже не тестируется а торгует в бою.
А TSLab хорош в плане того что и разовые трудозатраты не велики — он работает из коробки сразу).
А ведь можно было быстрее и проще: мт5, тслаб, ами, луа.
Replikant_mih, да не, изначально у тебя 24 часа в сутках ) на самом деле я бы посоветовал сначала сделать норм стратегию и пока не заморачиваться как её торговать потом. Это потом может наступить довольно нескоро ) а торговать неторговабельное — потеря времени и денег, плюс разочарования депрессии алкоголизм — как следствие расходы на восстановление и реабилитацию )
Есть оч много разных опен сорс фреймворков для бэктестинга на питоне, они в основном простые, просто устанавливаются, примеры в комплекте, работают тоже с приемлемой скоростью — точно быстрее чем всякие велслабы. Я бы взял какой-нибудь, например этот: http://pmorissette.github.io/bt, ну или список сам нагуглишь ) накачал минуток с финама и вперёд
Пафос Респектыч, Да всё уже начато давно)) — есть у меня норм стратегии).
Тут S# только что выкатил обновление тестера — ощутимо скорость подтянули, так что, возможно, тема уже не актуальна.
Пафос Респектыч, Прогоны на истории — ничто, если они без аналитики — именно от того, как интерпретируешь результаты и зависит будет ли стратегия после запуска в бой «сразу вниз» или так же как на бэктесте.
Да, тестирование на всякого рода псевдо данных или случайных данных может быть частью информации для последующей аналитики, но можно выстраивать аналитику и без этого. Как сказал, в дальнейшем скорее всего в каком-то виде введу этот элемент в общую схему аналитических бизнес-процессов.
Replikant_mih,
Так не бывает, ну может только если ты это делаешь в 100500 раз и очень хорошо понимаешь, что происходит внутри бэктестера и что значат те чиселки, которые он показывает. В случае с каким-нибудь S#, подозреваю, для этого нужно инвестировать не один год собственного времени и уйму сил, разобраться в исходниках, там наверняка и багов хватает.
Если бы я не писал себе всё сам, наверное взял бы Амиброкер, глядя на отзывы людей, да и вон SenSor на нём что-то делает и у него вроде получается.
Мне главное не делать перекос в сторону инфраструктуры и программирования, а делать акцент все-таки на самих стратегиях).
Если данные хранятся в TXT, то их парсинг будет занимать несколько секунд, поэтому тестеры на бинари данных всегда будут быстрее.
Опять же есть барные тестеры (Ами, Омега и тд) — они будут быстрее событийных тестеров. Но на последних можно строить хоть HFT алго.
Еще важно, чтобы тестовый код можно было запустить в бой сразу, а не переписывать его под рилтайм.
yurikon, Ещё для меня выглядит странным если ты, например, гоняешь оптимизацию на одном дата-сете, при этом каждый раз его читаешь из файла — из оперативки же быстрее. Но это так).
>>«Еще важно, чтобы тестовый код можно было запустить в бой сразу, а не переписывать его под рилтайм.»
Да, стараюсь не отходить от этого принципа.
Я его использовал только для сравнения скорости со своим тестером.
Насчет итерационного подсчета индюков и прочего — согласен, я тоже стараюсь использовать быстрые схемы, если хочу оптимизировать вычисления.