Strasmore Research
Edukacja Matt ConnorAutor: Matt Connor

Stopa wolna od ryzyka we wskaźniku Sharpe’a

Analiza wpływu zmienności stopy wolnej od ryzyka na wskaźnik Sharpe’a. Wyjaśniamy jak poprawnie dopasować rentowność obligacji skarbowych do częstotliwości stóp zwrotu portfela.

Stopa wolna od ryzyka w wskaźniku Sharpe’a to stopa zwrotu, którą można było uzyskać w tym samym okresie bez podejmowania ryzyka, które jest oceniane. Jest to szereg czasowy, z jednym odczytem na okres, wyrażony w walucie stóp zwrotu. Należy dopasować jego częstotliwość do częstotliwości stóp zwrotu i odejmować go okres po okresie. Urocznienie (annualizacja) następuje dopiero na samym końcu.

Pominięcie tej procedury jest najczęstszym błędem w publikowanych wskaźnikach Sharpe’a. Przyjęcie jednej wartości z dwudziestoletniej historii stóp zwrotu, zazwyczaj bieżącej rentowności obligacji skarbowych (Treasury bill), sprawia, że rok 2009 jest oceniany według tej samej poprzeczki co rok 2024. Nasz przewodnik po wskaźniku Sharpe’a omawia, co mierzy ten wskaźnik. Niniejsza strona opisuje dane wejściowe, których prawie nikt nie dokumentuje.

Stopa wolna od ryzyka nie jest stała

Wskaźnik Sharpe’a mierzony w okresie dwudziestu lat obejmuje historię zmiennych stóp procentowych. Poniższy panel przedstawia trzymiesięczne obligacje skarbowe, sprowadzając każdy rok kalendarzowy do średniej oraz zakresu wahań.

ZapytanieRentowność 3-miesięcznych obligacji skarbowych w ujęciu rocznym
Dokładny kod SQL dla każdej liczby
SELECT
    toString(toYear(date))                  AS year,
    round(avg(toFloat64(yield_3_month)), 2) AS avg_bill_pct,
    round(min(toFloat64(yield_3_month)), 2) AS low_bill_pct,
    round(max(toFloat64(yield_3_month)), 2) AS high_bill_pct
FROM global_markets.treasury_yields
WHERE date >= '2005-01-01'
  AND yield_3_month IS NOT NULL
GROUP BY year
ORDER BY year
Run this yourself

Roczna średnia wyniosła 3.22% w 2005 oraz 3.74% w 2026, w ciągu 22 lat kalendarzowych. Kluczowy jest przebieg zmian między tymi dwoma odczytami. Linia spada do minimum, utrzymuje się tam przez większość dekady, a następnie ponownie rośnie. Kolumny wartości minimalnych i maksymalnych pokazują, jak bardzo stopa zmieniała się w ciągu pojedynczych lat, dlatego nawet roczny wskaźnik Sharpe’a wymaga dopasowanego szeregu danych, a nie pojedynczego notowania.

Która stopa wolna od ryzyka powinna być użyta we wskaźniku Sharpe’a

O wyborze decydują cztery właściwości.

  1. Krótki termin zapadalności. Stopa musi być niemal pewna w jednym okresie pomiarowym. Trzymiesięczna obligacja skarbowe nadaje się do obliczeń miesięcznych. Obligacja dziesięcioletnia nie, ponieważ jej cena zmienia się w trakcie miesiąca, który jest mierzony.
  2. Waluta stopy zwrotu. Strategia denominowana w EUR jest oceniana względem obligacji skarbowych w EUR.
  3. Częstotliwość stopy zwrotu. Rentowności obligacji są podawane jako stopy roczne, a kwotowanie roczne musi zostać przeliczone przed odjęciem od stopy zwrotu miesięcznej.
  4. Porównywalne definicje stóp zwrotu po obu stronach. Rentowność obligacji to jej całkowity zwrot, więc stopa zwrotu strategii wykluczająca dywidendy nie jest mierzona na tych samych zasadach. Stopa zwrotu z ceny a całkowita stopa zwrotu omawia tę różnicę.

