Михаил Михалёв

Читают

User-icon
18

Записи

27

Было страшно... и правильно.

Запустил в демо режиме стратегию в конце декабря 
Было страшно... и правильно.
а к концу января имел уже такую картину:


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

Случайности не случайны.

Тут кое-кто в ленте с почти тыщей подписчиков утверждает, что рынок — это случайный процесс, хаос и вообще там ничего предсказать невозможно.

 

Цитата: «Поэтому все кто работает со стоп-лоссами неизбежно сливают свои депозиты.»

 

Ну что ж, давайте выдам базу...

 

За последние пару месяцев я в очередной раз глубоко погрузился в статистические исследования нашего рынка. Написал уже кучу скриптов для выявления аномалий и закономерностей. Написал симулятор стратегий и параллельного поиска лучших параметров на GPU. Этакий TSLab, но блэкджеком и GPU. Так вот, после того, как я начал пользоваться этим параллельным симулятором, который за несколько секунд находит лучшие параметры из миллиона на годовом отрезке на секундном таймфрейме, я про наш рынок узнал на порядок больше, чем от всех прочитанных псевдогуру вместе взятых.

 

Итак, база:

  1. Рынок это не чисто случайный процесс. Хоть график случайного дрейфа на большой дистанции и имеет все рисунки теханализа, это не достаточная причина утверждать что-либо о связи теханализа и рынка.


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

Танцуем Numba

Пишешь код на python, а он тормозит и хочется взять и переписать на C++?
Не надо так! Современный С++ компилятор имеет под капотом LLVM, но современный python настолько мощный, что можно использовать тот же самый LLVM, чтобы получить скорость сопоставимую с C++. Вот типичный пример того, что на голом python будет работать мучительно долго: 

import time
import numba
import numpy as np

@numba.jit(nopython=True)
def calculate_max_drawdown(initial_cash: float, cashes: np.ndarray) -> float:
    """Расчет максимальной просадки"""
    peak = initial_cash
    max_dd = 0.0

    for cash in cashes:
        if cash > peak:
            peak = cash
        dd = (peak - cash) / peak
        if dd > max_dd:
            max_dd = dd

    return max_dd

# Вариант без Numba для сравнения
def calculate_max_drawdown_pure(initial_cash: float, cashes: np.ndarray) -> float:
    peak = initial_cash
    max_dd = 0.0

    for cash in cashes:
        if cash > peak:
            peak = cash
        dd = (peak - cash) / peak
        if dd > max_dd:
            max_dd = dd

    return max_dd

def test_calculate_max_drawdown():
    n = 1_000_000  # 1 миллион точек
    returns = np.


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

Послушайте эксперта и сделайте наоборот, но потом верните всё обратно.

«Послушайте эксперта и сделайте наоборот» — говорили они.

Сижу, никого не трогаю, исследую плотности траекторий цен при определенных условиях индикаторов.
Послушайте эксперта и сделайте наоборот, но потом верните всё обратно.

Нашёл явную асимметрию траекторий. Дай, думаю, проверю на симуляции. Проверяю — получается какая-то дичь. Ничего понять не могу, как такое может случиться. Только после изучения распределения профита по сделкам вспомнил, что кто-то в бреду перед сном решил проверить эту идею(сделай наоборот) и забыл откатить:


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

Генетика - мастер адаптации

Продолжаю экспериментировать с нейросетями и генетическими алгоритмами.

 

Эволюционный алгоритм за несколько десятков поколений на популяции в несколько раз больше количества параметров нейросети нашёл параметры нейросети, которая ракетит используя неэффективость… 

Генетика - мастер адаптации

(тут val_profit=это прибыль на месяце, следующем за обучающим)
А ниже суммарный анализ одной из недель:



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

