С трендингом практически не знаком, занимаюсь разработкой программных решений.
Вдохновлённый теорией пузырькового состояния, и сделав предположение, что у цены на рынке есть инерция как у физического объекта — попробовал несколько вариантов как подготовить данные и какую архитектуру нейросети построить, вроде есть какой-то успех.
Обучалось на 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
я в так играю на дневках
но никакой математики
чистый интуитив
ничего не рассчитываю в смысле в цифрах
вот к примеру завтра у моей акции будет свечка или зеленая или красная
ВСЕ
иных вариантов нет
а это уже казино с двумя цифирками
далее как хороший экстрасенс погружаешься в параллельность и пытаешь увидить завтрашний цвет
и делаешь ставку
но это почти шутка
да, есть патерны, но предпочитаю свои
да есть закономерности
но предпочитаю образные аналогии типа устала или давай еще
в среднем рост по дневкам не более 4 х дней подряд
и прочие закономерности
например два красных потом три зеленых
я применил этот опыт после просмотра французского фильма называется который Мотылек
а еще надо смоттреть разные ТФ от 10 минут до месяца
там видать движуха как в балете с разного расстояния
короче примерно так сейчас потому что я понял что с математикой тут я ничего не наскребу, а просто так тыкать пальцем в небо неохота
ну и смотрю в суть генерации прибыли в акции
сейчас вот прифигел от электриков
короче у них стабильный доход, но акции в мерцающем режиме хорошо прыгают а главное без неожиданностей
особенно местные
ну где то так, хотя и сам себе не пытаюсь пояснить свой метод
не формализуется
но чуйка выработалась и отросла точно
3 года как никак в игре
доволен
банки нету мощей для взлета
газпром генерит от реальности
банки от виртуальности
я держу баластом БСП
8 исков за три года это мощная машина
но это мой аналоговый прогноз
я чисто муха
крохи собираю и раз тому
а лучше найди годовой ТФ и посмотри что там вырисовывается на этот год
Переведите результаты в понятные в системном трейдинге: Итог/Дродаун, Средняя сделка%, Профит фактор и т.д. Тогда результаты будут понятны ваших изысканий.
Так, процент выходов по стопу был в районе 95% (что вполне понятно). Зато оставшиеся 5% удачных сделок давали потрясающий результат, который перекрывал потери от стопов и давал приличный профит
Транзакционные издержки на каждую смену позиции учитывать обязательно надо.
1 год статистики мало.
Обязательно считать капитал после каждой сделки. Тогда можно использовать стандартные метрики, типа Сортино и максимальной просадки.
Для начала попробуйте отзеркалить ситуацию. Приходит к Вам человек и говорит — «С программированием практически не знаком, занимаюсь розливом пива, поэтому много понимаю в пузырьках. Слушал у Вас тоже сортируют пузырьком. Возьмите программистом, хочу много денег».
Существенная разница между Вами и этим человеком в том, что в зеркальном случае компилятор завернет претендента на первой лексеме. А на бирже компилятора на входе нет. И даже обезьянка Лукерья может обойти профессиональных управляющих.
www.kommersant.ru/doc/3569733
Так что пополняйте депозит и дерзайте!
PS. Данная информация не является индивидуальной инвестиционной рекомендацией, и финансовые инструменты либо операции, упомянутые в ней, могут не соответствовать Вашему инвестиционному профилю и инвестиционным целям (ожиданиям).
Это мусор возле нуля. Поэтому и знак финреза скачет при переходе M5<->M1. Это не потому что M5 лучше, а потому что вы шум вселенной замеряете.
Даже с стратегиями типа 0.05% на сделку нужно нормально учитывать комиссии и особенности исполнения. Пренебрегать мелочами можно начинать с 2-3% на сделку, это совсем другой класс стратегий.
Нет, скальпировать с такими условиями практически невозможно для стабильного заработка. Это верный путь потерять деньги на комиссиях.
А теперь подробное объяснение.
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% для этого недостаточны.