Блог им. ArhipovVladimir

Нейросеть и скальпинг

С трендингом практически не знаком, занимаюсь разработкой программных решений.
Вдохновлённый теорией пузырькового состояния, и сделав предположение, что у цены на рынке есть инерция как у физического объекта — попробовал несколько вариантов как подготовить данные и какую архитектуру нейросети построить, вроде есть какой-то успех.
Обучалось на USD000UTSTOM2023 — данные за каждую минуту 2023 года. По последним 60 шагам предсказываем тренд направления цены в течение следующих 5ти минут.
Результаты обучения такие:
=== РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ ===
Потери по инерции (MSE): 0.006449
Потери по направлению (BCE): 0.612085
Точность предсказания направления: 0.7300
Средняя предсказанная инерция: 0.9013
Реальная средняя инерция: 0.9057

Далее провёл дополнительную перепроверку:
1. ТОЧНОСТЬ ПРОГНОЗА НАПРАВЛЕНИЯ:
   Всего прогнозов: 169411
   Правильных: 126161
   Точность: 0.7447 (74.47%)

   Матрица ошибок:
   True 0 (↓) predicted as 0: 65485
   True 0 (↓) predicted as 1: 18016
   True 1 (↑) predicted as 0: 25234
   True 1 (↑) predicted as 1: 60676

   Средняя ошибка силы инерции: 0.0592

2. РЕЗУЛЬТАТЫ ТОРГОВЛИ:
   Всего сделок: 169324
   Прибыльных сделок: 82077
   Сделок с правильным направлением: 115947
   Успешность: 0.4847 (48.47%)
   Точность направления в сделках: 0.6848
   Общий P&L: 180.2525
   Средний P&L за сделку: 0.0011
   Средний P&L в %: 0.0013%

3. ДЕТАЛИЗАЦИЯ ПО ТИПАМ СДЕЛОК:
   LONG сделок: 78691
   Успешность LONG: 0.5061
   SHORT сделок: 90633
   Успешность SHORT: 0.4661

4. ЗАВИСИМОСТЬ ОТ СИЛЫ СИГНАЛА:
   Сигнал [0.70-0.75]:  145 сделок, успешность 0.4759, точность напр. 0.6690
   Сигнал [0.75-0.80]:  420 сделок, успешность 0.5786, точность напр. 0.6714
   Сигнал [0.80-0.85]: 2075 сделок, успешность 0.4872, точность напр. 0.6593
   Сигнал [0.85-0.90]: 62039 сделок, успешность 0.4900, точность напр. 0.7087
   Сигнал [0.90-0.95]: 103658 сделок, успешность 0.4795, точность напр. 0.6711
   Сигнал [0.95-1.00]:  886 сделок, успешность 0.6524, точность напр. 0.6772

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

Так же провёл обучение на настройками прогноза тренда на 1 минуту вперёд, результаты такие:
=== РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ ===
Потери по инерции (MSE): 0.007061
Потери по направлению (BCE): 0.316872
Точность предсказания направления: 0.8728
Средняя предсказанная инерция: 0.8964
Реальная средняя инерция: 0.9004

Результаты дополнительной проверки обученной модели по 1 минуте:
Загружено 169488 записей
Период данных: 2023-01-03 04:00:00+00:00 — 2023-12-19 15:59:00+00:00

2. ПОДГОТОВКА ДАННЫХ ДЛЯ ПРОГНОЗА...
   Размерность матрицы признаков: (169488, 15)

3. ЗАГРУЗКА МОДЕЛИ...
   Расчетный размер входа: 977
   Модель успешно загружена с trained_inertia_predictor1min.pth

4. ВЫПОЛНЕНИЕ ПРОГНОЗА С ИДЕНТИЧНЫМ РАСЧЕТОМ ЦЕЛЕЙ...

Делаем прогнозы для 169415 точек...

5. АНАЛИЗ РЕЗУЛЬТАТОВ...

============================================================
ДЕТАЛЬНЫЙ АНАЛИЗ РЕЗУЛЬТАТОВ (ИДЕНТИЧНЫЙ РАСЧЕТ)
============================================================

1. ТОЧНОСТЬ ПРОГНОЗА НАПРАВЛЕНИЯ:
   Всего прогнозов: 169415
   Правильных: 148505
   Точность: 0.8766 (87.66%)

   Матрица ошибок:
   True 0 (↓) predicted as 0: 71206
   True 0 (↓) predicted as 1: 12295
   True 1 (↑) predicted as 0: 8615
   True 1 (↑) predicted as 1: 77299

   Средняя ошибка силы инерции: 0.0624

