Finanse osobistePrezes komentujeKalkulatoryQuiz wiedzy
Zacznij tutaj
Słownik
O mnie

TradingView

Najszybszy sposób na śledzenie rynków

Uruchom wykres

Link partnerski

CEX czy DEX? Policz pełny koszt wymiany tokenów

⏱️ Czas czytania: 16 min

Masz token w portfelu i chcesz zamienić go na USDC. Giełda kusi niską prowizją, DEX pokazuje konkretną kwotę do otrzymania, a agregator obiecuje znaleźć lepszą trasę. Wybierasz najniższy procent, robisz wymianę i dopiero przy wypłacie odkrywasz, że porównywałeś trzy różne rzeczy.

Ja zaczynam od jednej zasady: porównuję liczbę tych samych tokenów, które otrzymam na tym samym docelowym adresie i w tej samej sieci, za identyczną kwotę wejściową. Dopiero do tego doliczam koszty ponoszone osobno, na przykład gaz zapłacony w ETH. Saldo na giełdzie i środki we własnym portfelu to dwa różne punkty końcowe.

Poniżej pokazuję, jak porównać CEX, DEX i agregator, nie licząc tej samej opłaty dwa razy. To wymiana na rynku spot, bez dźwigni. Wszystkie liczby w przykładach są modelowe: nie są aktualnymi stawkami, ofertami platform ani wynikami wykonanych przeze mnie transakcji.

Najpierw ustalam, co dokładnie ma trafić do portfela

Przyjmuję prosty cel: mam 1000 jednostek tokena X we własnym portfelu. Chcę wymienić całość na konkretną wersję USDC i otrzymać ją z powrotem na ten sam adres, w tej samej sieci. Zakładam, że każda rozważana trasa może obsłużyć te aktywa. W rzeczywistym porównaniu trzeba to dopiero potwierdzić.

Do karty porównania wpisuję sieć i jej identyfikator, adres kontraktu tokena X, adres kontraktu docelowego USDC oraz adres odbiorcy. Sama nazwa „USDC” nie wystarcza. Jeżeli jedna oferta kończy się tokenem mostkowanym, a druga natywnym, nie otrzymuję tego samego aktywa.

Ten problem opisuję w tekście USDC czy USDC.e — jak sprawdzić wersję tokena. Tutaj ma on bardzo praktyczny skutek: dodatkowa zamiana potrzebna do uzyskania właściwej wersji musi wejść do kosztu całej trasy.

Nie uznaję za równoważną propozycji „wypłać na tańszą sieć”, jeżeli potrzebuję środków na innej. Jeżeli dopuszczam most, porównanie obejmuje również jego koszt, czas i ryzyko. W tym przykładzie zostaję w jednej sieci, żeby nie ukryć dodatkowej operacji pod słowem „wypłata”.

Trzy drogi, ale agregator korzysta z istniejącej płynności

Droga Pełna ścieżka Gdzie kończę liczenie
CEX Portfel → depozyt X na giełdzie → sprzedaż → wypłata USDC Po otrzymaniu właściwego USDC we własnym portfelu
Bezpośrednia trasa DEX Portfel → swap przez wybrany protokół → USDC w portfelu Po rozliczeniu swapu na wskazany adres
Agregator DEX Portfel → wymiana trasą wybraną przez agregator → USDC w portfelu Po otrzymaniu tego samego USDC na ten sam adres

Agregator korzystający z DEX-ów nie jest niezależnym rodzajem rynku. To inny sposób znalezienia i wykonania wymiany z użyciem dostępnej płynności. Może korzystać z tych samych pul co bezpośrednia trasa. Nie dostaję więc trzech niezależnych źródeł płynności tylko dlatego, że otworzyłem trzy strony.

Co więcej, interfejs kojarzony z jednym DEX-em też może stosować routing. Zapisuję zatem rzeczywistą trasę i tryb wykonania, zamiast przypisywać mechanizm na podstawie logo. Jeśli oba ekrany prowadzą do tych samych pul, nadal mogę porównać wynik, ale nie przedstawiam tego jako pojedynku dwóch całkowicie odrębnych rynków.