W konwersji z punktu trzeciego stosuje się dwie konwencje. Proste dzielenie dzieli kwotowanie roczne przez dwanaście. Procent składany wykorzystuje pierwiastek dwunastego stopnia z sumy jedności i stopy rocznej. Dla hipotetycznej obligacji o rentowności 5% daje to odpowiednio 0,4167% i 0,4074% w skali miesiąca – różnica około jednego punktu bazowego, która powtarza się w każdym miesiącu próby. Panele tutaj stosują procent składany. Jeśli rentowności obligacji interesują inwestora jako lokata, a nie jako poprzeczka, stopa dywidendy a rentowność obligacji skarbowych oraz gdzie lokować wolną gotówkę omawiają to zagadnienie.

Jak zbudować szereg miesięcznych stóp zwrotu nadmiarowego

Konstrukcja jest mechaniczna: należy przyjąć ostatni kurs zamknięcia każdego miesiąca, obliczyć miesięczną stopę zwrotu, przeliczyć miesięczne kwotowanie obligacji na stopę miesięczną, a następnie odjąć. Wynikiem jest szereg stóp zwrotu nadmiarowego, jedna liczba na miesiąc. Jak mierzone są miesięczne stopy zwrotu szczegółowo omawia składnik stopy zwrotu.

ZapytanieMiesięczna stopa zwrotu, miesięczna stopa wolna od ryzyka oraz stopa nadmiarowa, 2020–2024
Dokładny kod SQL dla każdej liczby
WITH
    monthly_px AS
    (
        SELECT
            toStartOfMonth(date)           AS m,
            argMax(toFloat64(close), date) AS month_close
        FROM global_markets.stocks_daily_aggs
        WHERE ticker = 'SPY'
          AND date >= '2019-12-01'
          AND date <  '2025-01-01'
        GROUP BY m
    ),
    prior_px AS
    (
        SELECT
            addMonths(m, 1) AS m,
            month_close     AS prev_close
        FROM monthly_px
    ),
    monthly_rf AS
    (
        SELECT
            toStartOfMonth(date)                                       AS m,
            pow(1 + avg(toFloat64(yield_3_month)) / 100, 1.0 / 12) - 1 AS rf_month
        FROM global_markets.treasury_yields
        WHERE date >= '2019-12-01'
          AND date <  '2025-01-01'
          AND yield_3_month IS NOT NULL
        GROUP BY m
    )
SELECT
    toString(cur.m)                                                      AS month,
    round(100 * (cur.month_close / prv.prev_close - 1), 2)               AS spy_ret_pct,
    round(100 * rf.rf_month, 3)                                          AS rf_pct,
    round(100 * (cur.month_close / prv.prev_close - 1 - rf.rf_month), 2) AS excess_pct
FROM monthly_px AS cur
INNER JOIN prior_px AS prv ON prv.m = cur.m
INNER JOIN monthly_rf AS rf ON rf.m = cur.m
ORDER BY cur.m
Run this yourself

Są to kursy zamknięcia SPY, więc kolumna stopy zwrotu to stopa zwrotu z ceny bez uwzględnienia dywidend. Kolumna stopy wolnej od ryzyka otwiera się wartością 0.128% dla pierwszego miesiąca i zamyka wartością 0.359%. W zestawieniu z miesięcznymi wahaniami akcji rzędu kilku procent, stopa wolna od ryzyka wygląda jak zaokrąglenie. W ciągu 60 miesięcy odejmowania stanowi ona całą różnicę między dwoma wskaźnikami Sharpe’a, które rzekomo mierzą to samo.

Najpierw odejmij, potem annualizuj

Po zestawieniu szeregów dostępne są dwie kolejności działań, które dają różne wyniki. Najpierw nadmiar: odejmij stopę miesięczną od miesięcznej stopy zwrotu, a następnie annualizuj szereg nadmiarowy. Najpierw annualizacja: skapitalizuj stopy zwrotu do wartości rocznej, skapitalizuj rentowność obligacji do wartości rocznej, a następnie odejmij jedną od drugiej.