2. РЕЗУЛЬТАТЫ ТОРГОВЛИ:
   Всего сделок: 169275
   Прибыльных сделок: 75265
   Сделок с правильным направлением: 78295
   Успешность: 0.4446 (44.46%)
   Точность направления в сделках: 0.4625
   Общий P&L: -5.8775
   Средний P&L за сделку: -0.0000
   Средний P&L в %: -0.0000%

3. ДЕТАЛИЗАЦИЯ ПО ТИПАМ СДЕЛОК:
   LONG сделок: 89587
   Успешность LONG: 0.4670
   SHORT сделок: 79688
   Успешность SHORT: 0.4195

4. ЗАВИСИМОСТЬ ОТ СИЛЫ СИГНАЛА:
   Сигнал [0.70-0.75]:   99 сделок, успешность 0.3838, точность напр. 0.3737
   Сигнал [0.75-0.80]:  502 сделок, успешность 0.4044, точность напр. 0.4143
   Сигнал [0.80-0.85]:  900 сделок, успешность 0.4156, точность напр. 0.4356
   Сигнал [0.85-0.90]: 134851 сделок, успешность 0.4483, точность напр. 0.4689
   Сигнал [0.90-0.95]: 32597 сделок, успешность 0.4307, точность напр. 0.4374
   Сигнал [0.95-1.00]:  271 сделок, успешность 0.4834, точность напр. 0.4982

Хотя точность по 1 минуте выше, но доходность получается отрицательная, по 5 минутам положительная, хотя точность ниже, что для меня не совсем укладывается в голове… Поэтому прошу помочь разобраться в теме данного исследования.
Анализ результатов делал таким кодом:
# 6. ФУНКЦИЯ АНАЛИЗА РЕЗУЛЬТАТОВ
def analyze_results(all_predictions, trade_results):
    """Детальный анализ качества прогнозов и торговых результатов"""
    
    print("\n" + "="*60)
    print("ДЕТАЛЬНЫЙ АНАЛИЗ РЕЗУЛЬТАТОВ (ИДЕНТИЧНЫЙ РАСЧЕТ)")
    print("="*60)
    
    # Анализ прогнозов направления
    if all_predictions:
        correct_directions = sum(p['correct_direction'] for p in all_predictions)
        total_predictions = len(all_predictions)
        accuracy = correct_directions / total_predictions if total_predictions > 0 else 0
        
        print(f"\n1. ТОЧНОСТЬ ПРОГНОЗА НАПРАВЛЕНИЯ:")
        print(f"   Всего прогнозов: {total_predictions}")
        print(f"   Правильных: {correct_directions}")
        print(f"   Точность: {accuracy:.4f} ({accuracy*100:.2f}%)")
        
        # Матрица ошибок
        actual_dirs = [p['actual_direction'] for p in all_predictions]
        pred_dirs = [p['pred_direction'] for p in all_predictions]
        
        if total_predictions > 0:
            cm = confusion_matrix(actual_dirs, pred_dirs)
            print(f"\n   Матрица ошибок:")
            print(f"   True 0 (↓) predicted as 0: {cm[0,0]}")
            print(f"   True 0 (↓) predicted as 1: {cm[0,1]}")
            print(f"   True 1 (↑) predicted as 0: {cm[1,0]}")
            print(f"   True 1 (↑) predicted as 1: {cm[1,1]}")
            
            # Анализ силы инерции
            strength_error = np.mean([p['strength_error'] for p in all_predictions])
            print(f"\n   Средняя ошибка силы инерции: {strength_error:.4f}")
    
    # Анализ торговых результатов
    if trade_results:
        total_trades = len(trade_results)
        successful_trades = sum(1 for t in trade_results if t['success'])
        correct_direction_trades = sum(1 for t in trade_results if t['correct_trade'])
        success_rate = successful_trades / total_trades if total_trades > 0 else 0
        direction_accuracy = correct_direction_trades / total_trades if total_trades > 0 else 0
        
        total_pnl = sum(t['pnl'] for t in trade_results)
        avg_pnl = total_pnl / total_trades if total_trades > 0 else 0
        avg_pnl_pct = sum(t['pnl_pct'] for t in trade_results) / total_trades if total_trades > 0 else 0
        
        # Разделяем LONG и SHORT
        long_trades = [t for t in trade_results if t['direction'] == 'LONG']
        short_trades = [t for t in trade_results if t['direction'] == 'SHORT']
        
        print(f"\n2. РЕЗУЛЬТАТЫ ТОРГОВЛИ:")
        print(f"   Всего сделок: {total_trades}")
        print(f"   Прибыльных сделок: {successful_trades}")
        print(f"   Сделок с правильным направлением: {correct_direction_trades}")
        print(f"   Успешность: {success_rate:.4f} ({success_rate*100:.2f}%)")
        print(f"   Точность направления в сделках: {direction_accuracy:.4f}")
        print(f"   Общий P&L: {total_pnl:.4f}")
        print(f"   Средний P&L за сделку: {avg_pnl:.4f}")
        print(f"   Средний P&L в %: {avg_pnl_pct:.4f}%")
        
        print(f"\n3. ДЕТАЛИЗАЦИЯ ПО ТИПАМ СДЕЛОК:")
        if long_trades:
            long_success = sum(1 for t in long_trades if t['success']) / len(long_trades) if long_trades else 0
            print(f"   LONG сделок: {len(long_trades)}")
            print(f"   Успешность LONG: {long_success:.4f}")
        
        if short_trades:
            short_success = sum(1 for t in short_trades if t['success']) / len(short_trades) if short_trades else 0
            print(f"   SHORT сделок: {len(short_trades)}")
            print(f"   Успешность SHORT: {short_success:.4f}")
        
        # Анализ зависимости успеха от силы сигнала
        print(f"\n4. ЗАВИСИМОСТЬ ОТ СИЛЫ СИГНАЛА:")
        strength_bins = [0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0]
        for i in range(len(strength_bins) - 1):
            low = strength_bins[i]
            high = strength_bins[i + 1]
            bin_trades = [t for t in trade_results if low <= t['pred_strength'] < high]
            if bin_trades:
                bin_success = sum(1 for t in bin_trades if t['success']) / len(bin_trades)
                bin_direction_acc = sum(1 for t in bin_trades if t['correct_trade']) / len(bin_trades)
                print(f"   Сигнал [{low:.2f}-{high:.2f}]: {len(bin_trades):4d} сделок, успешность {bin_success:.4f}, точность напр. {bin_direction_acc:.4f}")
    
    else:
        print("Нет сделок для анализа. Попробуйте уменьшить inertia_threshold.")
    
    return all_predictions, trade_results


