Розробка AI-системи ранжування торгових стратегій

Ручний відбір стратегій впирається у швидкість і людський фактор: поки аналітик порівнює десятки варіантів, ринок уже змінився. Ми розробляємо систему ранжування торгових стратегій під ключ — від підготовки даних до передачі в експлуатацію. Рішення скорочує час відбору у рази й робить пріоритети зрозумілими для команди.
Часті запитання

Чому ручне ранжування торгових стратегій не масштабується

Ручний відбір стратегій зазвичай тримається на одному аналітику: він зводить результати прогонів на історичних даних у загальну таблицю, сортує за дохідністю і вручну вирішує, що йде далі. Поки гіпотез десятки, це терпимо.

На сотнях прогонів вузьке місце у відборі стратегій стає головним обмеженням: черга розтягується на тижні, а вердикт залежить від того, хто і в якому порядку дійшов до кандидата.

Окрема проблема — непорівнюваність критеріїв. Метрики рахують на різних періодах, з різними витратами й фільтрами, частину ринкових даних підтягують руками, і зрізи розходяться в часі.

Порівнюються не стратегії, а умови їхніх тестів: сильний кандидат відсіюється через шум у даних, слабкий проходить, бо потрапив у вдале вікно.

Третя втрата — історія рішень. Ранжування торгових стратегій живе в листуванні й особистих файлах: причина відхилення не зафіксована, правила відбору не версіонуються, повторюваність не перевіряється.

Через місяць ніхто не відповість, чому стратегія зі схожими показниками була прийнята, а інша ні, — і масштабування відбору гіпотез знову впирається в одну людину.

Підсумок передбачуваний: швидкість відбору зростає повільніше за число гіпотез, а ціна помилки — робоча позиція, зібрана на перенавченому кандидаті.

Розбираємо, як це закривається: де поставити формальні критерії, як привести джерела до одного зрізу і чому вердикт має відтворюватися.

Ефект від впровадження: швидкість відбору та стійкість результату

Ручний відбір кандидатів упирається в стіну: щоб порівняти кілька десятків наборів правил, аналітик проганяє їх по черзі, вручну зводить метрики в таблицю і на око виставляє ваги.

Один цикл займає тижні, а результат наступного прогону не збігається з попереднім — кандидат проходить або відсіюється через зміну порядку перевірки, а не через якість стратегії.

Система ранжування рахує всіх кандидатів одним пакетним прогоном і сортує за зведеним балом.

Швидкість відбору кандидатів скорочується з тижнів до годин, а частка слабких варіантів, які автоматично відсіюються за порогом, сягає дев’яти з десяти — до ручного розбору доходять одиниці, і на них вистачає часу.

Відтворюваність результатів відбору дає версіонування наборів правил: прогін прив’язаний до версії набору, зрізу даних і зафіксованим вагам.

Повторний запуск на тому самому зрізі видає ідентичний ранжований список, тому суперечка «чому ця стратегія вище» вирішується порівнянням двох версій, а не розбором логів. Журнал прогонів ведемо в MLflow.

Зниження хибних спрацювань іде завдяки відмові від ручного налаштування ваг: зникає клас помилок на перенавчених кандидатах, які гарно виглядають на короткому відрізку й розвалюються на наступному.

Ваги рахуються з історичних прогонів із перевіркою на відкладеному періоді, тому така стратегія отримує низький бал до потрапляння в портфель.

Підсумок — передбачуваний конвеєр: прогін, автоматичний відсів, розбір залишку. Швидкість відбору й стійкість результату стають параметрами кожного запуску, а не залежать від того, хто саме зводив таблицю.

Режими роботи системи: пакетний, потоковий і гібридний

Схему розрахунку вибирають за двома параметрами: як часто потрібен перерахунок ранжування торгових стратегій і наскільки свіжою має бути оцінка на момент рішення.

Від цього залежить, чи рахуємо ми рейтинг за закриттям періоду, оновлюємо його в міру надходження даних або поєднуємо обидва підходи.

Пакетний перерахунок відтворюваний: однаковий вхід дає однаковий рейтинг, будь-яку оцінку можна пояснити й відкотити.

Потокова обробка ринкових даних скорочує затримку між зміною ринку й оновленням позиції стратегії, але частина розрахунків залежить від порядку надходження подій, і повторити минулий результат складніше.

Гібридна схема розрахунку знімає цю суперечність: важкий перерахунок іде за розкладом, потік дописує лише швидкі поправки.

Режим Коли підходить Обмеження
Пакетний перерахунок Періодичні рішення, важливіша пояснюваність і повторюваність оцінки Рейтинг застаріває до кінця інтервалу, пікові навантаження на розрахунковий контур
Потокова обробка Рішення ухвалюється на русі ринку, затримка критична Складніше відтворити минулий результат, вищі вимоги до контролю якості даних і моніторингу
Гібридна схема Потрібні і свіжість, і стійка база для звітності та розбору спірних випадків Два контури: дорожче в розробці й супроводі, потрібне узгодження станів і перевірки збіжності

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

