29 вересня 2026 · дослідження

Ваш бектест двічі витратив ті самі кошти: посібник з обліку портфеля

Ваш бектест двічі витратив ті самі кошти: посібник з обліку портфеля

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

Уявімо, що стратегія починає з $10,000 і купує актив на $6,000. У неї залишається $4,000 вільних коштів. Якщо бектест потім розраховує розмір другої позиції як 100% капіталу в $10,000, то зарезервовано вже $16,000 для позицій, хоча капітал обліковується лише в розмірі $10,000. За правилами деяких рахунків таке кредитне плече може бути допустимим. Але сам факт, що в коді розрахунку розміру позиції використано «капітал», цього не виправдовує.

Помилка перша: вважати капітал готівкою

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

У бектесті з ліквідними інструментами й без маржин-колів проблему легко не помітити. Дохідність виглядає правдоподібно, а ваги позицій, підсумовані постфактум, часом сягають 140% або 180%. Реальний рахунок може відхилити пізніші ордери або виявити кредитне плече, якого стратегія взагалі не планувала використовувати.

Резервуйте кошти під час формування ордерів. Для рахунку з оплатою готівкою купівля на $2,000 потребує $2,000 плюс комісії. Для маржинального рахунку розрахуйте необхідну маржу за правилами майданчика, а потім зменште доступну купівельну спроможність на цю суму. Якщо кілька ордерів надходять одночасно, визначте їхню черговість. Інакше результат може залежати від того, який цикл випадково виконався першим.

Помилка друга: зараховувати заблоковану заставу до вільної купівельної спроможності

На деривативному майданчику внесення застави в розмірі $1,000 не обов’язково зменшує капітал рахунку на $1,000. Але це означає, що заставу зарезервовано під відкриту позицію. Поширене спрощення в обліку спершу віднімає її від коштів, а потім також віднімає повний номінал позиції від купівельної спроможності. Інший варіант робить навпаки й обліковує заставу водночас як вільні кошти та маржу.

Обидві помилки спотворюють уявлення про можливості наступного ордера. Перша може створити враження, що стратегію надмірно обмежено; друга може дозволити ордери, які рахунок не здатен забезпечити. За кредитного плеча 5× позиція на $5,000 може вимагати приблизно $1,000 початкової маржі, але підтримувальна маржа, комісії, нереалізовані збитки й рівні маржі, встановлені майданчиком, змінюють доступну суму. Номінал — це не те саме, що застава.

Показник рахункуЩо він означаєЧи можна використати для нового ордера?
КапіталВартість рахунку після врахування зобов’язань і переоцінених позиційЛише з урахуванням правил маржі та купівельної спроможності
Вільні коштиКошти, які ще не витрачені, не зарезервовані й не надані в заставуТак, у межах правил для інструмента
Заблокована заставаКошти, що забезпечують відкриту позицію або ордерЗазвичай недоступна до вивільнення
Купівельна спроможністьОбсяг коштів для додаткових ордерів, розрахований майданчикомТак, у межах поточного ліміту

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

Помилка третя: вивільняти кошти за сигналом на вихід

Бектест часто вивільняє капітал одразу після появи сигналу на вихід. Але сигнал на вихід — це ще не виконання ордера. Ордер може очікувати на виконання, бути виконаним частково або скасованим; доки позицію фактично не закрито, її маржа й експозиція зберігаються. Навіть після виконання ордера на доступні кошти впливають комісії та реалізований P&L.

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

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

Зробіть облік прозорим

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

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

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

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