W wariancie CEX sprawdzam także, czy istnieje bezpośrednia para X/USDC. Jeśli muszę najpierw zamienić X na inne aktywo, a dopiero potem na USDC, liczę obie wymiany. Niska prowizja od jednego zlecenia nie opisuje kosztu dwóch zleceń.

Prowizja, spread, price impact i slippage: czego nie dodawać dwa razy

Różnica „prowizja a spread krypto” robi się istotna przy konkretnym zleceniu. Prowizję widzę jako opłatę. Spread i głębokość rynku wpływają na cenę, po której mogę sprzedać całą kwotę. Przy sprzedaży interesują mnie dostępne oferty kupna, a nie ostatnia transakcja z wykresu.

Na CEX-ie porównuję wynik realizacji całego zlecenia po dostępnych poziomach arkusza, pomniejszony o należną prowizję. Dokumentacja opłat Coinbase Advanced wskazuje zależność od produktu, progu opłat i sposobu realizacji maker/taker oraz konieczność sprawdzenia podglądu zlecenia. Samo ustawienie limitu nie zapewnia stawki maker: limit realizowany od razu może pobrać płynność.

Do wstępnego sprawdzenia opłat przydaje się porównywarka giełd kryptowalut. Nie zastępuje jednak wyceny dla Twojej kwoty, spreadu, kosztów transferów ani sprawdzenia konkretnej trasy on-chain.

Przy swapie rozdzielam wpływ mojego zlecenia na cenę od zmiany między wyceną a wykonaniem. Takie rozróżnienie stosuje też Uniswap w opisie price impact i price slippage. Pierwszy mechanizm wiąże się z samą wymianą i dostępną płynnością. Drugi mówi o różnicy między oczekiwanym a zrealizowanym kursem.

Element Jak ujmuję go w porównaniu
Prowizja giełdy, opłata puli, opłata interfejsu lub agregatora Sprawdzam, czy została już uwzględniona w wyświetlanej kwocie wyjściowej. Odejmuję tylko brakującą część.
Spread i wpływ wielkości zlecenia na kurs Jeśli wynik jest wyceną całej kwoty po dostępnej płynności, skutki są już w kursie. Nie odejmuję dodatkowo procentu z ostrzeżenia.
Tolerancja slippage To parametr dopuszczalnego pogorszenia wykonania, nie automatycznie pobierana prowizja.
Gaz ponoszony osobno Zapisuję ilość tokena gazowego i jego wartość w USDC. Dodaję do kosztu ekonomicznego, jeśli nie została już rozliczona w ofercie.
Wypłata i dodatkowe transfery Uwzględniam wszystkie operacje potrzebne do otrzymania właściwego tokena na docelowym adresie.

Jeżeli ekran pokazuje 1993 USDC po uwzględnieniu opłat swapu, nie odejmuję tych opłat ponownie. Tak samo nie odejmuję drugi raz price impact, który został już odzwierciedlony w wycenie. Lista kosztów ma wyjaśniać wynik, a nie tworzyć kolejne potrącenia za tę samą rzecz.

Jak zbieram oferty, żeby porównanie miało sens

