Получи случайную криптовалюту за регистрацию!

Финансовая Лаборатория

Логотип телеграм канала @finlabvip — Финансовая Лаборатория Ф
Логотип телеграм канала @finlabvip — Финансовая Лаборатория
Адрес канала: @finlabvip
Категории: Экономика
Язык: Русский
Количество подписчиков: 873

Рейтинги и Отзывы

4.00

3 отзыва

Оценить канал finlabvip и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

1

3 звезд

1

2 звезд

0

1 звезд

0


Последние сообщения 10

2022-06-15 07:19:47 В курсе Проектирование фильтра Калмана я использовал формулу Optimal Tracking Index. Благодаря этому индексу не нужно вручную подбирать альфу, бету и гамму для фильтров. Все что нам нужно, это ошибки процесса и измерения. Данный метод в 1984-м году представил Пол Калата.

Я ничего не принимаю на веру. Изучил его статью. Понял как появилась эта формула. Делюсь своими объяснениями с вами в летнем бесплатном мини-курсе Вывод формулы для Optimal Tracking Filter здесь >>>

Это мой первый опыт публичного разбора научной статьи. Жду ваши лайки :-)
880 views04:19
Открыть/Комментировать
2022-06-07 09:39:47 Самая глобальная мысль по улучшению BackTrader.

Перевод работы с данными и индикаторами на библиотеки numpy/pandas.

Много кода в BT дублирует эти библиотеки. Т.к. часть кода в numpy/pandas реализована на C, то, возможен прирост производительности.

Сейчас приходится дублировать код компонент и индикаторов в исследованиях и ТС. В исследованиях мы используем "чистый" Python с numpy/pandas. Для ТС мы должны работать с Lines, которые не совместимы с Series/DataFrame.

Неизвестно, что будет лучше. Перевод существующего кода BT на numpy/pandas или написание своей библиотеки "с нуля". В любом случае, маловероятно, что новая библиотека будет обратно совместима с BT.
959 views06:39
Открыть/Комментировать
2022-06-03 13:51:22 Переходим к глобальным вопросам. Одна из самых проблемных сущностей систем автоторговли.

Расписание торгов

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

С одной стороны, рынок, обычно, торгуется в своем ритме. С другой, есть время приостановки рынков, которые мы прогнозировать не можем.

Все решения, которые я видел в системах Технического Анализа, предлагали простые варианты. Стандартное время начала и окончания сессии. Даты с особым временем начала и окончания.

Пока мысли такие. Если что-то приходит от тикера, значит, он торгуется. Если ничего от тикера не приходит, значит, или у нас локальный сбой, или тикер не торгуется. Событие прихода нового бара, это единственное, на что можно положиться.
953 views10:51
Открыть/Комментировать
2022-05-30 19:18:10 Переходим к работе ТС с заданными тикерами в BackTrader.

ТС, как и данные, подтягиваются к Cerebro. Например:

cerebro = bt.Cerebro()
cerebro.addstrategy(ts1)
cerebro.addstrategy(ts2)
cerebro.adddata(data1)
cerebro.adddata(data2)

И ts1 и ts2 будут получать data1 и data2. Нужно сделать так, чтобы можно было выбирать, какие данные в какие ТС отправлять.

Трейдеры "Финансовой Лаборатории" придумали простое решение. В каждой ТС может быть сколько угодно параметров. Нужно сделать параметр в виде кортежа, где передавать номера тикеров. Например, для 1-го, 3-го и 4-го тикера параметр будет data_ids = (0, 2, 3)

Событие next будет вызываться для каждой ТС по приходу нового бара каждого тикера. Нам нужно "поймать" состояние, когда пришли все новые бары всех тикеров по ТС.

