Блог им. KuzmaShevelev

От зрения к мышлению: как создать алгоритм, который "понимает" рынок (Часть 1 - фундамент системы)

Введение: Искусственный трейдер

Представьте себе трейдера-виртуоза. Он с первого взгляда на график оценивает обстановку: «Цена росла последние полчаса — это неспроста», или «Падение было слишком сильным и резким — вряд ли кто-то рискнет штурмовать предыдущий максимум». Его решения основаны на опыте, интуиции и распознавании неочевидных даже для него самого паттернов.

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

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

Часть 1: Пропасть между человеком и машиной

Проблема в том, что фразы «сильное падение» или «ровный рост» для компьютера — просто бессмысленный набор символов. Что такое «сильно»? На 100 пунктов? На 1%? А «быстро» — это за минуту, час или день? Человеческий мозг оперирует контекстом и относительными понятиями, а машине нужны четкие, формализованные инструкции.

Наша задача — не заставить компьютер заучить десятки жестких правил («если падение более 1% за 5 минут, то это “сильно”»). Это тупиковый путь. Волатильность рынка постоянно меняется: то, что «сильно» для одного актива или временного периода, «слабо» для другого. Вместо этого мы должны научить его гибкости. Создать такой механизм, который сможет сам, как трейдер, оценивать обстановку, используя те самые «примерные» понятия. Нам нужен относительный, а не абсолютный подход.

Часть 2: Фундамент — учимся видеть кирпичики

Чтобы распознавать сложные паттерны — подобно тому, как мы узнаем знакомое лицо в толпе, — нужно сначала научиться различать отдельные черты: форму носа, изгиб бровей, линию губ. В анализе рынка таким фундаментальным «кирпичиком» является ценовой бар или свеча.

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

Создаем глоссарий для алгоритма: формальные критерии

Как же перевести вопросы «большой/маленький» или «сильный/слабый» на математический язык? Мы вводим формальные, но адаптивные критерии.

  • Размер бара: Мы сравниваем его тело или полный диапазон (high-low) с скользящей медианой диапазонов последних N баров. Бар, чей размер превышает 90-й перцентиль от недавней истории, — однозначно «большой». Тот, что ниже 30-го перцентиля — «маленький».

  • Сила/Направление: Мы оцениваем не только направление закрытия (вверх/вниз), но и долю тела от всего диапазона. Бар с длинным телом и короткими тенями — «сильный» бычий или медвежий. Бар с маленьким телом и длинными тенями — «нерешительный».

Таким образом, мы заменяем размытые понятия на конкретные, вычисляемые значения, основанные на текущем рыночном контексте.

Часть 3: Системный подход к выявлению рыночных закономерностей

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

От зрения к мышлению: как создать алгоритм, который "понимает" рынок (Часть 1 - фундамент системы)

Это гениальный в своей простоте способ «оцифровать» внутреннюю динамику свечи. Всего одно число от 1 до 9 — и мы уже понимаем, был ли это импульсный рост, нерешительная свеча или отскок от экстремумов. Мы получаем четкое представление о форме и внутренней силе движения.

Но здесь кроется ловушка.

Такой подход похож на то, как если бы мы описывали человека только по силуэту: «идет, сгорбившись» или «стоит, подняв голову». Это важно, но совершенно не отвечает на ключевые вопросы: А он высокий или низкий? Он стоит на плечах у предыдущего «игрока» или едва ему по пояс?

Наш цифровой код «9» говорит о сильном восходящем движении, но он не говорит:

  • Был ли этот мощный импульс всего лишь маленьким всплеском внутри вчерашней зоны консолидации?

  • Или это был настоящий гигант, который перекрыл максимум прошлой недели и обозначил новый уровень?

Мы узнали о форме, но остались в неведении о размере и месте в общей иерархии баров.

Объяснение второй классификации (размер/позиция)

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

Мы классифицируем положение бара относительно предыдущего:

  1. Поглощение (Engulfing): Текущий бар полностью «поглотил» диапазон предыдущего. Сильный сигнал.

  2. Внутридневной (Inside Bar): Текущий бар полностью находится внутри диапазона предыдущего. Нерешительность, консолидация.

  3. Внешний (Outside Bar): Текущий бар торговался и выше, и ниже предыдущего, но не смог его полностью поглотить.

  4. Смещение (Offset): Бар закрылся выше/ниже предыдущего, но не перекрыл его экстремум.

  5. Гэп (Gap): Между максимумом предыдущего и минимумом текущего бара (или наоборот) есть разрыв.