ZapytanieRoczna premia za ryzyko: odejmowanie miesięczne a roczna annualizacja składników
Dokładny kod SQL dla każdej liczby
WITH
    monthly_px AS
    (
        SELECT
            toStartOfMonth(date)           AS m,
            argMax(toFloat64(close), date) AS month_close
        FROM global_markets.stocks_daily_aggs
        WHERE ticker = 'SPY'
          AND date >= '2004-12-01'
          AND date <  '2025-01-01'
        GROUP BY m
    ),
    prior_px AS
    (
        SELECT
            addMonths(m, 1) AS m,
            month_close     AS prev_close
        FROM monthly_px
    ),
    monthly_rf AS
    (
        SELECT
            toStartOfMonth(date)                                       AS m,
            pow(1 + avg(toFloat64(yield_3_month)) / 100, 1.0 / 12) - 1 AS rf_month
        FROM global_markets.treasury_yields
        WHERE date >= '2004-12-01'
          AND date <  '2025-01-01'
          AND yield_3_month IS NOT NULL
        GROUP BY m
    ),
    excess AS
    (
        SELECT
            cur.m                                             AS m,
            cur.month_close / prv.prev_close - 1              AS ret,
            rf.rf_month                                       AS rf_month,
            cur.month_close / prv.prev_close - 1 - rf.rf_month AS exc
        FROM monthly_px AS cur
        INNER JOIN prior_px AS prv ON prv.m = cur.m
        INNER JOIN monthly_rf AS rf ON rf.m = cur.m
    )
SELECT
    concat(toString(intDiv(count(), 12)), '-year')            AS horizon,
    round(100 * (exp(12 * avg(log(1 + exc))) - 1), 2)         AS excess_first_pct,
    round(100 * ((exp(12 * avg(log(1 + ret))) - 1)
               - (exp(12 * avg(log(1 + rf_month))) - 1)), 2)  AS annualize_first_pct,
    round(100 * ((exp(12 * avg(log(1 + ret))) - 1)
               - (exp(12 * avg(log(1 + rf_month))) - 1)
               - (exp(12 * avg(log(1 + exc))) - 1)), 3)       AS gap_pct
FROM excess
CROSS JOIN (SELECT arrayJoin([1, 3, 5, 10, 20]) AS years) AS hz
WHERE m >= subtractYears(toDate('2025-01-01'), years)
GROUP BY years
ORDER BY years
Run this yourself

W oknie 20-year wynik przy odejmowaniu najpierw wynosi 6.49% rocznie wobec 6.59% przy drugiej kolejności, co daje różnicę 0.099 punktu procentowego. W oknie 1-year te same dwa obliczenia różnią się o 0.814 punktu. Wynik przy annualizacji najpierw jest zawsze wyższy niż przy odejmowaniu najpierw. Rozdziela je wyraz mieszany: kapitalizacja szeregu stóp zwrotu do wartości rocznej obejmuje zarobienie stopy obligacji powyżej samej premii za ryzyko, a późniejsze odjęcie zannualizowanej stopy obligacji nigdy tego elementu nie usuwa. Wyraz mieszany skaluje się wraz z iloczynem dwóch zannualizowanych liczb, więc jest największy, gdy obligacje oferują wysokie rentowności.

Annualizacja ma drugie rozwidlenie. Annualizacja arytmetyczna mnoży średni miesięczny nadmiar przez dwanaście. Annualizacja geometryczna stosuje procent składany: stała stopa roczna, która odtwarza wynik skumulowany. Przyjmijmy hipotetyczny dwuokresowy przebieg +50% a następnie -33,3%, co kończy się dokładnie w punkcie wyjścia. Średnia arytmetyczna wynosi +8,35% na okres, a geometryczna zero. Panele tutaj stosują procent składany. Warto zapamiętać: przy annualizacji arytmetycznej dwunastokrotność średniej stopy zwrotu minus dwunastokrotność średniej stopy obligacji jest algebraicznie tym samym, co dwunastokrotność średniego nadmiaru. Przy tej konwencji kolejność odejmowania nie zmienia licznika. Mianownik nadal się zmienia, ponieważ odchylenie standardowe nadmiarowych stóp zwrotu różni się od odchylenia standardowego surowych stóp zwrotu, gdy sama stopa procentowa ulega zmianie.

Jaki jest koszt stosowania jednej stałej stopy

Powszechnym skrótem jest przyjęcie bieżącej rentowności obligacji i odjęcie jej od każdego okresu w historii. Poniższy panel przedstawia wskaźnik Sharpe’a obliczony na dwa sposoby w pięciu oknach kończących się w tej samej dacie: raz względem dopasowanego szeregu miesięcznego, raz względem rentowności obligacji obowiązującej na koniec okna.