Nie zestawiam wczorajszego zrzutu z CEX-u z dzisiejszą ofertą agregatora. Przygotowuję ekrany wcześniej i zbieram wyceny w krótkim oknie, na przykład w ciągu jednej minuty. To moja procedura robocza, nie obietnica, że w minutę rynek się nie zmieni.

  1. Blokuję parametry: ta sama liczba X, ta sama sieć, te same kontrakty wejścia i wyjścia, ten sam adres docelowy. Wszędzie wyceniam dokładne wejście, czyli wymianę ustalonej liczby X.
  2. Odrzucam niewykonalne trasy: sprawdzam dostępność usługi dla mojego konta, sieć depozytu X, wypłatę właściwego USDC, minima i limity. Sprawdzam też, czy mam czym pokryć gaz.
  3. Zapisuję godzinę każdej wyceny: datę, czas z sekundami i strefę czasową. Przy ofertach on-chain również numer bloku, jeżeli jest dostępny. Zachowuję zrzut lub eksport szczegółów.
  4. Rozwijam szczegóły: zapisuję kwotę oczekiwaną, kwotę minimalną, opłaty, szacunek gazu, trasę oraz termin ważności oferty, jeśli go podano. Na CEX-ie zapisuję pary, tryb zlecenia i właściwy próg prowizji.
  5. Ujednolicam punkt końcowy: do wyceny CEX-u dopisuję wypłatę, do pozostałych ofert wszystkie brakujące operacje. Każdą pozycję oznaczam „już w wyniku” albo „do doliczenia”.
  6. Odświeżam najlepsze oferty przed decyzją: jeśli przewaga znika po odświeżeniu albo jest mniejsza niż wahania wycen w tym oknie, nie ogłaszam trwałego zwycięzcy.

Opis ekranu wymiany Uniswap pokazuje, gdzie szukać opłat, kosztu sieci, routingu, price impact i maksymalnego slippage wraz z minimalnym wynikiem. To dobry przykład, dlaczego sama duża liczba w polu „otrzymasz” nie wystarcza do oceny całej operacji.

Nie porównuję też oczekującego zlecenia maker z natychmiastowym swapem tak, jakby oba były gotową sprzedażą. Zlecenie maker może się nie wykonać albo wykonać częściowo. Jeśli plan zakłada czekanie, zapisuję to jako osobny wariant z własnym terminem i ryzykiem.

Oferta z CEX-u przed depozytem jest tylko wyceną

Tu pojawia się ograniczenie, którego żadna tabelka nie usunie. X jest jeszcze w moim portfelu. Zanim trafi na CEX, sieć musi przetworzyć transfer, a giełda zaksięgować depozyt. Dopiero wtedy sprzedam tokeny. Dzisiejszy arkusz nie rezerwuje dla mnie ceny na moment przyszłego księgowania.

W porównaniu zaznaczam więc, czy widzę bieżącą symulację, ofertę o określonej ważności, czy już wykonane zlecenie. Również wycena DEX-u może zmienić się przed zatwierdzeniem transakcji. Zrzut ekranu nie jest potwierdzeniem wyniku.

Przy porównaniu przed wysłaniem X na giełdę zapisuję cenę referencyjną z momentu zebrania ofert. Po zakończeniu mogę policzyć odchylenie od tego punktu, ale nie nazywam całej różnicy prowizją. Zawiera ona również ruch rynku w czasie transferu i wykonania. To praktyczny koszt lub korzyść wyboru trasy, lecz inna kategoria niż opłata giełdy.

Przykład: ta sama kwota wejścia, trzy różne rachunki

Wracam do modelowych 1000 X. Ustalam wspólną wartość referencyjną na 2000 USDC, czyli 2 USDC za X. To wyłącznie punkt odniesienia do obliczeń, a nie zapewnienie, że ktokolwiek kupi ode mnie całość po takim kursie.

Zakładam, że każda trasa jest dostępna i kończy się właściwym USDC w tej samej sieci. X nie ma opłaty od transferu, a dodatkowe koszty ponoszę z osobnej rezerwy tokena gazowego. Wyniki poniżej są wymyślonym scenariuszem rachunkowym, bez rzeczywistych ofert i bez wykonania transakcji.

Pozycja CEX DEX Agregator
Wartość referencyjna 1000 X 2000 USDC 2000 USDC 2000 USDC
Kwota po wymianie, z uwzględnionymi opłatami handlu 1992 USDC 1991 USDC 1993 USDC
Wypłata USDC potrącana z tej kwoty 2 USDC 0 USDC 0 USDC
USDC docierające do portfela 1990 USDC 1991 USDC 1993 USDC
Osobno zapłacony gaz, w przeliczeniu na USDC 1,50 USDC 5 USDC 3 USDC
Wynik ekonomiczny po osobnym koszcie gazu 1988,50 USDC 1986 USDC 1990 USDC
Łączna różnica względem 2000 USDC 11,50 USDC 14 USDC 10 USDC

