Masz niewielką strategię na kontraktach futures na kryptowaluty, która handluje kilkoma kontraktami, i właśnie przenosisz ją z backtestu do handlu na koncie demo. Pierwsze równoważenie portfela próbuje złożyć zlecenie na 0.037 BTC. Symulator je akceptuje, ale giełda odrzuca, bo krok ilości kontraktu wynosi 0.001, a po zaokrągleniu zlecenie nie spełnia minimalnej wartości. Twoja pozycja pozostaje zerowa, podczas gdy backtest odnotowuje realizację.
Łatwo zbyć tę rozbieżność jako błąd formatowania. Może ona jednak zmienić to, jakie aktywa posiadasz, kiedy równoważysz portfel i ile ryzyka pozostaje po nieudanym zleceniu. Traktuj filtry transakcyjne każdej giełdy jako część reguł realizacji strategii i zadbaj o to, by backtest oraz adapter konta demo stosowały te same reguły w tej samej kolejności.
Jakie filtry giełdowe mogą unieważnić zlecenie?
Zacznij od metadanych instrumentu potrzebnych do złożenia zlecenia: kroku ilości, minimalnej ilości, minimalnej wartości zlecenia, kroku ceny oraz limitów wielkości zlecenia i przedziałów cenowych. Nazwy i zakres tych parametrów różnią się w zależności od giełdy. Para spot może mieć inne minimum niż jej kontrakt perpetual, a filtr może się zmienić w trakcie działania strategii.
Rozważ pozycję docelową o wartości $12 w kontrakcie, dla którego minimalna wartość zlecenia wynosi $10. Jeśli krok ilości sprawi, że zlecenie zostanie zaokrąglone w dół do $9.80, będzie ono nieprawidłowe, mimo że niezaokrąglona wartość docelowa przekraczała minimum. Zaokrąglenie w górę do $10.20 może sprawić, że zlecenie będzie prawidłowe, ale jednocześnie przekroczy wartość docelową o $0.20. Ta różnica może mieć znaczenie, gdy konto jest niewielkie lub strategia handluje wieloma instrumentami.
| Reguła | Co ogranicza | Konsekwencja dla backtestu |
|---|---|---|
| Krok ilości | Dozwolone zmiany wielkości zlecenia | Zaokrąglona wielkość różni się od docelowej |
| Minimalna ilość lub wartość zlecenia | Najmniejsze akceptowane zlecenie | Część transakcji staje się pustymi operacjami albo wymaga zaokrąglenia w górę |
| Krok ceny | Dozwolone ceny limitu i aktywacji | Zaokrąglenie ceny zmienia szansę realizacji zlecenia |
| Przedział cenowy lub limit wielkości | Limity giełdy dla pól zlecenia | Zlecenia mogą być odrzucane podczas dużej zmienności rynku lub znacznego równoważenia portfela |
Gdzie w ścieżce składania zlecenia powinno odbywać się zaokrąglanie?
Zaokrąglaj pola zlecenia po obliczeniu pożądanej zmiany pozycji, a przed podjęciem decyzji o jego złożeniu. Zachowaj niezaokrągloną wartość docelową do analizy, a następnie wyznacz zlecenie możliwe do realizacji na podstawie bieżącej pozycji, mnożnika kontraktu i kroków określonych przez giełdę. Przy kroku ilości sprzedaży wynoszącym 0.001 żądana redukcja o 0.0017 zmieni się na 0.001 albo 0.002, zależnie od przyjętej reguły. Każdy z tych wariantów pozostawi inną pozycję resztkową, więc „zaokrąglanie do precyzji” nie jest kompletną polityką.
W przypadku ilości zaokrąglanie w kierunku zera zapobiega niezamierzonemu zwiększeniu ekspozycji ponad żądaną zmianę, ale może pozostawić niewielkie resztki, które nigdy nie zostaną sprzedane. Zaokrąglanie do najbliższej wartości zmniejsza średni błąd, choć może przekroczyć wartość docelową. Obsługa minimalnej wartości zlecenia wymaga osobnej decyzji: pominąć transakcję, gromadzić zlecenia do przekroczenia progu albo zwiększyć wielkość i zaakceptować przekroczenie. Nie przełączaj się po cichu między tymi zachowaniami.
Zachowuj też informację o przyczynie niewykonania zlecenia. „Brak zlecenia: poniżej minimalnej wartości” oznacza coś innego niż „zrealizowano w ilości zero”. Przy równoważeniu portfela pominięte zlecenie może pozostawić niewykorzystaną gotówkę albo utrzymać ekspozycję na poprzednie aktywo; odnotuj ten wynik w stanie konta.
Jak zachować zgodność realizacji w backteście i na koncie demo?
Jeśli architektura systemu na to pozwala, używaj tej samej funkcji walidacji zleceń w obu ścieżkach. Przekazuj jej te same, aktualne na dany moment reguły instrumentu, żądane zlecenie i stan konta. Funkcja powinna zwracać znormalizowane zlecenie albo konkretny powód odrzucenia. Symulator może wtedy stosować założenia dotyczące realizacji do znormalizowanych zleceń, a adapter konta demo wysyłać do giełdy równoważne pola.
Przechowuj datowaną migawkę metadanych filtrów dla każdego uruchomienia. Jeśli zmieni się krok ilości albo wartość minimalna, musisz wiedzieć, jaką regułę stosował backtest. Pobranie dzisiejszych metadanych w celu odtworzenia strategii sprzed roku może sprawić, że dawne zlecenia będą wyglądały na nieprawidłowe albo że historyczne zlecenia będą wydawały się możliwe do złożenia, choć w rzeczywistości nie były.
Gdy giełda odrzuci zlecenie na koncie demo, przed zmianą sygnału porównaj wysłane pola z migawką filtrów. Jeśli normalizator zleceń w backteście wygenerował 0.037 BTC, a giełda dopuszczała kroki po 0.001 BTC, rozbieżność leży w adapterze albo metadanych. Jeśli wysłane zlecenie było prawidłowe, ale nie zostało zrealizowane, chodzi o zachowanie podczas realizacji, takie jak cena, płynność lub czas obowiązywania.
Co sprawdzić, zanim zaufasz porównaniu?
Dla każdego równoważenia portfela prowadź krótką historię: pozycję docelową, bieżącą pozycję, surowe zlecenie, znormalizowane zlecenie, wersję obowiązujących filtrów i końcowy status. Następnie porównaj zapisy z konta demo i symulacji dla tego samego momentu podjęcia decyzji.
- Czy obie ścieżki stosowały ten sam mnożnik kontraktu i te same jednostki ilości?
- Czy stosowały ten sam kierunek zaokrąglania i tę samą politykę minimalnego zlecenia?
- Czy wartości filtrów były aktualne w chwili utworzenia zlecenia?
- Czy odrzucone lub pominięte zlecenie pozostawiło taką samą pozycję i saldo gotówki na obu kontach?
Strategia może nadal być poprawna, nawet jeśli pierwsze równoważenie portfela na koncie demo się nie powiedzie. Dopóki jednak symulator nie potrafi wyjaśnić, dlaczego zlecenie zostałoby zaakceptowane, zaokrąglone, pominięte lub odrzucone, krzywa kapitału opisuje inny system realizacji niż ten, który próbujesz uruchomić.
← Wszystkie wpisy