ZapytanieWskaźnik Sharpe’a dla dopasowanej serii stóp w zestawieniu ze stałą stopą
Dokładny kod SQL dla każdej liczby
WITH
    monthly_px AS
    (
        SELECT
            toStartOfMonth(date)           AS m,
            argMax(toFloat64(close), date) AS month_close
        FROM global_markets.stocks_daily_aggs
        WHERE ticker = 'SPY'
          AND date >= '2004-12-01'
          AND date <  '2025-01-01'
        GROUP BY m
    ),
    prior_px AS
    (
        SELECT
            addMonths(m, 1) AS m,
            month_close     AS prev_close
        FROM monthly_px
    ),
    monthly_rf AS
    (
        SELECT
            toStartOfMonth(date)                                       AS m,
            pow(1 + avg(toFloat64(yield_3_month)) / 100, 1.0 / 12) - 1 AS rf_month
        FROM global_markets.treasury_yields
        WHERE date >= '2004-12-01'
          AND date <  '2025-01-01'
          AND yield_3_month IS NOT NULL
        GROUP BY m
    ),
    excess AS
    (
        SELECT
            cur.m                                AS m,
            cur.month_close / prv.prev_close - 1 AS ret,
            rf.rf_month                          AS rf_month
        FROM monthly_px AS cur
        INNER JOIN prior_px AS prv ON prv.m = cur.m
        INNER JOIN monthly_rf AS rf ON rf.m = cur.m
    )
SELECT
    concat(toString(intDiv(count(), 12)), '-year')                             AS horizon,
    round(sqrt(12) * avg(ret - rf_month) / stddevSamp(ret - rf_month), 2)      AS sharpe_matched_rf,
    round(sqrt(12) * avg(ret - rf_fixed) / stddevSamp(ret - rf_fixed), 2)      AS sharpe_fixed_rf,
    round(abs(sqrt(12) * avg(ret - rf_month) / stddevSamp(ret - rf_month)
            - sqrt(12) * avg(ret - rf_fixed) / stddevSamp(ret - rf_fixed)), 2) AS abs_gap
FROM excess
CROSS JOIN
(
    SELECT pow(1 + avg(toFloat64(yield_3_month)) / 100, 1.0 / 12) - 1 AS rf_fixed
    FROM global_markets.treasury_yields
    WHERE date >= '2024-12-01'
      AND date <  '2025-01-01'
      AND yield_3_month IS NOT NULL
) AS fixed_rate
CROSS JOIN (SELECT arrayJoin([1, 3, 5, 10, 20]) AS years) AS hz
WHERE m >= subtractYears(toDate('2025-01-01'), years)
GROUP BY years
ORDER BY years
Run this yourself

W oknie 1-year oba odczyty różnią się o 0.07. W ciągu dwunastu miesięcy stała stopa ma niewiele miejsca na odchylenie od średniej z okna. W oknie 20-year różnią się o 0.18: 0.49 dla dopasowanego szeregu wobec 0.32 dla stałej stopy. Błąd wynika z odległości między wybraną pojedynczą stopą a średnią stopą, która faktycznie obowiązywała; odległość ta rośnie wraz z wydłużaniem okna. Każda kolejna analiza dziedziczy ten błąd, a targetowanie zmienności i wielkość pozycji opiera się na danych wejściowych dokładnie tego typu.

Pułapka walutowa

Strategia zarabiająca w jednej walucie i oceniana względem obligacji w innej walucie daje wynik, który niewiele znaczy w obu przypadkach. Nadmiarową stopę zwrotu należy obliczać wewnątrz jednej waluty: stopy zwrotu w EUR względem obligacji w EUR, stopy zwrotu w JPY względem obligacji w JPY. Strategie zabezpieczone (hedged) niosą drugą pułapkę. Zabezpieczenie walutowe jest wyceniane na podstawie kontraktów terminowych (forward), a punkty forward zależą od różnic stóp procentowych między dwiema walutami, co już umieszcza część krajowej stopy procentowej wewnątrz zabezpieczonej zagranicznej stopy zwrotu. Odjęcie zagranicznej obligacji dodatkowo powoduje dwukrotne obciążenie tą samą stopą. Należy podać walutę obok stopy, aby wyeliminować niejednoznaczność.