W modelu CEX sprzedaż daje 1996 USDC przed prowizją, a prowizja wynosi 4 USDC. Dlatego w drugim wierszu jest już 1992 USDC. Po wypłacie za 2 USDC do portfela trafia 1990 USDC. Koszt wysłania X na giełdę, opłacony osobno tokenem gazowym, ma wartość 1,50 USDC. Nie dodaję kolejnej opłaty sieciowej za wypłatę, bo przyjąłem, że pobrane 2 USDC wyczerpują koszt tego etapu.

W kolumnach DEX i agregatora kwoty po wymianie uwzględniają już opłaty puli i ewentualne opłaty usługi. Price impact również jest już w wycenie. Wiersz gazu obejmuje wszystkie potrzebne w danym wariancie, osobno płatne transakcje, w tym ewentualną dodatkową transakcję przygotowawczą.

Wynik ekonomiczny nie jest saldem USDC. Przy agregatorze do portfela wpływa 1993 USDC, a osobno zużywam token gazowy wart 3 USDC. Nie twierdzę, że otrzymuję przelew 1990 USDC. Ta druga liczba służy do porównania łącznego uszczuplenia mojego majątku.

W tym scenariuszu agregator wygrywa ekonomicznie z CEX-em o 1,50 USDC, a bezpośredni DEX wypada najsłabiej mimo większej liczby USDC w portfelu niż po trasie CEX. Inne wyceny mogą odwrócić kolejność. To przykład liczenia, a nie ranking platform.

Dwa proste wzory na pełny koszt swapu

Wynik ekonomiczny = USDC otrzymane na docelowym adresie − wartość kosztów zapłaconych osobno, których nie uwzględnia już ta kwota.

Koszt względem punktu odniesienia = wartość referencyjna tokenów wejściowych − wynik ekonomiczny.

Żeby dostać procent, dzielę drugi wynik przez tę samą wartość referencyjną i mnożę przez 100%. Dla modelowego agregatora wychodzi 10 / 2000 × 100% = 0,5%. To łączna różnica względem przyjętej referencji, nie stawka prowizji agregatora.

Każdy koszt w ETH czy innym tokenie gazowym zapisuję także w jednostkach tego tokena. Do porównania ofert przeliczam go po jednym, wspólnym kursie z tego samego okna czasowego. Po wykonaniu zapisuję faktyczne zużycie i przyjęty kurs rozliczenia. Inaczej część różnicy mogłaby wynikać wyłącznie ze zmiany sposobu przeliczenia gazu.

Jeżeli usługa pokrywa gaz lub rozlicza go już w tokenie wejściowym albo wyjściowym, sprawdzam szczegóły i nie doliczam fikcyjnego drugiego gazu. Gdy koszt zmniejsza liczbę X przekazaną do wymiany, trzeba to uwzględnić od początku: porównujemy ten sam całkowity ubytek X, a nie różne budżety ukryte pod tą samą etykietą.

5 USDC boli przy 200, ale większa kwota też ma swoją cenę

Załóżmy stały koszt sieci równy 5 USDC. Przy wartości wymiany 200 USDC pochłania 2,5%. Przy 10 000 USDC to 0,05%. Te kwoty są moim modelem kosztu stałego, nie aktualnymi stawkami którejkolwiek sieci.

Łatwo wyciągnąć z tego błędny wniosek: „zawsze opłaca się zebrać większą kwotę”. Większe zlecenie może mocniej przesunąć cenę, wejść w słabsze poziomy arkusza albo wymagać mniej korzystnej trasy. Koszt sieci maleje procentowo, a koszt wykonania może rosnąć.