| ★3
20 комментариев
Ох уж эти кодописцы, заложите хотя бы 0.04% комиссии на сторону и 0.01% на проскальзывание
avatar
на рынке есть инерция как у физического объекта —
есть такое и если научится видеть первичный толчок то легко отыграть весь лонг и уйти  в деньгами
я в так играю на дневках
но никакой математики 

чистый интуитив
Валерий Осипенко, а как вы расчитывайте эффект прилипал? Импульс то один может дать но если поддержат прилипалы то расчет разгона непредсказать
avatar
Booppa, честно 
ничего не рассчитываю в смысле в цифрах
вот к примеру завтра у моей акции будет свечка или зеленая или красная 
ВСЕ
иных вариантов нет 
а это уже казино с двумя цифирками
далее как хороший экстрасенс погружаешься  в параллельность и пытаешь увидить завтрашний цвет 
и делаешь ставку 
но это почти шутка
да, есть патерны, но предпочитаю свои 
да есть закономерности 
но предпочитаю образные аналогии типа устала или давай еще 
в среднем рост по дневкам не более 4 х дней подряд 
и прочие закономерности 
например два красных потом три зеленых 
я применил этот опыт после просмотра французского фильма  называется который Мотылек 
а еще надо смоттреть разные ТФ от 10 минут до месяца 
там видать движуха  как в балете с разного расстояния 
короче примерно так сейчас потому что я понял что с математикой тут я ничего не наскребу, а просто так тыкать пальцем в небо неохота 
ну и смотрю в суть генерации прибыли в акции 
сейчас вот прифигел от электриков 
короче у них стабильный доход, но акции в мерцающем режиме хорошо прыгают а главное без неожиданностей 
особенно местные 
ну где то так, хотя и сам себе не пытаюсь пояснить свой метод 
не формализуется 
но чуйка выработалась  и отросла точно 
3 года как никак в игре
доволен
Валерий Осипенко, давай так. Скинь прям сейчас прогнозы на газпром сбер и втб. Завтра вечером сверим результаты. Уж больно нехило 0.8 исполнения прогнозов
avatar
Booppa, газпром — будет бомба 
банки нету мощей для взлета 
газпром генерит от реальности 
банки от виртуальности
я держу баластом БСП 
8 исков за три года это мощная машина 
но это мой аналоговый прогноз 
я чисто муха 
крохи собираю и раз тому 
а лучше найди годовой ТФ и посмотри что там вырисовывается на этот год 
% угаданных направлений сделки не важен. Скажу больше, в прибыльных трендовых системах часто 30% угаданных направлений, а 70% не угаданных, и это приносит прибыль, а в убыточных, например в Мартингейле может быть наоборот 95% угаданных и 5 не угаданных и разоривших депозит.

Переведите результаты в понятные в системном трейдинге: Итог/Дродаун, Средняя сделка%, Профит фактор и т.д. Тогда результаты будут понятны ваших изысканий.  
avatar
T-800, верно. Когда-то, когда на москухне ещё торговался USDRUB, наэксперементировал такую стратегию, где стоп-лосс был всего 5 копеек (!!!)