Publikuj stopę obok wskaźnika

Wskaźnika Sharpe’a podanego bez źródła stopy wolnej od ryzyka i jej częstotliwości nie można zweryfikować. Dwa zespoły mogą obliczyć 0,8 i 1,1 z tego samego strumienia stóp zwrotu i oba mogą mieć rację, pracując na różnych szeregach stóp i różnych konwencjach konwersji. Cztery elementy powinny towarzyszyć liczbie: instrument, z którego pochodzi stopa, jego częstotliwość, konwencja konwersji oraz dokładny okres. To różnica między liczbą, którą czytelnik może sprawdzić, a liczbą, w którą musi uwierzyć.

Uwagi dotyczące danych i powtarzalności

Szereg stóp w każdym panelu to trzymiesięczne obligacje skarbowe z krzywej rentowności Treasury, uśrednione w każdym miesiącu kalendarzowym, przeliczone na stopę miesięczną jako pierwiastek dwunastego stopnia z sumy jedności i kwotowania rocznego. Stopy zwrotu to kursy zamknięcia SPY na koniec miesiąca, tylko stopa zwrotu z ceny, bez dywidend. Wskaźniki wykorzystują odchylenie standardowe z próby miesięcznych stóp zwrotu nadmiarowego oraz pierwiastek z dwunastu dla annualizacji. Ostatnie dwa panele wykorzystują okna kończące się w tej samej dacie, a kolumna stałej stopy przyjmuje średnie kwotowanie obligacji w ostatnim miesiącu tego okna. Każda liczba w powyższym tekście pochodzi z panelu obok.

FAQ

Jakiej stopy wolnej od ryzyka powinienem użyć we wskaźniku Sharpe’a?

Krótkoterminowej obligacji rządowej w tej samej walucie co stopy zwrotu, przeliczonej na tę samą częstotliwość co stopy zwrotu. Dla miesięcznych stóp zwrotu w USD oznacza to miesięczne lub trzymiesięczne obligacje skarbowe. Dłuższe terminy zapadalności niosą ryzyko cenowe w okresie pomiarowym, co dyskwalifikuje je jako składnik wolny od ryzyka.

Czy mogę odjąć dzisiejszą rentowność obligacji skarbowych od długiej historii stóp zwrotu?

To najczęstszy błąd w publikowanych wskaźnikach Sharpe’a. W oknie 20-year powyżej, stała stopa z końca okna i dopasowany szereg miesięczny dają odczyty różniące się o 0.18 dla tych samych stóp zwrotu.

Czy należy annualizować stopę wolną od ryzyka przed jej odjęciem?

Nie. Przelicz roczne kwotowanie obligacji na częstotliwość stopy zwrotu, odejmij okres po okresie, a następnie annualizuj szereg nadmiarowy dopiero na końcu. Annualizacja każdego składnika osobno i późniejsze odejmowanie pozostawia w wyniku wyraz mieszany.

Jak bardzo stopa wolna od ryzyka zmienia wskaźnik Sharpe’a?

Mniej więcej o zmianę stopy podzieloną przez zannualizowaną zmienność. W hipotetycznej strategii o zannualizowanej zmienności 15%, różnica 4% w założonej stopie zmienia wskaźnik o około 0,27, co stanowi dystans między przeciętnym wynikiem a wybitnym.

Jaka jest różnica między annualizacją arytmetyczną a geometryczną?

Arytmetyczna mnoży średni nadmiar okresowy przez liczbę okresów w roku. Geometryczna kapitalizuje okresy do stałej stopy, która odtwarza wynik skumulowany. W ujęciu okresowym wartość geometryczna jest równa lub niższa od arytmetycznej, a odległość między nimi rośnie wraz ze zmiennością.


Każdy panel zawiera kod SQL, który go wygenerował, więc szereg stóp i okno czasowe są widoczne. Aby przeprowadzić tę samą konstrukcję na innym tickerze lub innym odcinku historii, poproś o to w prostym języku na terminalu Strasmore.

#sharpe ratio#risk-free rate#excess returns#annualization#performance measurement