Блог им. ArhipovVladimir
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% для этого недостаточны.