Так, процент выходов по стопу был в районе 95% (что вполне понятно). Зато оставшиеся 5% удачных сделок давали потрясающий результат, который перекрывал потери от стопов и давал приличный профит 
Если 5 м лучше, чем 1 м, может быть стоит перейти к 15 м или 1 час? 
Транзакционные издержки на каждую смену позиции учитывать обязательно надо. 
1 год статистики мало. 
Обязательно считать капитал после каждой сделки. Тогда можно использовать стандартные метрики, типа Сортино и максимальной просадки.
avatar
Архипов Владимир
С трендингом практически не знаком, занимаюсь разработкой программных решений.

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

Существенная разница между Вами и этим человеком в том, что в зеркальном случае компилятор завернет претендента на первой лексеме. А на бирже компилятора на входе нет. И даже обезьянка Лукерья может обойти профессиональных управляющих.
www.kommersant.ru/doc/3569733

Так что пополняйте депозит и дерзайте!

PS. Данная информация не является индивидуальной инвестиционной рекомендацией, и финансовые инструменты либо операции, упомянутые в ней, могут не соответствовать Вашему инвестиционному профилю и инвестиционным целям (ожиданиям).
avatar
Хорошая воскресная шутка. Теорией пузырькового состояния, говорите, вдохновлены? Благородно, ничего сказать не могу. Правда, теория пузырькового состояния, как мне помнится, относится к теме возможных теорий о происхождении вселенной и суть ее в том, что пространство и время после Большого взрыва неоднородны. А вот за термины прогнозирование, инерция (предпочитаю термин импульс) и точность прогноза — искреннее человеческое спасибо. Но предупреждаю — тут за такие термины чуть ли не канделябрами бьют особо нервные и просадившие пару-другую депозитов. В рамках пузырьковой теории — пригублю 75 грамм, правда предпочитаю непузырящиеся жидкости )))

Средний P&L в %: 0.0013%


Это мусор возле нуля. Поэтому и знак финреза скачет при переходе M5<->M1. Это не потому что M5 лучше, а потому что вы шум вселенной замеряете.


Даже с стратегиями типа 0.05% на сделку нужно нормально учитывать комиссии и особенности исполнения. Пренебрегать мелочами можно начинать с 2-3% на сделку, это совсем другой класс стратегий.

avatar
 Дипсик дал такой ответ, который всё объясняет

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

А теперь подробное объяснение.

1. Математика прибыли

Представим, у вас есть капитал в 100 000 рублей.

  • Изменение цены (ваша потенциальная прибыль): 0.50% = 500 рублей.

  • Комиссия за сделку (покупка + продажа): 0.3% * 2 = 0.6%.

    • Комиссия на покупку: 100 000 * 0.3% = 300 руб.

    • Комиссия на продажу: (100 000 + 500) * 0.3% ≈ 301.5 руб. (для простоты будем считать 300)

    • Итого комиссия: ~600 рублей.

Результат: Ваша потенциальная прибыль (500 руб.) полностью съедается комиссией (600 руб.). Вы уходите в минус 100 рублей, даже если правильно угадали направление движения цены.

Чтобы остаться в плюсе, цена должна двигаться достаточно сильно, чтобы покрыть комиссию И дать вам прибыль.

  • Точка безубыточности: Минимальное движение цены, необходимое только для покрытия комиссии. В вашем случае это 0.6% (0.3% * 2).

  • Цель для прибыли: Вам нужно движение цены больше, чем 0.6%, чтобы хоть что-то заработать. Ваши 0.5% для этого недостаточны.

 а на этой паре изменение цены за два дня — 0.5%
Кроме количества сделок нужно ещё рассчитать насколько они были прибыльными. Потому, что легко построить систему, в которой количество правильно угаданных направлений будет большим, но при этом даже малое количество ошибочных приведёт к существенным убыткам потому, что движения были большими.
avatar

Читайте на SMART-LAB:
Фото
Родители перечислили наиболее подходящие подработки для детей
В топ-3 самых популярных профессий вошел курьер (57%), фрилансер в интернете (54%) и креативщик (50%). В пятерку оптимальных для подработки...
Фото
Самые волатильные акции за ту неделю — куда на этой?
На широком рынке — заминка на подъеме, за неделю бенчмарк прибавил менее процента. Амплитуда колебаний исторически турбулентных бумаг достигала...
Премаркет. Обзор рынка
⚡️ Куда пойдёт рынок на этой неделе? Где прячется движение и как на нём заработать? Ответы – в прямом эфире на Трейдер ТВ....

теги блога Архипов Владимир

....все тэги



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