Dlatego sprawdzam wycenę dla kwoty, którą rzeczywiście chcę wymienić. Nie mnożę oferty dla 100 X przez dziesięć, aby zgadnąć wynik dla 1000 X. Mechanizm szerzej pokazuję w artykule Wyjście z pozycji a głębokość rynku.

Zmniejszenie pojedynczego zlecenia też nie jest darmowym rozwiązaniem. Kilka swapów może oznaczać kilka opłat sieciowych, a po pierwszym wykonaniu warunki kolejnych się zmienią. Jeżeli rozważam podział, wyceniam cały plan. Nie obiecuję sobie, że suma małych transakcji powtórzy najlepszą pierwszą ofertę.

Minimalna kwota otrzymana nie oznacza gwarancji całej trasy

Oczekiwany wynik mówi, ile przewiduje bieżąca wycena. Minimalna kwota otrzymana wyznacza dolny próg wykonania zgodny z parametrami danego swapu. W standardowej atomowej transakcji on-chain naruszenie zapisanego progu powoduje jej cofnięcie. Przy innym sposobie wykonania sprawdzam zasady konkretnej usługi.

Prosty model: oczekuję 2000 USDC i dopuszczam pogorszenie o 0,5%. Uproszczony próg wynosi 1990 USDC. Nie oznacza to, że platforma od razu pobierze 10 USDC. Pozwalam na taki zakres pogorszenia, jeśli warunki wykonania się zmienią. Dokładną minimalną kwotę odczytuję z podglądu, wraz z zasadami opłat i zaokrągleń.

Próg swapu nie pokrywa automatycznie osobno opłacanego gazu, późniejszej wypłaty ani dodatkowego transferu. Nie jest też wspólną gwarancją dla sekwencji depozyt → sprzedaż na CEX-ie → wypłata. Porównuję oczekiwane wyniki z oczekiwanymi, a warunki minimalne zapisuję osobno.

Przy cofniętej transakcji wykonanej przez sieć mogę ponieść koszt przetwarzania mimo braku wymiany. Dokumentacja kosztów sieciowych Uniswap wyjaśnia ten mechanizm. To inna sytuacja niż wycena odrzucona przed wysłaniem transakcji do sieci.

Nie podnoszę tolerancji slippage tylko po to, żeby zniknął komunikat błędu. Szerszy próg pozwala na gorsze wykonanie. Jeżeli minimum jest dla mnie nieakceptowalne, oferta również jest nieakceptowalna, nawet gdy duża liczba na górze wygląda atrakcyjnie.

Najtańsza trasa może odpaść jeszcze przed porównaniem ceny

Wyobraź sobie, że CEX daje najlepszy wynik w tabeli, ale przyjmuje X wyłącznie w innej sieci niż ta, w której masz token. Nie wysyłam depozytu na próbę. Albo wyceniam dodatkowy etap i sprawdzam jego wykonalność, albo odrzucam tę trasę.

Podobnie postępuję, gdy giełda pozwala sprzedać X, lecz wypłata właściwego USDC jest wstrzymana, limit jest za niski albo dostęp do środków wymaga dodatkowej weryfikacji. Sama dostępność pary handlowej nie potwierdza dostępności całej drogi.

W wariancie on-chain powodem odrzucenia może być ryzyko kontraktu lub trasa przez protokół, którego nie akceptuję. Agregator nie usuwa ryzyka kontraktów użytych do wykonania. Niewielka oszczędność nie zmienia mojego limitu ryzyka.

Najpierw tworzę więc listę tras, które są wykonalne i mieszczą się w moich zasadach. Dopiero wśród nich wybieram korzystny wynik. Nie dopisuję pozornej dokładności, wyceniając nieznane ryzyko kontraktu na przypadkowe kilka centów.

Po wymianie sprawdzam wykonanie, a nie stary podgląd