Решений здесь можно придумать много. Один из вариантов такой. Вводим логическую переменную синхронности тикеров ТС. Изначально ставим ее в False. На каждом next сравниваем дату/время последнего бара каждого тикера ТС (номера их мы знаем из параметра ТС). Если тикеры до next были не синхронные, а с приходом next синхронизировались по времени, то выполняем расчеты алгоритма ТС. Ставим логическую переменную синхронизации тикеров в True. Если с приходом next дата/время тикеров ТС не синхронны, то ставим логическую переменную синхронизации тикеров в False. Расчеты алгоритма ТС не выполняем.

Этот алгоритм синхронизации можно использовать даже если данные приходят по разным временнЫм интервалам.
880 views16:18
Открыть/Комментировать
2022-05-25 20:55:07 На очереди работа с брокерами в BackTrader.

В архитектуре BT к Cerebro можно подключить только одного брокера. Внутри этого брокера можно выбрать только 1 счет при подключении.

cerebro = bt.Cerebro()
cerebro.setbroker(broker)

Нужно сделать так, чтобы для каждой ТС, добавленной к Cerebro, можно было бы выбирать брокера и счет.

Самое простое решение для работы с разными брокерами - сделать отдельное окружение Python для каждого брокера. Под каждым окружением запустить свою версию Cerebro с привязанным брокером и торговыми системами.

Разбить красиво на счета не получится, т.к. BT использует get_notification, get_cash, get_value, get_position для анализаторов показателей торговых систем (например, коэфф. Шарпа) и наблюдений (например, изменение счета, точки входа/выхода, просадка). Если внутри Cerebro менять счета, то эти функции будут сбиваться, и выдавать неверные значения.

Вот дискуссия про работу на нескольких брокерах/счетах.

Чтобы из одного Cerebro работать с несколькими брокерами и несколькими счетами в одном брокере, нужно переделывать архитектуру BackTrader. Посмотрим, насколько это сложно...
831 views17:55
Открыть/Комментировать
2022-05-23 13:52:06 Продолжаю публикацию своих мыслей по улучшению BackTrader. Сегодня будет про улучшение визуального представления баров, индикаторов, графиков.

Сейчас вывод идет через библиотеку pyplotlib. Отображается все правильно, но есть много ограничений. Что бы хотелось видеть:

- Красивое отображение свечей/баров с возможностью настройки цветовой палитры
- Прокрутку баров по оси времени
- Отображение линий индикаторов заданными цветами / типом линий
- Закрашивать область графика/индикаторов вертикально (например, для визуализации трендов) и горизонтально (например, экстремальных зон индикаторов)

Решением может стать отображение данных в браузере через библиотеку на JS.

Есть готовое решение через расширение функции вывода plot. В нем используется библиотека Bokeh.

Год назад в одном закрытом проекте я реализовал графический вывод через библиотеку AnyChart.

В веб-клиенте Astras от Алора используются ng2-charts (chart.js) + lightweight-charts.

В общем, материала для доработки визуализации достаточно много. Летом буду интенсивно тестировать.
1.2K views10:52
Открыть/Комментировать
2022-05-20 17:24:58 События изменения статуса заявки (notify_order) и изменения статуса сделки (notify_trade) фиксируются в BT по мере их выполнения. Однако, в ТС они передаются только со следующим пришедшим баром. Данные события должны приходить в ТС во время их выполнения без привязки к приходу бара.

Решение этого вопроса достаточно простое. Нужно при инициализации Cerebro поставить параметр quicknotify=True. Вот так:

cerebro = bt.Cerebro(quicknotify=True)
818 views14:24
Открыть/Комментировать
2022-05-20 17:23:32 Мы с вами выходим на финишную прямую 10-го торгового сезона 2021-2022 "Финансовой Лаборатории". Я хотел бы от вас получить обратную связь на тему: Чего бы "докрутить" в BackTrader?

Вместе с трейдерами "ФинЛаба" обсудим этот вопрос в закрытом чате "Автоторговля". Пожалуйста, пишите ваши мысли туда.

Остальные участники могут свои мысли на тему черкнуть по кнопке "Обратная связь" внизу сайта.

Свои мысли расскажу прямо здесь. И вот первая из них...
695 views14:23
Открыть/Комментировать