Нейросети как люди.

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

 

  • Нейросети как люди: чем тупее, тем лучше для тех, кто их использует.
  • Нейросети как люди: одна голова — хороша, а две — лучше.
  • Нейросети как люди: не надо оценивать эффективность только по заработанному кэшу.
  • Нейросети как люди: если их больше наказывать, чем поощрять, то результат будет стабильнее, но если совсем не поощрять, то результат будет отрицательный.
  • Нейросети как люди: их нельзя заставить понять то, чего не существует.
  • Нейросети как люди: не только лишь все могут смотреть в завтрашний день.
  • Нейросети как люди: перегрузка информацией не улучшает результат.
  • Нейросети как люди: специализация важнее эрудиции.
  • Нейросети как люди: дисциплина важнее внезапных просветлений.
  • Нейросети как люди: никто не вечен.

 

(Не буду расшифровывать каждый тезис, это можно сделать с помощью ИИ)



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

Во что инвестировал в этом году.

Инвестировал как обычно: в связи, нейронные связи:) DeepSeek очень сильно бустит обучение во многих темах и DeepSeek — это пожалуй лучшее, что случилось со мной в этом году. Изучил глубже парочку языков программирования и целый ряд технологий, которые могут быть востребованы в будущем, — это как бэкап план на случай неуспеха в алготрейдинге.

В конце того года был генеральный план на этот год переложиться в акции, но этот план пришлось отменить. Немного спекульнул акциями на мирных ожиданиях и снова сижу в фондах ликвидности и флоатерах.

Что писал год назад:
2025-01-15: Кто следующий после транснефти?
2024-12-26: Не разворот и не отскок
2024-09-09: Не верю в рост рынка РФ
2024-09-03: Геополитика всему голова
2024-08-27: Высокая доходность безрисковой не бывает




Нельзя просто так взять и починить краш. Когда быки и медведи плачут вместе.

Я вот эту картину наблюдаю уже давно почти каждый день по нескольку раз в день. Нас не уважают? Плюсуйте у кого то же самое.

Нельзя просто так взять и починить краш. Когда быки и медведи плачут вместе.




Страшно, очень страшно.

Этот год я занимался тем, чтобы сделать торгового робота, который бы зарабатывал внутридневными спекуляциями:

1) Нашёл повторяющийся паттерн на рынке.
2) Сделал систему для параллельного бэктестинга на GPU, чтобы быстро находить оптимальные параметры стратегии.
3) Нашёл статистически подтверждённую стратегию, которая работает на ликвидном инструменте с учётом проскальзывания, комиссий и задержек.
4) Сделал исполнительный механизм торгового робота и закодил алгоритм стратегии.
5) Сделал систему автоматического сбора, анализа и обновления рыночных данных для робота.
6) Запустил робота в песочнице для отладки на реальных данных с биржи.
7) Приделал уведомления об ошибках в телеграм.
8) Сделал даже доступ к контрольной панели роботов через телефон.
9) Плюс логи, вотчдоги, тяжелые вычисления в отдельном процессе и т.п.

Страшно, очень страшно.

И вроде бы все компоненты успеха есть, а всё равно страшно:)



Я самый ленивый трейдер, часть 3

Прошёл уже почти год, как сделал надстройку над терминалом квик, чтобы торговать было не так лениво: Я самый ленивый трейдер. За всё это время воспользовался им всего несколько раз. Проблема в том, что какой бы ни был совершенный инструмент для торговли, без статистически подтвержденной стратегии шансы на удачу, даже краткосрочную, довольно невелики. А я человек простой: не вижу — не еду. Пересиживаю в фондах ликвидности и флоатерах, иногда запрыгиваю в акции, чтобы прокатиться на очевидной волне с минимальным риском.


Математическая постановка проблемы:

1) Допустим, есть исторические данные за год в секундном таймфрейме.

2) Есть торговая стратегия, алгоритм которой фиксирован, но имеет ряд параметров.

3) Допустим, параметров 6, по 10 значений в каждом параметре. Это уже миллион комбинаций.

4) Симуляция на питоне одного инструмента за год на секундном таймфрейме занимает ~4 секунды.

 

Миллион комбинаций на 4 секунды = 4 миллиона секунд ~ 12 дней симуляции, чтобы проверить один инструмент на одной стратегии. Это минимальная оценка при наивной реализации.



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

теги блога Михаил Михалёв

....все тэги



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