Баєсова оптимізація параметрів замість ручного перебору
Ручний підбір параметрів торгової стратегії впирається в розмір простору пошуку. Шість параметрів по десять значень — це вже мільйон комбінацій, і кожна потребує окремого прогону на історії з урахуванням комісій і прослизання.
Сітковий перебір чесно обходить ґратку, але час рахує лінійно за кількістю точок, тому на практиці діапазони звужують вручну — і разом із ними відрізають області, де лежить стійкий набір.
Гірше інше: перебір не використовує структуру відгуку. Він однаково докладно промацує і шум, і перспективні зони, а найкращий результат вибирає за одним числом — підсумковою дохідністю на навчальному вікні.
Так і виникає перенавчання стратегії: набір ідеальний на минулій ділянці й розсипається, щойно змінюється режим ринку — волатильність, ліквідність, характер руху. Чим більше параметрів, тим охочіше перебір знаходить випадкові збіги.
Баєсова оптимізація підходить до задачі інакше. Вона будує сурогатну модель поверхні відгуку — зазвичай гауссівський процес — і за критерієм очікуваного покращення вибирає наступну точку: десь досліджує незнайому область, десь уточнює поблизу вже знайдених максимумів.
Кількість прогонів скорочується на порядки: замість тисяч комбінацій достатньо сотень, а бюджет обчислень іде не на рівномірний обхід, а на перспективні ділянки.
Для торгівлі це важливо ще й тому, що ціллю можна зробити не пік дохідності, а медіану за кількома режимами й вікнами — тоді баєсова оптимізація параметрів відбирає набори, стійкі до зміни умов, а не підігнані під один вдалий відрізок.
Розбираємо, як це закривається: як задаємо простір параметрів стратегії, які обмеження ставимо проти перенавчання і як перевіряємо результат поза вибіркою.
Ефект від керованого пошуку параметрів: швидкість і стійкість
Пошук сходиться за сотні прогонів, а не тисячі
Баєсова оптимізація не перебирає сітку значень, а будує сурогатну модель поверхні відгуку й вибирає наступну точку там, де очікується покращення з урахуванням невизначеності.
Цикл підбору параметрів скорочується на порядок: замість тисяч прогонів стратегії достатньо сотень, дослідження вкладається в години. Команда встигає перевірити більше гіпотез на тому самому обсязі обчислень.
Цільова функція задає, що вважати добрим результатом
Якість визначає не кількість ітерацій, а те, що ми оптимізуємо: дохідність із поправкою на просадку, стійкість до затримки виконання, поведінку на різних ділянках історії.
Задана явно цільова функція стратегії не дає оптимізатору гнатися за гарною кривою на одному інтервалі й переводить роботу з «підігнати під минуле» в «знайти режим, що переживає зміну умов».
Перенавчання стає рідкісним класом відмов
Ручний підбір майже завжди дає набори, ідеальні на історії та розсипаються на нових даних.
Баєсів пошук відкидає рішення, чутливі до найменшого зсуву вхідних рядів, тому зниження перенавчання видно в цифрах: частка наборів, що не пройшли перевірку на утриманому періоді, падає в рази, а стійкість торгової стратегії стає критерієм відбору, а не надією.
Баєсова оптимізація чи сітковий пошук: порівняння підходів
Вибір методу підбору параметрів визначає, у скільки прогонів стратегії обходиться результат і наскільки він стійкий за межами навчального відрізка.
Повний перебір дає вичерпне охоплення, але обчислювальні витрати зростають добутком кількості кроків за кожним параметром: додали п’ятий параметр — час підбору виріс кратно.
Баєсова оптимізація замість перебору будує сурогатну модель цільової функції й вибирає наступну точку за очікуваною вигодою. Дорогі прогони не витрачаються на явно слабкі області, тому порівнянна точність досягається за меншої кількості запусків. Ось із чим цей підхід реально порівнюють і де в кожного методу межа.
З чим порівнюємо баєсів підбір
| Метод | Коли підходить | Обмеження |
|---|---|---|
| Повний перебір за сіткою | 2–3 параметри, вузькі діапазони, відтворюваність результату | Витрати зростають як добуток кроків за осями; на 5+ параметрах не вкладається в розумний час |
| Випадковий пошук | Багато параметрів, частина слабо впливає на результат | Немає гарантії покриття області; підсумок залежить від зерна генератора |
| Баєсів підбір | Дорогий одиничний прогін, 4–10 параметрів, потрібний мінімум перевірок | Потрібні коректні межі й метрика; на розривній функції модель слабшає |
| Еволюційний підбір | Негладка цільова функція, обмеження на сполучення параметрів | Прогонів більше, ніж за баєсового; окремо налаштовується оператор відбору |
| Ручне налаштування експертом | Нова задача, мало даних, важливо швидко зрозуміти поведінку стратегії | Не масштабується й не відтворюється іншим фахівцем |
На практиці методи комбінують: грубий прохід випадковим пошуком окреслює область, баєсів підбір уточнює її всередині, а стійкість перевіряється на відкладеному відрізку даних.
Порядок робіт: від постановки цілі до передачі результатів
Оптимізація параметрів — не перебір сітки, а послідовність рішень, де ціна помилки зростає з кожним кроком: слабка цільова функція дає гарну криву на історії та розвал на живому ринку. Порядок робіт однаковий для класичних стратегій і зв’язок у блокчейн-контурі.
Від даних до регламенту перерахунку
- Розбір стратегії та даних. Фіксуємо правила входу й виходу, склад ряду, обробку пропусків. Перевіряємо зміщення виживання й зміну режимів ринку — інакше пошук налаштується на артефакти історії.
- Цільова функція та обмеження. Визначаємо, що максимізуємо: дохідність на одиницю ризику чи стійкість просадки. Просадка, частота угод і витрати входять у функцію штрафами, а не розбором після.
- Схема пошуку. Задаємо межі й типи осей параметрів, крок округлення. Баєсова оптимізація йде від сурогатної моделі, а не від перебору сітки, — фіксуємо стартову вибірку й критерій зупинки.
- Налаштування моделей. Калібруємо ядро й оцінку шуму, баланс дослідження та уточнення. На виході — кілька конкуруючих наборів параметрів, а не єдиний вузький пік.
- Відкладений період, валідація та стрес-сценарії. Перевіряємо там, де пошуку не було: незалежні вікна, ковзний перерахунок, порівняння з випадковим пошуком. Потім — прогін на глибокій просадці, зростанні витрат і розрідженій ліквідності: нестійкі набори відсіюються тут.
- Передача результату. Віддаємо конфігурацію із зафіксованими значеннями, звіт із метриками до і після, журнал прогонів і регламент перерахунку — і навчаємо команду відтворювати розрахунок.
Комплект постачання: конфігурації, звіти та регламенти
За підсумками робіт у замовника залишається не підібраний набір чисел, а відтворюваний контур підбору параметрів: результат можна переперевірити й повторити без нашої участі. Нижче — що саме переходить команді.
- Документація з підбору параметрів — тип і межі кожного параметра, зв’язки між ними, заборонені сполучення та походження діапазонів.
- Конфігурація пошуку — файли запуску: розмір стартової вибірки, кількість ітерацій, сурогатна модель, правило зупинки; повтор однією командою на тих самих даних.
- Цільова функція — метрика з вагами та штрафами за просадку й оборот, з обґрунтуванням кожного доданка.
- Протоколи перевірок — поділ даних на підбір і контроль, схема неперетинних вікон, пороги, за яких результат визнається непридатним.
- Звіти зі стійкості — карти параметрів, де цінуються плато, а не одиничні піки, таблиці деградації між підбором і контролем, перевірка чутливості до зсуву стартових умов.
- Регламент перенавчання — тригери (зміна ринкового режиму, падіння метрики нижче порога), періодичність і порядок фіксації нової версії.
- Передача знань команді — розбір на живих запусках, інструкції з додавання параметрів, чек-лист перед викатом, покажчики на код і дані.
Комплект розрахований на інженера, який відкриє його через пів року після здачі, — і має отримати той самий результат, що й ми.
Приклад із практики: зниження просадки та прискорення підбору
До нас прийшла команда, що торгує на криптовалютних парах: у тесті стратегія виглядала стійко, а на реальному рахунку просадка пробивала розрахункову майже одразу після запуску.
Параметри підбирали перебором за сіткою — близько сорока тисяч комбінацій, і все це без розуміння, як вибраний набір поведеться на даних, яких підбір не бачив.
До: перебір за сіткою
Повний цикл підбору займав більше півтори доби, а перевірка на відкладеному періоді запускалася в самому кінці й відсіювала близько вісімдесяти відсотків наборів.
Тобто майже два дні машинного часу давали один-два варіанти, придатних до запуску, а глибина просадки на живому рахунку сягала третини депозиту. Будь-яка правка логіки обнуляла результат і запускала перебір заново.
Після: перевірка всередині циклу
Ми замінили перебір на баєсову оптимізацію — Optuna з цільовою функцією, де крім дохідності штрафуються просадка й розкид результату між вікнами.
Перевірку на відкладеному періоді вбудували всередину циклу: набір, який її не проходить, відкидається одразу, а не на фінальному кроці, і наступна ітерація будується вже з урахуванням цього відбракування.
Цикл підбору скоротився з тридцяти шести годин до трьох-чотирьох, частка наборів, що не пройшли перевірку на нових даних, упала з вісімдесяти до двадцяти відсотків, глибина просадки на рахунку — з третини депозиту до дванадцяти відсотків.
Ключова зміна не в цифрах: знайдені параметри перестали розсипатися під час переходу на наступний період, і результат відтворюється на даних, які в підборі не брали участі.
Що робити, якщо стратегія вже підібрана вручну?
Параметри, знайдені вручну, — уже перевірена гіпотеза, і викидати її не потрібно. Але такий набір майже завжди знайдений на одному періоді й не має оцінки стійкості: незрозуміло, де закінчується закономірність і починається підгонка під історію.
Тому першим кроком поточна конфігурація фіксується як еталон, з яким порівнюються всі подальші варіанти.
Перевірка йде на утриманих ділянках: параметри підбиралися на одному відрізку, а тестуються на іншому, який у підборі не брав участі. Поруч дивляться чутливість — зсув кожного параметра на один крок не повинен обвалювати результат.
Якщо поведінка стратегії зберігається за невеликого зміщення, набір відображає властивість ринку, а не шум конкретних даних.
Діагностика перенавчання спирається на розходження між ділянками: упевнений результат на підібраному відрізку за провалу на утриманому — пряма ознака підгонки. Другий маркер — вузький оптимум, коли все тримається в одній точці простору й розсипається поруч. Третій — різка деградація за зміни режиму ринку.
Перехід до модельної схеми починається не з нуля, а від поточної конфігурації: вона задає центр області пошуку та межі розумних значень. Далі Optuna будує наближену модель поверхні результату й пропонує наступну точку там, де очікується покращення, замість перебору сітки.
На виході — не одне число, а розподіл: видно, які області стійкі, а які тримаються на єдиному вдалому сполученні.
Робоча версія при цьому залишається ввімкненою. Нові параметри перевіряються паралельно, перемикання — за заздалегідь заданим правилом, наприклад після підтвердження на утриманому періоді.
Конфігурації зберігаються з версіями, тому повернення до попереднього набору займає хвилини, а не потребує повторного підбору.
Технічні сумніви та відповіді на них
Баєсова оптимізація окупається там, де повний перебір сітки параметрів уже не вміщається в бюджет часу, а потрібен стійкий набір, а не одиничний вдалий пік. Нижче — питання, які найчастіше виринають до старту.
Скільки історичних даних потрібно?
Обсяг рахується від кількості незалежних угод, а не від довжини календаря: орієнтир — кілька сотень угод на кожен оцінюваний параметр, інакше оптимізатор підганяється під шум. Поверх цього залишаємо утриманий відрізок і перевіряємо знайдений набір ковзним вікном.
Яку цільову функцію максимізувати?
Дохідність напряму — погана ціль: оптимізатор іде в рідкісні великі ставки. Беремо складену метрику з дохідності, приведеної до ризику, зі штрафами за просадку та малу кількість угод — тоді нагору піднімаються набори, які переживають зміну режиму.
Чи можна підбирати параметри одразу за кількома інструментами?
Так: цільова функція агрегується за портфелем, зазвичай із поправкою на кореляцію між інструментами — так менший ризик підгонки під один актив. Плата — дорожчий кожен наступний прогін, тому частину задач розв’язуємо за групами з фінальною спільною перевіркою.
Як часто повторювати підбір?
Не за календарем, а за подіями: зміна режиму волатильності, розрив історичної залежності, просадка за межами очікуваного коридору. Між цим параметри фіксовані — регулярна переоптимізація «для порядку» майже завжди погіршує результат.
З чого почати: що підготувати до обговорення задачі
Оцінка з баєсової оптимізації параметрів спирається на ваші дані, а не на загальні міркування: та сама стратегія на різних історіях упирається в різний стелю якості. Щоб перша розмова одразу йшла по суті, достатньо надіслати таке.
- Логіку стратегії та повний список параметрів із межами пошуку — що саме оптимізуємо і в яких межах.
- Історичні дані: інструменти, таймфрейм, період, пропуски в котируваннях, урахування комісій і прослизання.
- Як параметри підбираються зараз: ручне налаштування, повний перебір, випадковий пошук — і що в результаті не влаштовує.
- Цільову метрику: дохідність, максимальна просадка, відношення прибутку до збитку або стійкість на позавибіркових ділянках.
- Обмеження: допустиме плече, ліміти за позицією, правила управління ризиком.
- Де рахуються прогони, скільки часу займає один прохід і чи є ліміти за ресурсами.
Далі порядок простий: обговорюємо задачу й уточнюємо критерії якості, вивчаємо матеріали та відтворюємо поточний результат, після чого повертаємося з оцінкою й планом робіт — зі схемою розбиття даних, кількістю прогонів і точками контролю. Готові почати з опису задачі та наявних вихідних даних для аналізу — решту уточнимо в розмові.







