Każdy kalkulator w tym serwisie coś upraszcza — inaczej byłby systemem transakcyjnym banku, a nie narzędziem edukacyjnym. Różnica między uproszczeniem a błędem polega na tym, że uproszczenie jest jawne. Ta strona jest właśnie po to: spisujemy tu wszystko, co przyjęliśmy umownie, dlaczego, i co w rzeczywistości wygląda inaczej.
Jeśli masz przeczytać z tej strony tylko jedno — przeczytaj tę tabelę. Reszta to jej rozwinięcie, sekcja po sekcji.
| Gdzie | Co upraszczamy | Co to znaczy dla Twojego wyniku |
|---|---|---|
| wszędzie | kursy pobieramy z NBP, ale stopy procentowe wpisujemy ręcznie | liczby są poglądowe — wiążącą wycenę poda wyłącznie bank |
| forward | jedna stopa na cały okres zamiast krzywej terminowej | dla terminów do roku różnica to ułamek grosza |
| opcja | zmienność historyczna zamiast implikowanej | dlatego premia jest podana jako widełki, nie jedna liczba |
| opcja | strike liczony od dzisiejszego kursu, nie terminowego | dealer nazwie „ATM" co innego niż suwak — patrz sekcja 02 |
| FRA | blokujemy dzisiejszy WIBOR + marżę | prawdziwy FRA blokuje stopę terminową z krzywej — może wyjść wyżej albo niżej |
| FRA | liczymy same odsetki, od pełnej kwoty przez cały okres | rata kapitałowa nie wchodzi; przy kredycie ratalnym saldo maleje, więc zabezpieczaj średnie saldo |
| swap | punkty i marża w jednym polu | nie widać, ile z tej liczby to zarobek banku |
| strategie opcyjne | poziomy to umowne odchyłki od kursu odniesienia | realne wynikają z wyceny opcji składowych i negocjacji |
| CFD | koszt liczony na dni, ryzyko ścieżki tylko zasygnalizowane | prawdziwe CFD rozlicza się co noc i reaguje na każdy ruch kursu |
Kursy walut, stawka WIBOR, premie, marże i punkty swapowe w kalkulatorach to wartości ilustracyjne — nie są pobierane z rynku w czasie rzeczywistym i nie należy na ich podstawie wyceniać rzeczywistych transakcji. Służą jednemu: pokazaniu mechaniki instrumentów na liczbach, które zachowują realistyczne proporcje.
| Parametr | Wartość przyjęta | W rzeczywistości |
|---|---|---|
| Kurs odniesienia EUR/PLN | 4,28912 | zmienia się w sposób ciągły w godzinach handlu |
| Kursy USD, GBP, CHF | 3,95421 / 5,01234 / 4,48703 | jw. |
| WIBOR 3M (referencyjny) | 3,85% | publikowany codziennie; różne tenory (1M, 3M, 6M…) |
| Stopy walut obcych | EUR 2,40% · USD 3,60% · GBP 3,45% · CHF 0,00% | EURIBOR 3M / SOFR 3M / SONIA 3M / SARON — zmieniają się z decyzjami banków centralnych |
Kalkulator opcji ma suwak strike'a w zakresie −2% do +2% od kursu odniesienia, domyślnie ustawiony na 0,25%, kierunkowo: dla importera (opcja call) powyżej, dla eksportera (opcja put) poniżej. W rzeczywistości naturalnym punktem odniesienia dla strike'a jest kurs terminowy (spot skorygowany o punkty swapowe wynikające z różnicy stóp procentowych PLN i waluty), nie dzisiejszy spot — a to uproszczenie, które suwak nie usuwa, tylko czyni widocznym i regulowalnym. Suwak pokazuje mechanizm, który u dealera nazywa się wyborem między ATM, ITM i OTM — z jednym zastrzeżeniem, o którym warto wiedzieć przed rozmową w banku: dealer mierzy te pojęcia od kursu terminowego, a suwak od dzisiejszego. Dla par ze złotym kurs terminowy leży wyżej niż spot, więc suwak ustawiony na 0% oznacza dla importera strike po jego stronie rynku — w języku dealera ITM, a nie neutralny ATM. Z tego powodu skróty te nie pojawiają się w samym kalkulatorze, który liczy od dzisiejszego kursu; definicje w słowniku podane są w konwencji dealerskiej, czyli względem kursu terminowego.
Do Partii 66 wszystkie poziomy były wpisane jako okrągłe odchylenia procentowe. Wygodne do rysowania i — jak się okazało po zmierzeniu — nieprawdziwe: część struktur wychodziła warta przy podpisie kilka procent nominału na korzyść jednej ze stron, choć nagłówek mówił „zero kosztu". Dziś jest inaczej i tabela niżej mówi dokładnie, co skąd się bierze.
Wszystkie poziomy liczymy od kursu terminowego (FWD), nie od dzisiejszego — bo tak liczy je dealer. Cztery struktury mają poziom finansujący wyliczony z modelu (opis niżej), reszta to nadal przyjęte odchylenia, oznaczone w tabeli. Premie opcji składowych pomijamy na wykresach dla czytelności. Przerywana linia „zwykły forward" to FWD + marża (importer) / FWD − marża (eksporter), gdzie marża pochodzi z pola na stronie.
| Strategia | Importer | Eksporter | Skąd |
|---|---|---|---|
| Korytarz zero-cost | ochrona FWD +2%, dolna granica z modelu (ok. −1,9%) | ochrona FWD −2%, górna granica z modelu (ok. +1,9%) | solver |
| Forward uczestniczący | ochrona z modelu, udział 50% | ochrona z modelu, udział 50% | solver + marża |
| Opcja z barierą (knock-out) | strike FWD +1%, bariera FWD × e^(+1,5σ√T) | strike FWD −1%, bariera FWD × e^(−1,5σ√T) | przyjęte / odchylenia |
| Spread opcyjny | strike'i FWD +0,5% i FWD +3% | strike'i FWD −0,5% i FWD −3% | przyjęte |
| Window forward | FWD + marża + 0,4% | FWD − marża − 0,4% | przyjęte |
| NDF | FWD ± marża — ten sam poziom co zwykły forward | z definicji | |
| Opcja azjatycka | strike FWD +0,2% | strike FWD −0,2% | przyjęte |
| Korytarz asymetryczny | ochrona FWD +0,8%, druga granica z modelu | ochrona FWD −0,8%, druga granica z modelu | solver |
| Seagull | ochrona FWD +1%, sufit +3,5%, dolna granica z modelu | ochrona FWD −1%, dno −3,5%, górna granica z modelu | solver + marża |
| Forward extra | ochrona FWD +1,2%, bariera FWD −3,5% | ochrona FWD −1,2%, bariera FWD +3,5% | przyjęte |
| Opcja knock-in | strike FWD +1%, bariera FWD × e^(+1,5σ√T) | strike FWD −1%, bariera FWD × e^(−1,5σ√T) | przyjęte / odchylenia |
| Ratio forward | poziom ochrony z modelu (1× kupione, 2× sprzedane) + marża | solver + marża | |
| Akumulator / TARF | kurs FWD −0,5%, wygaszenie FWD +2% | kurs FWD +0,5%, wygaszenie FWD −2% | ilustracja |
Struktura „bez premii" jest bez premii tylko wtedy, gdy premie jej opcji składowych naprawdę się znoszą. Dla czterech struktur zadajemy poziom ochrony, a poziom finansujący szukamy bisekcją po tym samym modelu (Garman–Kohlhagen), którym serwis liczy premie wszędzie indziej: taki, przy którym suma premii wychodzi zero. Dopiero potem doliczamy marżę — tę samą, którą doliczamy do forwardu, z pola na stronie. Dzięki temu marża jest widoczna, zamiast siedzieć przypadkiem w liczbie wziętej z sufitu.
Dlaczego to zmieniliśmy: po zmierzeniu okazało się, że dawne okrągłe procenty dawały ratio forward wart +4% nominału dla banku, seagulla +1,3%, a forward uczestniczący −1,2%, czyli prezent dla klienta. Żadna z tych trzech struktur nie dałaby się kupić na rynku w takiej postaci. Dziś marża wszystkich mieści się w przedziale 0,03–0,63% nominału.
Wykresy sprawdzają barierę wyłącznie na kursie końcowym. Realna bariera bankowa jest obserwowana w sposób ciągły — wystarczy, że kurs dotknie jej na chwilę o trzeciej w nocy na rynku azjatyckim. Obie wersje umiemy wycenić: końcową wzorami zamkniętymi (opcja z barierowym strikiem plus opcja cyfrowa), ciągłą wzorami Reinera–Rubinsteina. Różnica wynosi około jednej piątej wartości ochrony.
I działa w obie strony, co jest rzadko mówione: przy barierze wyłączającej ciągła obserwacja zabiera ok. 19% wartości (łatwiej opcję zgasić), przy włączającej dodaje ok. 19% (łatwiej ją obudzić). Ciągła obserwacja szkodzi, gdy bariera coś zabiera, i pomaga, gdy coś daje.
Kontrola modelu, którą uruchamiamy przed każdą publikacją: opcja włączana + wyłączana musi równać się zwykłej. Jeśli ta równość nie wychodzi, test się zatrzymuje i żadna liczba stąd nie idzie na stronę.
Kalkulator FRA porównuje pełne koszty odsetkowe kredytu za wybrany okres — bo tak firma odczuwa różnicę w portfelu. Formalnie FRA rozlicza się inaczej: jednorazową płatnością netto na początku okresu odsetkowego — strony wypłacają sobie różnicę między stopą FRA a rzeczywistą stawką referencyjną, przemnożoną przez nominał i okres, zdyskontowaną na dzień rozliczenia. Sam kredyt firma bierze osobno, po stopie rynkowej — a rozliczenie FRA tę stopę ekonomicznie „koryguje" do zablokowanego poziomu. Wynik ekonomiczny obu ujęć jest praktycznie tożsamy (różnica to efekt dyskonta za krótki okres); różni się księgowanie i moment przepływu. Drugie uproszczenie: kalkulator „blokuje" dzisiejszy odczyt WIBOR-u powiększony o marżę, podczas gdy rzeczywisty FRA blokuje stopę terminową z krzywej — rynkową wycenę przyszłego WIBOR-u, która może różnić się od dzisiejszego odczytu w obie strony. Edukacyjnie pokazujemy mechanizm ochrony; wiążący poziom stopy FRA zawsze poda instytucja.
Ta sekcja jest dla osób, które robią to zawodowo — i dlatego stoi tu z liczbami, a nie z zapewnieniem. Do wersji 71 nasza formuła kursu terminowego była prostsza niż rynkowa i ta sekcja podawała, o ile. Od wersji 72 jest taka sama. Poniżej co zostało uproszczone naprawdę.
| Co | Serwis liczy | Rynek liczy |
|---|---|---|
| Kurs terminowy | S × (1 + rPLN·d/365) ÷ (1 + robca·d/baza) | to samo |
| Baza odsetkowa waluty obcej | ACT/360 dla EUR, USD, CHF; ACT/365 dla GBP | to samo |
| Wycena opcji | Garman–Kohlhagen, kapitalizacja ciągła | to samo |
| Annualizacja zmienności | √252 z dziennych zmian logarytmicznych | 252–260 sesji, zależnie od domu |
| Co | Serwis liczy | Rynek liczy |
|---|---|---|
| Krzywa stóp | jedna stawka na cały okres | krzywa terminowa — inna stawka na każdy termin |
| Bid/ask na stopach | jedna liczba | dwie strony, jak przy kursie |
| Kapitalizacja | odsetki proste | proste do roku, składane powyżej |
Do wersji 71 kurs terminowy liczyliśmy liniowo — S × (1 + (rPLN − robca) × d/365) — i obie waluty dzieliliśmy przez 365. Rozbieżność wobec konwencji rynkowej była zmierzona i stała w tym miejscu: 13–18 PLN na 30 dniach, 45–51 PLN na 90, 92–107 PLN na 180 i 146–352 PLN na roku, licząc na 100 000 jednostek.
Argumentem za prostszą formułą była sprawdzalność w pamięci. Argument upadł w momencie, w którym stopy stały się edytowalne: skoro można wpisać własne, to serwis musi liczyć nimi tak, jak policzy nimi bank — inaczej porównanie z kwotowaniem dealera nie ma sensu. Ta rozbieżność już nie istnieje.
Zostaje jedno: przy stopie ujemnej mianownik formuły mógłby zejść do zera. Dlatego panel przyjmuje stawki od 0,00% w górę. Nie blokuje to ujemnych punktów terminowych — te pojawią się, gdy tylko wpiszesz walutę obcą wyżej niż złotego, i serwis je obsługuje.
Kurs forwardu w kalkulatorach to nie dzisiejszy kurs powiększony o marżę. Składa się z trzech elementów: kurs dziś + punkty terminowe + marża banku. Punkty terminowe wynikają z tego, że pieniądz w PLN i w walucie obcej pracuje na innej stopie procentowej; liczymy je jako różnicę między kursem terminowym a dzisiejszym, gdzie kurs terminowy to S × (1 + rPLN·d/365) ÷ (1 + robca·d/baza) — każda waluta na swojej bazie odsetkowej (ACT/360 dla EUR, USD i CHF; ACT/365 dla PLN i GBP). Jedna formuła obsługuje cały serwis, więc forward, swap i porównanie nie mogą pokazać trzech różnych liczb — a od wersji 71 pilnuje tego osobny test, bo raz już pokazały. Punkty nie są opłatą — bank na nich nie zarabia i mogą być ujemne (gdy stopa waluty obcej przewyższa PLN, kurs terminowy jest niższy od dzisiejszego). Jedynym zarobkiem banku jest marża, wpisywana ręcznie w groszach. Stopy procentowe użyte do wyliczenia są aktualizowane ręcznie (brak darmowego API); data ostatniej aktualizacji pokazuje się przy każdym wyliczeniu. Od wersji 72 nie musisz na nas czekać: wpisz własne w panelu poniżej, a przeliczy się cały serwis. Uproszczenia, które zostają: przyjmujemy jedną stopę dla całego okresu zamiast krzywej terminowej i pomijamy różnicę bid/ask na stopach — wiążący kurs terminowy zawsze poda instytucja.
LIBOR nie istnieje — ostatnie notowania zniknęły we wrześniu 2024. W panelu stoją jego następcy, których rynek naprawdę używa: SOFR dla dolara, EURIBOR dla euro, SONIA dla funta, SARON dla franka.
WIBOR jest w trakcie wygaszania. Wolno go stosować w nowych umowach tylko do 31 grudnia 2026; od 1 stycznia 2027 w nowych umowach obowiązuje wyłącznie POLSTR. Dla umów już zawartych WIBOR 3M będzie publikowany do końca 2036 roku. Gdy POLSTR zacznie obowiązywać, w polu PLN wpiszesz po prostu jego wartość — formuła jest ta sama, zmienia się nazwa wskaźnika.
Kursy walut pobieramy automatycznie z API NBP. Stóp procentowych pobrać nie możemy z dwóch powodów. Technicznie: NBP udostępnia publiczne API wyłącznie dla kursów walut i złota — stopy procentowe ani WIBOR nie są tam publikowane, a administrator WIBOR-u (GPW Benchmark) nie oferuje darmowego interfejsu. Licencyjnie: WIBOR, EURIBOR, SONIA i SARON to licencjonowane wskaźniki referencyjne, a ich administratorzy ograniczają komercyjne wykorzystanie publikowanych wartości. Dlatego stopy wpisujemy ręcznie, a przy każdym wyliczeniu podajemy datę ostatniej aktualizacji.
Żeby przeoczenie nie przechodziło niezauważone, serwis sam się przyznaje: gdy stopy mają ponad 45 dni, nad kalkulatorami pojawia się notka o ich wieku; powyżej 120 dni notka jest wyraźniejsza. Wartości aktualizujemy po każdym posiedzeniu decyzyjnym Rady Polityki Pieniężnej. Terminy w 2026 r.: 03–04.02 · 03–04.03 · 31.03–01.04 · 05–06.05 · 02–03.06 · 30.06–01.07 · 01–02.09 · 06–07.10 · 03–04.11 · 01–02.12. Na horyzoncie zmiana wskaźnika: WIBOR zastępuje POLSTR. Harmonogram GPW Benchmark: w nowych umowach WIBOR wolno stosować do 31 grudnia 2026, od 1 stycznia 2027 w nowych umowach obowiązuje wyłącznie POLSTR, a dla umów już zawartych WIBOR 3M publikowany jest do końca 2036 r. (poprzednia wersja tej strony podawała styczeń 2028 — to było nieaktualne).
Tabela „widełek wyniku" na stronie porównania pokazuje najlepszy i najgorszy przypadek każdego wariantu przy założonym ruchu kursu o ±10% od dzisiejszego poziomu. To liczba przyjęta do porównania rozpiętości, nie prognoza ani nie granica możliwych kursów — rzeczywisty kurs może wyjść poza ten przedział w obie strony. Kolumna „kurs budżetowy" porównuje najgorszy przypadek z kursem, który użytkownik sam wpisał jako przyjęty w swojej kalkulacji ceny; to arytmetyczne porównanie dwóch liczb podanych przez użytkownika, nie ocena ani wskazanie instrumentu.
Do szacunku premii potrzebna jest zmienność kursu — i musi być osobna dla każdej pary. EUR/PLN porusza się zauważalnie spokojniej niż USD/PLN, więc jedna wspólna liczba zawyżałaby premię dla euro i zaniżała dla dolara. Akurat ta liczba trafia potem do rozmowy z bankiem, więc nie może pochodzić z założenia.
Zmienności implikowanej — tej, po której bank faktycznie wycenia opcję — nie da się pobrać: opcje na złotego zawierane są wyłącznie dwustronnie, publicznego arkusza nie ma. Liczymy więc zmienność zrealizowaną, z tego samego źródła, z którego bierzemy kursy: 255 ostatnich fixingów tabeli A NBP (rok roboczy), logarytmiczne zmiany dzienne, odchylenie standardowe, annualizacja przez pierwiastek z 252. Osobno dla każdej pary, cache dzienny, przy braku połączenia wartości zapasowe oznaczone jako takie.
Samą premię liczy model Garmana-Kohlhagena — wzór Blacka-Scholesa w wersji walutowej, gdzie każda z dwóch walut ma własną stopę procentową. Wchodzą do niego: dzisiejszy kurs, wybrany strike, termin, zmienność pary oraz stopy PLN i waluty obcej. Spotykane w podręcznikach przybliżenie 0,4 × zmienność × √(dni/365) × kurs × kwota jest dobre, ale opisuje opcję przy kursie terminowym, a strike w kalkulatorze stoi przy kursie dzisiejszym — przy odsuwaniu strike'a rozjeżdża się o kilkadziesiąt procent. Sprawdzenie zgodności obu: dla EUR/PLN, 90 dni, 100 000 EUR przybliżenie daje 3881 PLN, a pełny model przy strike'u równym kursowi terminowemu 3849 PLN — różnica poniżej 1%, co potwierdza, że oba opisują to samo zjawisko, tylko w różnych punktach odniesienia.
Premię podajemy jako widełki, nie jedną liczbę — od 80% do 135% wyliczenia. Powód niezmieniony: zmienność zrealizowana bywa niższa od implikowanej, a do ceny dochodzi jeszcze marża instytucji. Widełki mają odpowiadać na pytanie „czy oferta banku mieści się w rozsądnym przedziale", a nie udawać wyceny. Model nie zna marży banku, kosztu zabezpieczenia pozycji ani uśmiechu zmienności — wiążącą cenę poda wyłącznie instytucja finansowa, a najlepszą weryfikacją pozostaje porównanie ofert 2–3 instytucji.
Siatka kursowa na stronie „Twój scenariusz" obejmuje od −30 do +30 groszy względem kursu odniesienia, co 5 groszy — trzynaście wierszy. Zakres przyjęto do porównania mechaniki; nie jest przedziałem prognozy ani limitem ryzyka, kurs może wyjść poza niego w obie strony. Żaden wiersz ani żadna kolumna nie są oznaczane jako lepsze — wyróżniony jest wyłącznie wiersz z dzisiejszym kursem, jako punkt odniesienia.
Ekran, PDF i plik Excel czytają ten sam zestaw liczb: obliczenia wykonywane są raz, eksport tylko je zapisuje. Arkusz zawiera wartości martwe (bez formuł i łączy), żeby nikt nie przeliczył go inaczej, niż wygląda ekran. Każdy eksport nosi stempel: wersja metodologii i numer wydania, kurs odniesienia z datą i źródłem, data stóp procentowych, data wygenerowania. Data kursu i data stóp są podawane osobno, bo pochodzą z dwóch różnych źródeł i mają różną świeżość — dzisiejszy fixing NBP może współistnieć ze stopami sprzed kilku tygodni.
W kalkulatorze swapa punkty swapowe (plus marżę banku) wpisuje się ręcznie jako jedną liczbę w groszach. W rzeczywistości punkty swapowe wynikają z różnicy stóp procentowych między PLN a walutą obcą za dany okres — i bywają ujemne: gdy stopa waluty obcej przewyższa stopę PLN, kurs terminowy jest niższy od spot i „koszt" punktów zamienia się w drobny zysk posiadacza waluty. Bank do rynkowych punktów dolicza własną marżę. W kalkulatorze forwardu punkty terminowe liczone są osobno (patrz sekcja 04a) — pole „marża" zawiera już wyłącznie zarobek banku. W kalkulatorze swapa pozostaje jedno pole zbiorcze.
Kalkulator CFD liczy spread (w pipsach od nominału) i swap dzienny (stała kwota × liczba dni). W rzeczywistości swap dzienny zmienia się w czasie wraz ze stopami procentowymi, a kluczowe ryzyko CFD — bieżąca wycena i margin call — zależy od ścieżki kursu w trakcie życia pozycji, nie od kursu końcowego. Kalkulator wylicza konkretne kursy progowe margin call (strata zjada depozyt do 100% wymaganego) i stop out (50% — standard ESMA przy dźwigni 1:20) na podstawie wpisanego depozytu — ale nadal na kursie końcowym: żaden wykres punktu końcowego nie odda tygodnia nerwowej zmienności w środku okresu, a bariery depozytowe reagują na ścieżkę, nie na finał. Brokerzy dodatkowo miewają limity czasu utrzymywania pozycji.
Waluta, kwota, termin, rola (importer/eksporter) i kurs scenariusza są przechowywane centralnie: w adresie URL (dzięki czemu link można skopiować i wysłać — odbiorca zobaczy ten sam scenariusz) oraz w pamięci przeglądarki (dzięki czemu przejście między podstronami przez menu nie zeruje ustawień). Zmiana dowolnego z tych parametrów w dowolnym miejscu przelicza wszystkie kalkulatory. Dane pozostają w Twojej przeglądarce — serwis nie wysyła ich na żaden serwer.
Suwaki kursu obejmują pełny zakres historyczny danej waluty — zaokrąglone widełki wyznaczone przez skrajne fixingi NBP z lat 2000–2025: EUR 3,15–5,10 · USD 1,95–5,15 · GBP 3,95–7,65 · CHF 1,90–5,15. Skoro takie kursy już się zdarzyły, można nimi uczciwie testować scenariusze. Uwaga techniczna: osie wykresów strategii pozostają na węższym zakresie (ok. −16%/+19% od kursu odniesienia) — inaczej charakterystyczne załamania profili zlałyby się w jedną kreskę. Przy kursie z suwaka poza zakresem wykresu pomarańczowa kropka zatrzymuje się na jego krawędzi, ale wszystkie kwoty pod wykresem liczą się dalej z pełną dokładnością.