
Тут кое-кто в ленте с почти тыщей подписчиков утверждает, что рынок — это случайный процесс, хаос и вообще там ничего предсказать невозможно.
Цитата: «Поэтому все кто работает со стоп-лоссами неизбежно сливают свои депозиты.»
Ну что ж, давайте выдам базу...
За последние пару месяцев я в очередной раз глубоко погрузился в статистические исследования нашего рынка. Написал уже кучу скриптов для выявления аномалий и закономерностей. Написал симулятор стратегий и параллельного поиска лучших параметров на GPU. Этакий TSLab, но блэкджеком и GPU. Так вот, после того, как я начал пользоваться этим параллельным симулятором, который за несколько секунд находит лучшие параметры из миллиона на годовом отрезке на секундном таймфрейме, я про наш рынок узнал на порядок больше, чем от всех прочитанных псевдогуру вместе взятых.
Итак, база:
Пишешь код на 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=это прибыль на месяце, следующем за обучающим)
А ниже суммарный анализ одной из недель:
Судя по всему, этот год я проведу в исследованиях нейросетей для трейдинга. За то время, что уже потратил на эту тему, у меня сформировалась интересная подборка про нейросети в контексте трейдинга:
(Не буду расшифровывать каждый тезис, это можно сделать с помощью ИИ)


Прошёл уже почти год, как сделал надстройку над терминалом квик, чтобы торговать было не так лениво: Я самый ленивый трейдер. За всё это время воспользовался им всего несколько раз. Проблема в том, что какой бы ни был совершенный инструмент для торговли, без статистически подтвержденной стратегии шансы на удачу, даже краткосрочную, довольно невелики. А я человек простой: не вижу — не еду. Пересиживаю в фондах ликвидности и флоатерах, иногда запрыгиваю в акции, чтобы прокатиться на очевидной волне с минимальным риском.
Математическая постановка проблемы:
1) Допустим, есть исторические данные за год в секундном таймфрейме.
2) Есть торговая стратегия, алгоритм которой фиксирован, но имеет ряд параметров.
3) Допустим, параметров 6, по 10 значений в каждом параметре. Это уже миллион комбинаций.
4) Симуляция на питоне одного инструмента за год на секундном таймфрейме занимает ~4 секунды.
Миллион комбинаций на 4 секунды = 4 миллиона секунд ~ 12 дней симуляции, чтобы проверить один инструмент на одной стратегии. Это минимальная оценка при наивной реализации.