Ми описуємо обидва контури та правила їхнього узгодження заздалегідь: тоді перехід від пакетного перерахунку до гібридного стає налаштуванням, а не переписуванням моделі.

Етапи впровадження: від аудиту даних до передачі в експлуатацію

Ранжування торгових стратегій ламається не на моделі, а на вході: пропуски в котируваннях, різні таймфрейми й делістинговані інструменти дають гарний результат, який не відтворюється. Тому етапи йдуть строго послідовно — до розрахунків не переходимо, поки попередній шар не прийнято.

  1. Аудит ринкових даних. Звіряємо джерела, глибину історії та повноту інструментів, позначаємо розриви сесій, спліти й делістинги — інакше критерії відбору зміщені до паперів, що вижили.
  2. Критерії відбору. Фіксуємо, за чим ранжуємо: дохідність з поправкою на ризик, стійкість до просадки, витрати обороту; кожен критерій отримує вагу й правило розрахунку.
  3. Схема ознак. Описуємо ознаки з цін, обсягів і волатильності, їхні вікна й нормалізацію — так результат пояснюваний, а не отриманий перебором варіантів.
  4. Контури розрахунку. Розділяємо зберігання рядів і шар обчислень: агрегати й тикові зрізи лежать у ClickHouse, перерахунок після правки ознак займає хвилини, а не ніч.
  5. Перевірка на історичних даних. Проганяємо стратегії на відкладеному періоді, перевіряємо стійкість рангів до зміни вікна й комісій; ті, що втрачають місце при зсуві, до рейтингу не потрапляють.
  6. Приймання системи. Спільно з вашою командою звіряємо ранги на контрольній вибірці, розбираємо розбіжності й фіксуємо версію моделі.
  7. Передача в експлуатацію. Віддаємо конфігурації, регламент перерахунку, моніторинг якості даних і навчання ваших аналітиків.

Критерій готовності один: той самий набір даних і параметрів дає той самий рейтинг, а падіння якості котирувань видно в моніторингу раніше, ніж у торгових результатах.

Комплект постачання: конфігурації, схеми ознак і регламенти

Замовник отримує не підсумковий звіт, а робочий контур: набір конфігурацій, описів і регламентів, за якими ваша команда сама керує ранжуванням торгових стратегій, не звертаючись до нас за кожною правкою. Кожен артефакт прив’язаний до свого місця в процесі — від підготовки даних до розбору розбіжностей.

  • Конфігурації системи — файли параметрів: ваги факторів, горизонти й частота перерахунку, пороги відсікання, правила обробки пропусків. Редагуються без перезбирання, кожна версія зберігається, повернення до попередньої — одна команда.
  • Схема ознак — для кожного показника зазначено, з якого джерела він розраховується, яке вікно агрегації використовується, як обробляються викиди і чому набір ознак саме такий.
  • Політики доступу — ролі аналітика, трейдера і ризик-контролю, право змінювати ваги й пороги, журнал змін з автором і причиною.
  • Регламент перерахунку — розклад запусків, порядок кроків, точки контролю якості та дії при розбіжності результату з перевіркою на історичних даних.
  • Метрики якості ранжування — що вважаємо стійкістю, які відхилення визнаємо деградацією і за яких умов запускається перегляд ваг.
  • Документація — інструкції з розгортання, опис конфігурацій і схеми даних, розбір типових збоїв і порядок дій.
  • Передача команді — розбір контуру з вашими інженерами й аналітиками, відповіді на запитання щодо кожного артефакту.

Приклад із практики: як змінився відбір після впровадження

До впровадження відбір торгових стратегій тримався на ручній перевірці: три аналітики проганяли через Backtrader близько сорока гіпотез на тиждень і відхиляли кандидатів за інтуїцією, звіряючись із розрізненими показниками в таблицях.

Повний цикл відбору займав два-три тижні, а самі рішення майже не фіксувалися — пояснити відмову через місяць або повторити чужий висновок було нічим.

Що змінили

Ми описали кожну гіпотезу набором ознак: поведінку дохідності в різних ринкових режимах, чутливість до зсуву вхідних даних, кореляцію з уже працюючими стратегіями, стабільність після зміни періоду перевірки.

Модель ранжування будує впорядкований список з оцінкою впевненості, і аналітик розбирає верхні п’ятнадцять-двадцять позицій замість усього потоку — ручна робота змістилася туди, де справді потрібне рішення людини.

Що стало

Частка слабких кандидатів, відсіяних автоматично до ручного розбору, тримається на рівні близько 80%, а цикл відбору скоротився з двох-трьох тижнів до двох діб: прогін і ранжування йдуть уночі, уранці команда отримує готовий список з обґрунтуванням за кожною ознакою.