Каждая из этих ситуаций говорит рынку о разном балансе сил между быками и медведями.

 

От зрения к мышлению: как создать алгоритм, который "понимает" рынок (Часть 1 - фундамент системы)
От зрения к мышлению: как создать алгоритм, который "понимает" рынок (Часть 1 - фундамент системы)

Часть 4: Мощь объединенного подхода. Рождение языка

Как вы можете видеть на примерах выше, нам удалось найти способ лаконично описать две ключевые характеристики бара: его внутреннюю форму и относительный размер/положение в пространстве.

Что, если объединить оба этих измерения в единую систему координат для нашего алгоритма?

От зрения к мышлению: как создать алгоритм, который "понимает" рынок (Часть 1 - фундамент системы)
Вот что у нас получается. Комбинируя две классификации, мы создаем 153 уникальных состояния рынка. Цифра кажется большой? Давайте посмотрим на это под другим углом.

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

Мы не заваливаем машину данными, мы даём ей язык.

Всего одно число — от 1 до 153 — становится для нашего алгоритма ёмким и точным описанием текущей рыночной ситуации. Это своего рода «ДНК-код» бара, который одновременно сообщает:

  • Что произошло внутри (форма, сетап);

  • И как это выглядит на фоне недавней истории (размер, контекст, сила).

Мы свели тысячи возможных конфигураций цены к 153 осмысленным состояниям. Это не упрощение — это кристаллизация смысла. Мы не теряем информацию, мы структурируем её на языке, который может понять и запомнить наша «счётная машинка».

Что это дает на практике? Практическое применение

Представьте, что теперь наш алгоритм не видит безликую цену, а читает осмысленную последовательность чисел. Вместо  [1.1050, 1.1070, 1.1030, ...]  он оперирует последовательностью  [87, 87, 15, 152, 45] , где каждое число — это законченная история о том, что происходило на рынке в тот период.

Это открывает двери для анализа, который раньше был невозможен:

  • Поиск аномалий: Почему после 10 одинаковых состояний «87» (небольшие восходящие бары внутри диапазона) suddenly появилось состояние «152» (огромный медвежий бар, пробивающий минимум)? Это явный сдвиг в настроениях.

  • Поиск повторяющихся цепочек: Приводит ли последовательность  [45, 45, 87]  (нерешительность, нерешительность, импульс вверх) к дальнейшему росту в 70% случаев?

Так мы переходим от анализа одного бара к анализу паттернов второго порядка — последовательностей этих «ДНК-кодов».

Заключение: Это только начало

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

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

1.1К | ★3
22 комментария

Rustem32, это только один бар, один кирпичик, из которых уже можно строить дальше, формируя по настоящему интересные составные паттерны!

Для компьютера и миллионы паттернов не в тягость, железка не человек, ее электронная память сможет осилить очень и очень много!

avatar
да хрень это собачья… поймете еще, все впереди. спорить не стану, дерзайте, мне как то пох, результат я знаю. (см первое предложение)
avatar
Rustem32, нисколько не возражаю! ей может и больше! только я про «прок и толк», а не возраст. Начать можно с чего угодно, это дучше чем ничего, слов нет, но шансов..
приглашение в ТГ скоро появиться ? 
avatar
Не могу себе представить заявленного автором трейдера — виртуоза. Только если виртуоза-флудера. 
avatar
 Что касается идеи краткого описания бара и анализа последовательностей таких описаний, то ей точно больше 20 лет. Ничто не ново под луной. Главной проблемой подхода автора является недостаток реальных данных для адекватного анализа  при большом числе заявленных кодов. Не уверен, что даже нескольких миллиардов баров будет достаточно. И то в предположении, что рынок стационарен. Хтя мы знаем, что это не так.
avatar

SergeyJu, не думаю что смогу как то повлиять на рынок что бы он стал стационарным, а вот проблему малого количества исторических баров можно попробовать решить выбрав подход к работе с комплексными паттернами

 

Вероятно вторая часть будет именно об этом, но для этого нужно предварительно подготовить некоторые материалы

avatar

Касаемо модели:

1. Дискретизация всегда ведет к потере части информации. Два бара с состояниями 152 могут незначительно отличаться по размеру, объему, времени формирования, но для модели они будут абсолютно одинаковы. Вопрос в том, является ли эта потерянная информация критичной для прогноза.

2. Скользящее окно (например, медиана за последние 50 баров) по своей природе запаздывает. В момент резкого изменения волатильности (новости) алгоритм какое-то время будет использовать устаревшие критерии для оценки «размера».