Po zakończeniu zapisuję faktyczny ubytek X, przyrost właściwego USDC, zużyty gaz, opłaty i identyfikatory transakcji. Przy CEX-ie dochodzą potwierdzenia depozytu, realizacje zleceń i wypłata. Saldo końcowe odczytuję po zaksięgowaniu wszystkich etapów, z uwzględnieniem innych operacji, jeśli wykonywałem je w tym samym czasie.

Osobno zostawiam trzy liczby: ofertę z momentu porównania, minimum lub warunki wykonania oraz rezultat rzeczywisty. Nie wpisuję szacowanego gazu jako faktycznie poniesionego kosztu. Nie przedstawiam też wyniku wybranej trasy jako dowodu, ile dostałbym na niewykonanej alternatywie: jej cena mogła się w międzyczasie zmienić.

Mój krótki formularz przed wymianą

Ten formularz wypełniam osobno dla każdej trasy. Puste pole przy istotnym koszcie oznacza brak pełnego porównania.

  • Wejście: liczba X, sieć i kontrakt: ______
  • Cel: kontrakt USDC, sieć i adres odbiorcy: ______
  • Oferta: data, godzina ze strefą, platforma, trasa, ważność: ______
  • Oczekiwane USDC w portfelu: ______; minimum i zakres ochrony: ______
  • Opłaty już ujęte w wyniku: ______; koszty pozostałe: ______
  • Gaz osobno: ilość tokena, kurs przeliczenia i wartość w USDC: ______
  • Wynik ekonomiczny i referencja: ______
  • Wykonalność: depozyt, wypłata, limity, gaz i akceptowane ryzyko: ______
  • Po wykonaniu: rzeczywiste USDC, koszty i identyfikatory operacji: ______

Na tej podstawie wybieram jedną z trzech decyzji:

  • Wymienić: trasa jest wykonalna, koszty są znane, a oczekiwany wynik i warunki minimalne mieszczą się w moim planie.
  • Zmniejszyć kwotę: wielkość zlecenia za mocno pogarsza kurs. Ponownie wyceniam mniejszą wymianę i koszt ewentualnej reszty.
  • Poczekać: nie znam pełnego kosztu, wypłata jest niedostępna albo obecne warunki są nieakceptowalne. Pamiętam przy tym, że czekając, nadal mam ekspozycję na X.

Nie mam platformy, która zawsze wygrywa. Mam za to stały sposób porównania: to samo wejście, to samo aktywo końcowe, ten sam adres i uczciwie policzona cała droga. Dopiero wtedy niska prowizja zaczyna coś znaczyć.

FAQ — CEX czy DEX i pełny koszt swapu

Czy agregator DEX zawsze daje najtańszą wymianę?

Nie. Wynik zależy od dostępnej płynności, wielkości zlecenia, trasy i opłat. Większa kwota wyjściowa może zostać zjedzona przez osobno ponoszony gaz. Porównuję cały wynik dla konkretnej wymiany.

Czy slippage 1% oznacza prowizję 1%?

Nie. Tolerancja określa dopuszczalny zakres pogorszenia wykonania. Rzeczywisty wynik może być korzystniejszy. Prowizje i koszty sieci sprawdzam oddzielnie, bez automatycznego odejmowania całej tolerancji od wyceny.

Czy cena z wykresu wystarczy do obliczenia kosztu?

Nie. Potrzebuję wyceny sprzedaży całej mojej kwoty i uwzględnienia opłat. Cena ostatniej małej transakcji nie potwierdza, że sprzedam większe zlecenie po tym samym kursie.

Czy do porównania muszę rzeczywiście wykonać trzy wymiany?

Nie. Mogę zebrać oferty dla identycznych parametrów i wybrać jedną trasę. Wynik pozostałych pozostaje symulacją. Rzeczywiste wykonanie dokumentuję wyłącznie tam, gdzie do niego doszło.

Prezes – na rynkach od 2011 roku, z inwestowania i tradingu kontraktów futures żyję. Bloga prowadzę od 2016, YT BLOG PREZESA od 2017. Piszę o tym, co sam robię – również o błędach. Więcej o mnie →

Dodaj komentarz