zenoftrading

Читают

User-icon
108

Записи

53

Быстрый бектестинг стратегии на python с pandas

Я уже давно использую для бектестов python и pandas. pandas это библиотека для работы с матрицами и её прелесть в том, что она оперирует векторами и работает ГОРАЗДО быстрее, чем обычные циклы. Для того, чтобы сохранить это достоинство при бектестах я использую логарифмическую доходность (log-return на английском). Не ручаюсь за русские термины, так как узнал про них из англоязычных статей. Написанное ниже не истина в первой инстанции, а моя попытка разобраться как это всё работает чтобы применять на практике. Если я не прав, напишите. Я хоть и защищал кандидатскую диссертацию, но не по математике или экономике.

Немного теории



Логарифмическая доходность — разница стоимости актива в разные промежутки времени в процентах. Рассчитываеся по такой формуле:  
Быстрый бектестинг стратегии на python с pandas


Формула для расчёта логарифмической доходности, логарифм натуральный

Теперь на примере акций теслы. Цена по дням:  

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

Простой бот для крипто биржи 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

Простой торговый робот для биржи Binance без индикаторов

Ссылка на код на github в телеграме

Бот исключительно в демонстрационных целях. Когда я писал своего первого бота мне не хватало чего-то такого.

Идею для торговой стрегии взял из книги Ларри Вильямса «Долгосрочные секреты краткосрочной торговли» и слегка упростил. Он называет это прорыв волатильности. В чём суть:
— считаем разницу между хай и лоу предыдущей свечи
— к цене открытия текущей свечи прибавляем разницу из предыдущего пункта, это и будет ценой для входа в позицию
— если цена достигла этой цены покупаем
— выход на октрытии следующего бара

Всё. Максимально просто.

Теперь ещё раз то же самое на примере.
— Хай прошлой свечи 251 USDT, лоу 248 USDT. Разница 3 USDT.
— Открытие текущей свечи 250 USDT. Цена входа 253 USDT.
— Как только цена достигла 253 USDT покупаем 0,1 BNB
— На следующем открытии свечи выходим. Если цена выше, то заработали что-то, если нет, то нет.

Торговая пара BNB/USDT с биржи binance.

В боте я рассматриваю минутный таймфрейм, чтобы можно было быстро посмотреть что и как работает.

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

Покупка на прорыве волатильности для 15 активов

Сегодня рассмотрю как работает идея по покупке на прорыве волатильности у разных классов автивов. Для тех кто забыл, что это такое, напомню:

Считаем диапазон предыдущего дня как хай минул лоу. К открытию нового дня прибавляет диапазон предыдущего дня и ждём пока цена дойдёт до этого уровня. Если дошла, то покупаем. Выходим на следущий день, если открытие выше точки входа.

Стоп можно ставить двумя способами:
1. Из точки входа вычитаем часть дипазона предыдущего дня, например половину.
2. Можно ставить стоп на уровне потери какого-то процента депозита.

Ни один из этих стопов может не сработать, например во время гэпа, поэтому точно следует выходить через несколько дней. Я считал выход через 4 дня.

В прошлый раз рассматривал оптимизацию стратегии по диапазону прошлого дня. Брал диапазон от 20% до 190% предыдущего дня и прибавлял к открытию. В этот раз буду рассматривать два параметра:
— процент от диапазона прошлого дня (от 40% до 120% с шагом 20%)

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

Покупка на прорыве волатильности с разными параметрами

В прошлой заметке рассмотрел идею покупки на прорыве волатильности. В чем суть:

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

У этой стратегии есть недостаток. Могут быть гэпы и тогда стратегия нe выходит из сделки очень долго. Есть несколько случаев, когда в сделке статегия находилась больше 100 дней. Я добавил несколько доп условий, чтобы этого избежать:
— Если стоп не попадает в диапазон дня, ставим стоп на уровень хая этого дня и пробуем по нему выйти на следующий день. Для продаж стоп на уровень лоу дня.
— Если через 5 дней так и не вышли, то выходим по открытию.

Общие показатели немного ухудшились, но время нахождения в сделке теперь не больше 5 дней. Вот такой график на акциях сбера. Напомню, что учитывал комиссю в 0,05% в одну сторону. То есть на круг 0,1%.

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

