Довольно часто у меня спрашивают, как создать свой индекс акций или портфель. Решил сделать инструкцию.
1. Создаём копию индекса Московской биржи из акций.
— Вес акций можно взять https://www.moex.com/ru/index/IMOEX/constituents/ или https://smart-lab.ru/q/index_stocks/IMOEX/. Рекомендую второе, т.к. МБ даёт только скриншот таблицы, а на SMART-LAB можно скопировать таблицу выделением в EXCEL. Хотелось бы выгрузку в *.csv, но и за это СПАСИБО.
Важно запомнить, вес бумаг постоянно меняется. Чем больше дорожает бумага относительно остальных, тем больше её вес. Также, возможно удаление биржей бумаг из индекса и добавление новых.
— Находим примерный минимальный объём на депозите для реализации. Для этого делим цену каждой акции на коэффициент веса и берём максимальное число.
Например, для акций «Транснф ап» получим:
122300 / (0.55 / 100) = 22 236 363 р.
Где:
122300 – цена акции Транснф ап;
0.55 / 100 – вес в % делим на 100, получаем коэффициент.
20220915,090000,61420,61497,61406,61464,241
20220915,090100,61460,61476,61420,61451,160
20220915,090200,61444,61489,61436,61479,185
Осмелюсь предположить, что эти строки ты заливаешь в массив с помощью string.match. Это готовый парсер строки с разделителем. Работает достаточно шустро. Я на нем сидел пару лет.
Когда данных не много, такой метод загрузки не напрягает. Но когда за день 20-30 раз загружаешь сотни тысяч или миллион строк, то потери времени становятся невыносимыми.
Стал искать способ ускорить этот процесс. И он таки нашелся. Выяснил следующее:
Если строки в файле истории сконвертировать в такой вид (делается 1 раз):
table.insert(MyTable,{«20220915»,«090000»,61420,61497,61406,61464,241})
table.insert(MyTable,{«20220915»,«090100»,61460,61476,61420,61451,160})
table.insert(MyTable,{«20220915»,«090200»,61444,61489,61436,61479,185})
★«DARK TRADING — РУССКОЯЗЫЧНОЕ СООБЩЕСТВО ТРЕЙДЕРОВ»★
Торговая система (ТС) на 100% Спекулятивная, не определяющая
приоритетное направление движения цены инструмента следующего
дня (дней). Как-только профит зафиксирован, точка входа по ТС
считается отработанной и брать тут-же позицию в сторону движения
цен закрытого трейда – это высокая вероятность получения убытка
по котировочному счёту, как и торговля контр-тренда против ТС.
Официальный САЙТ Биржевого спекулянта АСЛАНА БЕРОЕВА
PS: я трейдер и никакими «прогнозами» по рынкам не занимаюсь,
Термин «робастность» означает способность торговой стратегии повторять результаты своего тестирования в прошлом на новых данных.
И было бы здорово измерять эту способность в цифрах. В этом тексте я познакомлю Вас с одной из метрик робастности стратегии, которая есть у нас в OsEngine — «Walk-Forward Robustness Metric».
Вспоминаем о сути робастности
Вы оттестировали какую-то стратегию в тестере и видите результат в красном квадрате. Супер! Вы включили стратегию в торги, и в реальном времени за следующие два месяца стратегия вам дала примерно такой же результат по прибыльности, как и в тестере:
Рис. 1. Стратегия с высокой робастностью. Повторяет результаты тестов в реальной торговле
Пример 2.
Вы оттестировали какую-то стратегию в тестере и видите результат в красном квадрате. Вы включили стратегию в торги, и в реальном времени за следующие два месяца (зелёный квадрат) стратегия вам дала убытки: