Cara guna kadar bebas risiko dalam Sharpe ratio
Kadar bebas risiko dalam Sharpe ratio berubah mengikut masa. Ketahui cara memadankan hasil Treasury bill dengan kekerapan pulangan serta kesan penggunaan satu kadar tetap.
Kadar bebas risiko dalam Sharpe ratio ialah pulangan yang boleh anda peroleh dalam tempoh yang sama tanpa mengambil risiko yang sedang anda nilai. Ia merupakan satu siri data, dengan satu bacaan bagi setiap tempoh, yang disebut dalam mata wang pulangan tersebut. Padankan kekerapannya dengan kekerapan pulangan dan tolak secara berkala. Lakukan pengiraan tahunan (annualize) hanya sekali, pada peringkat akhir.
Mengabaikan prosedur ini adalah punca kebanyakan Sharpe ratio yang diterbitkan menjadi tidak tepat. Mengambil satu angka daripada sejarah pulangan dua puluh tahun, biasanya kadar yang dibayar oleh Treasury bill pada minggu semasa, bermakna tahun 2009 dikenakan kadar penanda aras yang sama dengan tahun 2024. Panduan kami mengenai Sharpe ratio merangkumi perkara yang diukur oleh nisbah ini. Halaman ini merangkumi input yang hampir tidak didokumenkan oleh sesiapa pun.
Kadar bebas risiko bukanlah satu pemalar
Sharpe ratio yang diukur sepanjang dua puluh tahun merangkumi sejarah kadar yang berubah-ubah. Panel di bawah mengambil Treasury bill tiga bulan dan meringkaskan setiap tahun kalendar kepada purata dan julat di sekelilingnya.
SQL tepat di sebalik setiap nombor
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 yearPurata tahunan berjalan pada 3.22% dalam 2005 dan 3.74% dalam 2026, merentasi 22 tahun kalendar. Laluan antara dua bacaan tersebut adalah bahagian yang penting. Garis tersebut jatuh ke paras terendah, kekal di sana selama hampir sedekad, kemudian meningkat semula. Lajur rendah dan tinggi menunjukkan sejauh mana kadar tersebut bergerak dalam tahun-tahun tertentu, itulah sebabnya walaupun Sharpe ratio satu tahun memerlukan siri data yang sepadan dan bukannya satu sebut harga tunggal.
Kadar bebas risiko yang manakah sesuai untuk Sharpe ratio
Empat sifat menentukan pilihan tersebut.
- Tempoh matang yang singkat. Kadar tersebut mestilah hampir pasti dalam satu tempoh pengukuran. Treasury bill tiga bulan layak untuk kerja bulanan. Nota sepuluh tahun tidak layak, kerana harganya berubah sepanjang bulan yang anda ukur.
- Mata wang pulangan itu sendiri. Strategi dalam denominasi euro dinilai berbanding bil euro.
- Kekerapan pulangan itu sendiri. Hasil bil disebut sebagai kadar tahunan, dan sebut harga tahunan perlu ditukar sebelum ia digunakan pada pulangan bulanan.
- Definisi pulangan yang setara pada kedua-dua belah pihak. Hasil bil adalah pulangan keseluruhannya, jadi pulangan strategi yang tidak termasuk dividen tidak diukur pada asas yang sama. Pulangan harga berbanding pulangan jumlah merangkumi jurang tersebut.
Penukaran dalam poin ketiga mempunyai dua konvensyen yang digunakan. Pembahagian mudah membahagikan sebut harga tahunan dengan dua belas. Pengkompaunan mengambil punca kuasa dua belas bagi satu tambah kadar tahunan. Bagi bil 5% hipotesis, ini memberikan 0.4167% dan 0.4074% untuk bulan tersebut, kira-kira satu basis point perbezaan yang berulang dalam setiap bulan sampel. Panel di sini menggunakan pengkompaunan. Jika hasil bil menarik minat anda sebagai pegangan dan bukannya sebagai penanda aras, hasil dividen berbanding hasil Treasury dan tempat meletakkan tunai terbiar merangkumi perkara tersebut.
Cara membina siri pulangan berlebihan bulanan
Pembinaannya adalah mekanikal: ambil harga tutup terakhir setiap bulan, bentuk pulangan bulan tersebut, tukar sebut harga bil bulan tersebut kepada kadar bulanan, kemudian tolak. Hasilnya ialah siri pulangan berlebihan, satu angka bagi setiap bulan. Cara pulangan bulanan diukur merangkumi bahagian pulangan secara terperinci.
SQL tepat di sebalik setiap nombor
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.mItu adalah harga tutup SPY, jadi lajur pulangan adalah pulangan harga dengan dividen dikecualikan. Lajur bebas risiko bermula pada 0.128% untuk bulan pertama yang dipaparkan dan berakhir pada 0.359%. Berbanding bulan ekuiti yang berubah beberapa peratus, jalur bebas risiko kelihatan seperti pembundaran. Merentasi 60 bulan penolakan, ia adalah keseluruhan perbezaan antara dua Sharpe ratio yang mendakwa mengukur perkara yang sama.
Tolak dahulu, kemudian lakukan pengiraan tahunan
Dua urutan operasi tersedia sebaik sahaja siri data disusun, dan ia memberikan hasil yang berbeza. Berlebihan dahulu: tolak kadar bulanan daripada pulangan bulanan, kemudian lakukan pengiraan tahunan ke atas siri berlebihan tersebut. Pengiraan tahunan dahulu: kompaun pulangan kepada angka tahunan, kompaun bil kepada angka tahunan, kemudian tolak satu daripada yang lain.
SQL tepat di sebalik setiap nombor
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 yearsSepanjang tetingkap 20-year, jawapan bagi "berlebihan dahulu" ialah 6.49% setahun berbanding 6.59% bagi urutan yang satu lagi, jurang sebanyak 0.099 mata peratusan. Pada tetingkap 1-year, kedua-dua pengiraan yang sama berada pada jarak 0.814 mata. Angka "pengiraan tahunan dahulu" dicetak di atas angka "berlebihan dahulu" dalam setiap tetingkap di sini. Apa yang memisahkan mereka ialah istilah silang: mengkompaun siri pulangan kepada angka tahunan termasuk memperoleh kadar bil di atas premium risiko itu sendiri, dan menolak bil tahunan selepas itu tidak akan mengambil balik bahagian tersebut. Istilah silang berskala dengan hasil darab dua angka tahunan tersebut, jadi ia paling luas apabila bil membayar dengan baik.
Pengiraan tahunan mempunyai cabang kedua. Pengiraan tahunan aritmetik mendarabkan purata bulanan berlebihan dengan dua belas. Pengiraan tahunan geometri mengkompaun: kadar tahunan malar yang menghasilkan semula hasil kumulatif. Ambil larian dua tempoh hipotesis sebanyak +50% diikuti oleh -33.3%, yang berakhir tepat di tempat ia bermula. Purata aritmetik ialah +8.35% setiap tempoh dan purata geometri ialah sifar. Panel di sini menggunakan pengkompaunan. Satu nota kaki yang perlu diingat: di bawah pengiraan tahunan aritmetik, dua belas kali purata pulangan tolak dua belas kali purata bil adalah secara algebra sama dengan dua belas kali purata berlebihan. Di bawah konvensyen itu, urutan penolakan tidak mengubah pengangka. Penyebutnya masih berubah, kerana sisihan piawai pulangan berlebihan berbeza daripada sisihan piawai pulangan mentah apabila kadar itu sendiri berubah-ubah.
Kos menggunakan satu kadar tetap
Jalan pintas yang biasa dilakukan ialah mengambil hasil bil semasa dan menolaknya daripada setiap tempoh dalam sejarah. Panel di bawah menjalankan Sharpe ratio dengan kedua-dua cara merentasi lima tetingkap yang berakhir pada tarikh yang sama: sekali berbanding siri bulanan yang dipadankan, sekali berbanding hasil bil yang berkuat kuasa pada akhir tetingkap.
SQL tepat di sebalik setiap nombor
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 yearsPada tetingkap 1-year, kedua-dua bacaan berada pada jarak 0.07. Sepanjang dua belas bulan, kadar tetap mempunyai sedikit ruang untuk menyimpang daripada purata tetingkap itu sendiri. Pada tetingkap 20-year, ia berada pada jarak 0.18: 0.49 pada siri yang dipadankan berbanding 0.32 pada kadar tetap. Ralat tersebut menjejaki jarak antara kadar tunggal yang anda pilih dan purata kadar yang sebenarnya berlaku, dan jarak itu mempunyai lebih banyak ruang untuk melebar apabila tetingkap dipanjangkan. Apa-apa sahaja di hiliran akan mewarisinya, dan penyasaran volatiliti dan penentuan saiz posisi berjalan berdasarkan input jenis ini.
Perangkap mata wang
Strategi yang memperoleh pendapatan dalam satu mata wang dan dinilai berbanding bil mata wang lain menghasilkan angka yang tidak bermakna dalam kedua-duanya. Kira pulangan berlebihan dalam satu mata wang: pulangan euro berbanding bil euro, pulangan yen berbanding bil yen. Strategi lindung nilai membawa perangkap kedua. Lindung nilai mata wang menetapkan harga berdasarkan forward, dan mata forward berada dekat dengan perbezaan kadar faedah antara kedua-dua mata wang, yang sudah meletakkan sebahagian daripada kadar domestik ke dalam pulangan asing yang dilindung nilai. Menolak bil asing di atas perkara itu mengenakan kadar yang sama dua kali. Namakan mata wang di sebelah kadar tersebut dan kekaburan itu akan hilang.
Terbitkan kadar bersama nisbah
Sharpe ratio yang disebut tanpa sumber bebas risiko dan kekerapannya tidak boleh disemak oleh sesiapa pun. Dua meja dagangan boleh mengira 0.8 dan 1.1 daripada aliran pulangan yang sama dan kedua-duanya betul, bekerja daripada siri kadar yang berbeza dan konvensyen penukaran yang berbeza. Empat item perlu disertakan dengan angka tersebut: instrumen asal kadar tersebut, kekerapannya, konvensyen penukaran, dan tetingkap yang tepat. Itulah perbezaan antara angka yang boleh diaudit oleh pembaca dan angka yang perlu dipercayai oleh pembaca.
Nota data dan kebolehulangan
Siri kadar dalam setiap panel ialah Treasury bill tiga bulan daripada keluk hasil Treasury harian, dipuratakan dalam setiap bulan kalendar, ditukar kepada kadar bulanan sebagai punca kuasa dua belas bagi satu tambah sebut harga tahunan. Pulangan adalah harga tutup akhir bulan SPY, pulangan harga sahaja, dengan dividen dikecualikan. Nisbah menggunakan sisihan piawai sampel bagi pulangan berlebihan bulanan dan punca kuasa dua bagi dua belas untuk pengiraan tahunan. Dua panel terakhir menggunakan tetingkap yang berakhir pada tarikh yang sama, dan lajur kadar tetap mengambil purata sebut harga bil dalam bulan terakhir tetingkap tersebut. Setiap angka dalam prosa di atas datang daripada panel di sebelahnya.
Soalan Lazim
Kadar bebas risiko manakah yang patut saya gunakan dalam Sharpe ratio?
Bil kerajaan jangka pendek dalam mata wang yang sama dengan pulangan, ditukar kepada kekerapan yang sama dengan pulangan. Bagi pulangan USD bulanan, ini bermakna Treasury bill satu bulan atau tiga bulan. Tempoh matang yang lebih panjang membawa risiko harga sepanjang tempoh pengukuran, yang membatalkan kelayakan mereka sebagai komponen bebas risiko.
Bolehkah saya menolak hasil Treasury bill hari ini daripada sejarah pulangan yang panjang?
Ia adalah kesilapan paling biasa dalam Sharpe ratio yang diterbitkan. Sepanjang tetingkap 20-year di atas, kadar akhir tetingkap tetap dan siri bulanan yang dipadankan menghasilkan bacaan yang berbeza sebanyak 0.18 pada pulangan yang sama.
Adakah saya perlu melakukan pengiraan tahunan ke atas kadar bebas risiko sebelum menolaknya?
Tidak. Tukar sebut harga bil tahunan kepada kekerapan pulangan, tolak secara berkala, kemudian lakukan pengiraan tahunan ke atas siri berlebihan sekali sahaja pada peringkat akhir. Melakukan pengiraan tahunan bagi setiap bahagian secara berasingan dan menolaknya kemudian akan meninggalkan istilah silang dalam jawapan.
Sejauh mana kadar bebas risiko menggerakkan Sharpe ratio?
Kira-kira perubahan dalam kadar dibahagikan dengan volatiliti tahunan. Bagi strategi hipotesis yang berjalan pada volatiliti tahunan 15%, perbezaan 4% dalam kadar yang diandaikan menggerakkan nisbah tersebut sebanyak kira-kira 0.27, iaitu jarak antara rekod prestasi biasa dan rekod yang cemerlang.
Apakah perbezaan antara pengiraan tahunan aritmetik dan geometri?
Aritmetik mendarabkan purata berlebihan tempoh dengan bilangan tempoh dalam setahun. Geometri mengkompaun tempoh-tempoh tersebut kepada kadar malar yang menghasilkan semula hasil kumulatif. Bagi setiap tempoh, angka geometri berada pada atau di bawah angka aritmetik, dan jarak antara keduanya melebar dengan volatiliti.
Setiap panel di sini membawa SQL yang menghasilkannya, jadi siri kadar dan tetingkap kedua-duanya boleh dilihat. Untuk menjalankan pembinaan yang sama pada ticker lain atau tempoh sejarah lain, minta ia dalam bahasa Inggeris yang mudah pada terminal Strasmore.