Покупка на прорыве волатильности

Читаю дальше книгу Ларри Вильямса и дошёл до следующей торговой идеи:
Рисунок 4.5 показывает результаты ежедневной покупки и продажи фьючерса на бонды по цене открытия дня на расстоянии 100 процентов величины диапазона предыдущего дня выше цены открытия для длинной позиции и 100 процентов величины диапазона предыдущего дня ниже цены открытия для короткой позиции. Защитный стоп-ордер выставляется на уровне 1500$ или 50-процентной величины диапазона предыдущего дня, вычитаемой из точки нашего входа. В то же самое время, для выхода применяется техника катапультирования (bailout) или первое после входа открытие позиции с плюсом. (стр. 185)

Сформулирую кратко ещё раз.

Покупки. Дожидаемся открытия дня. Откладываем вверх диапазон предыдущего дня и входим на этом уровне. Если в этот день нет такой цены, то не входим и завтра считаем заново. Выход по следующему открытию выше точки входа. Стоп на уровне точки входа минус половина диапазона предыдущего дня.

Продажи наоборот. Дожидаемся открытия дня. Откладываем вниз диапазон предыдущего дня и входим на этом уровне. Если в этот день нет такой цены, то не входим и завтра считаем заново. Выход по следующему открытию ниже точки входа. Стоп на уровне точки входа плюс половина диапазона предыдущего дня.

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

Продавать на закрытии и покупать на открытии = 800% прибыли (на самом деле нет)

В ноябре на смартлабе был пост с супер статегией: продавать на закрытии дня, покупать на открытии. Получишь 800%. Захотелось проверить самому, действительно ли это так.

Итак, SPY с 1993 года. Рассмотрю несколько вариантов:
1. Покупка на закрытии дня и продажа на открытии следующего
2. Покупка на открытии дня и продажа на закрытии этого же дня
3. Проверю ещё наоборот. Продажа на закрытии дня и покупка на открытии следующего дня
4. Продажа на отрытии дня и покупка на закрытии этого же дня

Продавать на закрытии и покупать на открытии = 800% прибыли (на самом деле нет)


Графики из статьи

Продавать на закрытии и покупать на открытии = 800% прибыли (на самом деле нет)

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

Как устанавливать стоп-слосс в торговой стратегии

Стратегия очень простая. Дневной таймфрейм. Акции сбербанка. Ждём 4 закрытия подряд вниз (когда закрытие ниже открытия). На следующий день на открытии дня покупаем, а на закрытии продаём. Повторяем тоже самое для продаж, только наоборот. Ждём 4 закрытия подряд вверх. На следующий день продаём на открытии и откупаем на закрытии. Всё это делаем с 5 плечом. Комиссию я считал 0,06% за сделку.

Так выглядит график:
Как устанавливать стоп-слосс в торговой стратегии
График возврата при 4 одинаковых закрытиях подряд и 5 плече

Как видно до 1 октября 2020 (пунктирная линия) график выглядел отлично. Сегодня посчитал до 1 декабря и всё уже не так радужно. Но тем интереснее будет понять, как на стратегию повлияет стоп-лосс. Нужно найти такой стоп, который будет уменьшать максимальные потери, но при этом и не уменьшать возможные выигрыши. Ведь по стопу может выбить раньше, чем будет закрытие.

Посмотрим на сделки при покупках. Пока будем смотреть на сделки без плеча. Добавим график на сколько цена движется вниз от открытия до лоу.

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

Фьчерс сбера вместо акций — убираем комиссию

Прежде всего хочу извиниться. В прошлой заметке я неправильно посчитал комиссии. Не учёл влияние плеча на комиссии. Если посчитать как нужно, то депозит увеличится не в 120 раз, а «всего» в 40. Вот так это выглядит на графике:

Фьчерс сбера вместо акций — убираем комиссию
График возврата с различными плечом и правильно посчитанными комиссиями

Ну и в этом контексте мне подумалось, что можно посчитать ту же самую стратегию на фьючерсах сбербанка. Условно можно считать комисию равной 0. Графики:

Фьчерс сбера вместо акций — убираем комиссию

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

теги блога zenoftrading

....все тэги



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