6 листопада 2026 · дані

Ваш бектест використовував неправильний історичний склад активів

Ваш бектест використовував неправильний історичний склад активів

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

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

Помилка перша: тестування сьогоднішнього списку на всій історії

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

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

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

Помилка друга: ранжування за показником, виміряним після ухвалення рішення

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

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

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

Правило відборуВерсія на момент часуТиповий витік
Топ 20 за доларовим обсягомРанжування за завершеними сесіями до ребалансуванняВключення дня або місяця ребалансування
Лістинг на біржіВикористання фактичного часу лістингу й делістингуВикористання поточного API символів для давніх дат
Мінімальна історіяПідрахунок спостережень, доступних на момент відборуВимога, щоб актив вижив у майбутньому, для проходження фільтра

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

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

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

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

Зробіть склад активів відтворюваним

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

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

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

упередження виживаннядані на момент часуформування складу активівбектестування
ПоділитисяXLinkedInFacebookRedditHacker NewsWhatsAppTelegramEmail
← Усі статті