3. Не все паттерны уложатся в 153 состояния: Рынок бесконечно сложен. Существуют важные паттерны, которые ваша система может не улавливать (например, сложные дивергенции на RSI, которые не отражены в чисто ценовых действиях за один бар).

Сейчас нейронки справляются лучше, они могут анализировать финансовую отчетность компании и довольно неплохо приводят оценку. Кстати, попробуйте как-нибудь вбить в deepseek запрос: «Если принять инвестиционную привлекательность от 1 до 10 исходя из новостного фона компании, то какое число у (название компании)?»

avatar

Скуфыч, 

 

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

 

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

 

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

avatar
Для начала нужно разобраться с трейдером-виртуозом, существует ли он. Хотя бы 10 таких, которые как торговали в 2006 так и торгуют в 2012 и 2025)) Если он торгует «чуйку» и «насмотренность» то это просто статистический трейдинг со всеми вытекающими. Значит и эквити такого трейдера будет не идеальным, возможны даже ликвидации, особенно в периоды переобучения.
Где то чуть повезло, где то пронесло, и вряд ли это насмотренность графика или баров. Обычно это целый набор насмотренностей, в какой то момент может зайти по условию А, в какой то уже по Б, или не зайти потому что не нравится Г. Обычно такое не формулизуется.
А если это примитивный статистический трейдинг то неизбежны разные «неожиданности» на рынке когда виртуоз от шока и неждачика ловит тильт.
avatar

22022022, самое лучше, что можно сделать во время тильта это закрыть терминал

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

 

А может быть у вас есть похожего рода правило, что бы открыть сделку, возможно оно тоже достаточно формализовано что бы считать его паттерном

 

Возможно вы и есть этот трейдер виртуоз

avatar
Для компьютера и миллионы паттернов не в тягость, железка не человек, ее электронная память сможет осилить очень и очень много!
...
Да действительно мы теряем часть информации

Меня постоянно мучает этот вопрос. А что мешает не терять? Религия? Внутренние комплексы? Все, на этом цензурные слова кончились…
avatar

Synthetic, допустим есть паттерн после которого шанс роста 73%, шанс падения 27% и это то что видно на истории

и это все история, а не правда, даже если паттерн несет в себе отражение какой то реальной закономерности рынка, то метрики собранные по нему уже несут в себе ошибку погрешности

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

 

а еще мы не можем запомнить бесконечно большое число значений, чем больше мы хотим запомнить тем больше на это нужно памяти и потребность растет геометрически

 

avatar
Кузьма Шевелев, 
Мощь объединенного подхода. Рождение языка
...
Мы не заваливаем машину данными, мы даём ей язык.

Попробуйте так-же обойтись с русским языком. С каждой страницы возьмите первую и последнюю буквы и еще пару из тех что между ними. Назовите эти четыре буквы баром. Все равно эти генеративные модели генерируют вероятности, так что срежем углы по полной. Такая экономия получится…
avatar

Synthetic, я думаю если вы предпримите попытку записать все вещественные числа между 0 и 1 вам не хватить и всей жизни на это, потому что их бесконечное количество

avatar
Кузьма Шевелев, 
Так мы про язык или про вещественные числа?
avatar
Synthetic, ну если всё-таки про язык, то тогда вас не должно смущать что есть некоторая дискретизация
avatar
Кузьма Шевелев, 
есть некоторая дискретизация

Зачем?
Биржа транслирует точные дискретные данные. Зачем нужна передискретизация по совершенно туманным основаниям. Которая сопровождается потерей до 99% данных. Объясните логически.
avatar
Подход допустимый, но если затем при помощи него не удастся расколоть будущее на два кластера: с заметной аномалией и без неё, то бесполезный.
avatar
Прайс экшн изобрели, переходим к гуглению машин лернинга.
avatar

Читайте на SMART-LAB:
Фото
DXY у ключевой поддержки: шорт-сквиз или новый этап распродажи?
Индекс доллара DXY плавно дрейфует в область месячного минимума в районе 98,50. Однако ослабление доллара на FX неравномерно: EURUSD стоит около...
Фото
Сегодня стартует первый день Российского облигационного конгресса!
Мы уже на площадке в Санкт-Петербурге и ждём вас на стенде МГКЛ — будем рады пообщаться, обсудить рынок, долговые инструменты и планы...
Фото
🎯«Нет плохих помещений, есть разные зоны»: чему эксперты ГК «А101» научили инвесторов

теги блога Kuzma Shevelev

....все тэги



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