Розробка симулятора паперової торгівлі криптовалютами

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

Розробка paper trading: де ламається тестування

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

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

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

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

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

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

Що дає симулятор трейдера: ефект у цифрах

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

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

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

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

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

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

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

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

Режими виконання угод і способи підключення

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

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

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

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

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

Як ми будуємо симулятор: етапи інженерної роботи

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

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

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

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

Що залишається у вас: конфігурації, схеми, регламенти

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

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

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

На передачі ми не віддаємо папку файлів, а показуємо, де що змінювати й як перевірити результат.

Кейс: торговий симулятор під навантаженням до і після

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

На піковому навантаженні — кілька тисяч заявок за хвилину — розрахунки угод розходилися з еталоном, частка розходжень сягала 3–4% від загальної кількості операцій.

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

Що перебудували

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

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

Метрики до і після

  • Час відгуку на піку: було — черга зростала, відгук ішов у секунди; стало — передбачуваний час на тому самому профілі навантаження.
  • Частка розходжень у розрахунках угод: з 3–4% до десятих часток відсотка.
  • Ручні перевірки стратегій: з десятків розборів на тиждень до одиничних, і ті — за заздалегідь позначеними сценаріями.
  • Відновлення після збою: замість повторного прогону сесії — продовження з останньої записаної операції.

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

Чим симулятор відрізняється від демо-рахунку брокера?

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

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

Незалежність від посередника — не абстракція. Демо-режим можуть урізати за інструментами, обмежити плече або вимкнути разом із торговим інтерфейсом; доступні пари змінюються рішенням майданчика. Свій контур не зав'язаний на чужі релізи та доступи, які видає третя сторона.

Практичний критерій простий. Якщо завдання — показати інтерфейс і навчити базовим діям, вбудований paper trading у TradingView його закриває.

Якщо потрібне кероване середовище з контролем логіки виконання, відтворюваними сценаріями та власною звітністю — модель ринку, ризик-модуль і аналітика проєктуються під ваш продукт.

Технічні сумніви: часті питання щодо симулятора

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

Наскільки точно моделюється виконання заявок?

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

Як симулятор зв'язується з обліковою системою?

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

Чи безпечний тестовий контур для роботи з реальними даними?

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

Чи можна підтримати кілька сценаріїв і перевикористовувати напрацювання?

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

Обговоримо задачу: що потрібно для старту розробки

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

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

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

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

Напрямки блокчейн-розробки

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

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