Стійкість результату зросла помітніше за швидкість: частка стратегій, що зберегли показники на даних поза навчальним вікном, піднялася приблизно з 15% до 40%.

Причина не в самій моделі, а в тому, що раніше слабкі гіпотези відрізнялися від сильних лише на довгій дистанції — тепер вони відсікаються до того, як у них вкладуть час розробки й супроводу.

Чим ранжування відрізняється від ручного сортування?

Ручне сортування працює, поки кандидатів десяток: експерт тримає в голові дохідність, просадку й загальну логіку підходу та вибирає за досвідом.

На двох сотнях варіантів порядок починає залежати від того, хто переконливіше сперечається, а не від якості стратегії: той самий набір при повторному розборі вибудовується інакше, бо критерії ніде не зафіксовані.

Формальне ранжування торгових стратегій рахує вагу кандидата як зважену суму нормованих показників.

Крім дохідності в оцінку входять просадка, стійкість результату на різних режимах ринку, витрати на угоду, оборот і кореляція з уже працюючими стратегіями — без цього у верхівку рейтингу потрапляють десять копій одного й того самого підходу, а диверсифікація втрачається.

Ваги й пріоритети оголошуються до перегляду результатів. У ручному режимі критерії мимоволі підбираються під уже вподобану стратегію, у формальному — порядок обчислюється із заздалегідь заданих правил, і правка ваги видна всій команді, а не залишається в голові одного експерта. Це дає змогу перерахувати рейтинг тим самим способом на новому зрізі даних.

Пояснюваність рішень дає внесок кожного показника в підсумковий бал: видно, що кандидат на п’ятому місці через глибоку просадку, а не через слабку дохідність.

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

Технічні сумніви: дані, режими ринку, пояснюваність

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

Історії мало — модель взагалі можна навчати?

Нестачу закриваємо не збільшенням довжини, а структурою. Ріжемо історію на незалежні вікна, навчаємо на дальших, перевіряємо на наступних і рахуємо метрику ранжування окремо за кожним вікном.

Якщо розкид між вікнами великий — сигнал слабкий, і це видно до виведення системи в роботу. Плюс розширюємо набір ознак: не лише ціна, а й ліквідність, волатильність, сезонність, тому кожне спостереження починає нести більше інформації.

Як система переживає зміну режиму ринку?

Режим описуємо явними спостережуваними величинами — тренд проти боковика, широка чи вузька волатильність, стійкість спреду. Ранжування будується окремо всередині режиму, а не однією універсальною формулою.

Коли статистика режиму виходить із звичних меж, ваги перераховуються і частка капіталу під стратегію знижується автоматично, без ручного втручання.

Чому стратегія опинилася вище — це пояснювано?

Для кожної позиції в списку зберігаємо внесок ознак у підсумковий бал. Замовник бачить, що саме підняло стратегію і що її обмежує, а не абстрактне «модель порахувала».

Це ж слугує інструментом контролю: якщо вага ознаки розходиться зі здоровим глуздом, ми це знаходимо на етапі перевірки, а не після просадки.

Обов’язково одразу запускати все?

Ні, ідемо поетапно. Спочатку офлайн-контур: дані, ознаки, ранжування, звіти зі стійкості. Потім — робота на історичних даних у режимі, близькому до живого, зі щоденним порівнянням прогнозу й факту.

І лише після цього — обмежена частка капіталу й поступове розширення списку та обсягу, за заздалегідь заданими критеріями зупинки.

З чого почати: які дані та доступи знадобляться

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

Чим точніше ви опишете, як рішення щодо стратегій ухвалюються зараз, тим менше припущень ми закладемо в ранжування і тим реалістичнішим буде план робіт.

  • історичні ряди: угоди, котирування й дані про ліквідність за період, що покриває різні режими волатильності;
  • каталог стратегій: правила входу й виходу, параметри ризику, версія й авторство кожної;
  • журнали фактичного виконання: реальні ціни, просковзування, відмови, затримки;
  • доступи до даних: вивантаження або читання зі сховища, доступ до торгового контуру в тестовому режимі без права виведення коштів;
  • обмеження: які метрики й горизонти вважаються прийнятними, що заборонено враховувати в ранжуванні;
  • регламент: хто ухвалює рішення за підсумками ранжування і чи потрібна пояснюваність за кожною стратегією;
  • відповідальні з вашого боку: власник даних і той, хто підтвердить коректність історичних рядів.

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

Далі збираємо пілотний контур: проганяємо ранжування торгових стратегій на вашій історії, звіряємо порядок із рішеннями, які ви вже ухвалювали, і показуємо, де модель розходиться з поточною практикою. Опишіть задачу й надішліть те, що є, — повернемося з оцінкою, складом етапів і планом робіт.

Напрямки AI-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1543
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1374
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142