Избранное трейдера MrD

по

Системно тестируем аномалии на Python. Релиз библиотеки Portfolio Quantitive Research (PQR)

Привет! Сегодня не про результаты, а про методы. Закончил писать базовый функционал библиотеки для количественных исследований. Вот что из него можно выжать:

  • Моделирование портфелей по кросс-секции и временным рядам;
  • Квантильная методика формирования портфелей в % от выборки или фиксированное число инструментов;
  • Возможность гибко задавать веса в портфеле по дополнительному фактору (почти smart beta);
  • Можно вырывать данные для аналитики на каждом промежуточном этапе: сделки, размер позиций, комиссии, доходность портфелей;
  • Возможность относительно точно учесть комиссионные расходы;
  • Пока самая простая визуализация и метрики.

Как выглядит итоговая отрисовка:
Системно тестируем аномалии на Python. Релиз библиотеки Portfolio Quantitive Research (PQR)

Небольшая предыстория или зачем писать свой тестер

 

Не являясь базовым программистом, я пользовался готовыми решениями для бэктестов и особенно долго засиживался на платформе Quantopian. В прошлом году компания не получила нового транша от инвесторов и объявила о закрытии. Вместе с ней сгинул и весь написанный код, а знания синтаксиса несуществующей платформы близки по полезности к 1С-программированию при переезде в долину.
Поработав с другими сервисами, понял, что их существенные недостатки можно разделить на 3 группы:



( Читать дальше )

Оптимизации портфеля с помощью Python и PyPortfolioOpt

    • 11 мая 2021, 21:57
    • |
    • Aleks
  • Еще
Портфельная теория Марковица

Портфельная теория Марковица(далее ПТМ) (Modern portfolio theory) — разработанная Гарри Марковицем методика формирования инвестиционного портфеля, направленная на оптимальный выбор активов, исходя из требуемого соотношения доходность/риск. Сформулированные им в 1950-х годах идеи составляют основу современной портфельной теории.

Основные положения портфельной теории были сформулированы Гарри Марковицем при подготовке им докторской диссертации в 1950—1951 годах.

Рождением же портфельной теории Марковица считается опубликованная в «Финансовом журнале» в 1952 году статья «Выбор портфеля». В ней он впервые предложил математическую модель формирования оптимального портфеля и привёл методы построения портфелей при определённых условиях. Основная заслуга Марковица состояла в предложении вероятностной формализации понятий «доходность» и «риск», что позволило перевести задачу выбора оптимального портфеля на формальный математический язык. Надо отметить, что в годы создания теории Марковиц работал в RAND Corp., вместе с одним из основателей линейной и нелинейной оптимизации — Джорджем Данцигом и сам участвовал в решении указанных задач. Поэтому собственная теория, после необходимой формализации, хорошо ложилась в указанное русло.



( Читать дальше )

Связь Lua -> ваша программа. RAM Disk.

    • 11 мая 2021, 21:33
    • |
    • 3Qu
  • Еще
Я, вроде, уже писал подобный пост. Давно. Но, новое — хорошо забытое старое.
Очень многие неплохо владеют основами программирования, но написать DLL, связь через TCP или что-то другое для экспорта-импорта в Lua — это достаточно сложная процедура, и требует дополнительных знаний и много времени. Однако, если такую связь как-то по простому реализовать, то решились бы многие проблемы обмена данными с C#, Python и другими средами, и не надо вникать во всяческие C-API и прочие премудрости.
Однако, есть достаточно простой и доступный способ — обмен данными через файлы. Например, так:
1. программа Lua пишет строку (строки) данных в формате CSV в файл data.csv,
2. программа Lua создает пустой файл flag.ddd,
3. ваша программа проверяет наличие файла flag.ddd, что означает, что данные готовы к чтению,
4. при наличии файла flag.ddd программа читает данные файла data.csv и удаляет файл flag.ddd,
5. программа Lua проверяет наличие файла flag.ddd, и если этот файл отсутствует пишет строку (строки) данных в файл data.csv (см. п.1)
При обратном обмене происходит все тоже самое, только имена файлов другие.

( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

Вопрос оптимизаторам ТС и любителям МАшек

Доброй ночи, коллеги!

Пусть у нас есть любимый актив и его история в минутных барах. Достаточная. Год. Для FX это примерно 360000 баров +-.

Выберем любимый индикатор. Пусть это будет комбинация МАшек с неизвестными параметрами.

Верно ли что на любом интервале истории можно подобрать параметры МАшек так, чтобы торговля показала положительный результат?
Тот же вопрос для моментума.
Тот же вопрос для любого другого индикатора или системы, с которыми вы имели дело (если в нем не 100500 параметров).

Просто у меня получается, что это не так.
Но, вполне возможно, что я допустил ошибку в своих расчетах.

С уважением

Портфель как замена прогноза?

Доброй ночи, коллеги!

Недавно столкнулся со следующей проблемой.

Есть набор систем, которые (в теории) должны хорошо (с положительным МО) отрабатывать следующий таймфрейм.
Попытка выбрать из них оптимальный прототип потерпела фиаско (ну, либо у меня руки кривые).
В итоге — запустил портфель из всех систем/прототипов — в среднем он работает по плану.

МЫСЛЬ.
Если из набора кандидатов в чемпионы трудно выбрать самого перспективного — следует всех заставить бежать к финишу.
Но это только в том случае, если мы знаем, что все кандидаты добегут до финиша за время, не более, чем...

Что вы думаете по этому поводу, коллеги?

С уважением

Опционы. Выбор дельты для дельта-хеджа

В последнее время тема выбора способа дельта-хеджа привлекает внимание публики.
Я решил использовать возможности своего софта и базу данных с целью сравнить различные подходы к решению этого вопроса.
Опционы. Выбор дельты для дельта-хеджа

Существует мнение, что классическая дельта плохо подходит для хеджа опционных конструкций.
Требуются поправки, учитывающие движение улыбки после изменения цены базового актива.
Обычно в анализ включают горизонтальное смещение улыбки, что выливается в полное или частичное использование sticky delta.
Реже говорят об учете вертикального смещения улыбки.
Популярны также разговоры о том, что при хедже греки должны быть фиксированы, чтобы избежать лишней торговли на дрожании улыбки.
В этом случае обычно используют некую усредненную или прогнозную форму кривых волатильности.
Я реализовал по своему эти подходы и  выполнил их сравнительный анализ. 

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

( Читать дальше )

Почему трейдеры используют curve fitting?

Доброй ночи, коллеги!

Все мы, в разное время, занимались онанизмом подгонкой торговой системы на исторических данных.
Занятие это полезное и увлекательное. Но что заставляет нас думать, что «подогнанная» система будет работать в будущем?

Попробую провести математическую аналогию.
Возьмем задачу построения многочленов, наименее уклоняющихся от нуля (на некотором отрезке, ессно). Решение ее давно известно (Чебышев и более поздние товарищи).
Однако за пределами исходного отрезка (интервал оптимизации) эти многочлены начинают быстро (полиномиально) расти или падать. Т.е. как раз максимально уклоняться от нуля )))

ВОПРОС:
Когда мы оптимизируем эквити на отрезке — что заставляет нас думать, что за пределами отрезка она будет расти?

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

Как всегда с уважением и просьбой в теме не срать

Простой бот для крипто биржи Deribit

Нашёл тестовое задание на разработчика в один фонд. Само задание можно посмотреть в файле. Нужно написать робота для крипто биржи Deribit. Из требований:
1. Написать на python 3
2. Нужно использовать asyncio так как API Deribit работает через websockets
3. Для управления зависимостями использовать poetry
4. Запуск робота через docker и docker compose
5. Написать пару тройку юнит тестов
6. Данные по сделкам сохранять в mysql базу данных.

Не долго думая решил его закодить, потренироваться лишний раз в программировании, заодно разобраться в API Deribit.

Базу данных использовал sqlite. Юнит тесты пока не делал.

Бот можно использовать как пример работы с API Deribit. Код работает как есть без всяких гарантий.

Ссылку на гитхаб можно найти у меня в телеграме: t.me/zenoftrading/68
  • обсудить на форуме:
  • Deribit

Эстиматор исторической волатильности для TradingView от balipour, Russian edition

    • 28 марта 2021, 09:37
    • |
    • tashik
  • Еще
В солнечный день хочется порадовать мир. Имею представить сообществу красивую работу некоего balipour, сделанную для tradingview и переведенную мною на русский язык. Это эстиматор исторической волатильности по различным моделям с встроенным процентным рейтингом волы.

Как подключить его себе в трейдингвью:
0. Скачайте код индикатора отсюда Откройте в любом текстовом редакторе (Блокнот подойдет)
1. Войдите в свою учетку, откройте график.
2. Внизу под графиком будут вкладочки — нам нужна Редактор Pine.
3. На вкладке откройте пустой файл (кнопка Открыть -> Новый индикатор), удалите в открывшемся скрипте все, что там есть, и вставьте туда код эстиматора. Сохраните под понятным Вам именем, нажав там справа Сохранить.
4. После сохранения можно нажать там же кнопку Добавить на график

Получится такое

Эстиматор исторической волатильности для TradingView от balipour, Russian edition

После закрытия окна TradingView или индикатора, повторно поместить его на график можно из Индикаторы (на верхней панели над графиком) — Мои скрипты




Хороший прогноз знака будущего приращения цены - это Грааль?

Нет.

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

К сожалению это совсем не так.

В действительности на маленьких таймфреймах определить знак будущего приращения цены совсем просто.

Возьмем минутные бары по любому активу (ну, тики тоже подойдут). 5, 15 и более минутки уже не подойдут.
Актив в самом деле может быть любой. Валюты, металлы, крипта, товары, индексы, акции, фьючерсы (купонные инструменты не проверял, если честно, но думаю, что и там все будет Ок).

Строим тривиальную трендовую систему:
— если на предыдущем баре цена выросла — покупаем, если нет — продаем

Если цена актива — это x(i), то приращение эквити выглядит так:
(x(i)-x(i-1))*sgn(x(i-1)-x(i-2))
В Экселе моделируется за 1 мин. Только нужно заменить sgn на ЗНАК() в русскоязычной версии )))

Полученная эквити будет почти монотонно расти или падать.

( Читать дальше )

....все тэги
UPDONW
Новый дизайн