Probability of Backtest Overfitting: Adakah Carian Anda Mengatasi Lambungan Syiling?
Sebahagian daripada siri "Backtest Tanpa Ilusi".
📄 Artikel ini berkembang menjadi kertas penyelidikan. Setiap nombor di bawah datang daripada satu skrip deterministik tunggal yang membina ground truth terkawal — carian kelebihan-sifar, carian kelebihan yang ditanam, dan satu grid parameter purata bergerak sebenar pada jalan rawak — kemudian menjalankan Combinatorially Symmetric Cross-Validation (CSCV) untuk menganggarkan Probability of Backtest Overfitting terhadapnya, mengukur secara langsung sebaik mana prosedur pemilihan itu bergeneralisasi. Baca kertas kerja dalam talian (versi interaktif + PDF) di pbo-search.marketmaker.cc, kod dan data di github.com/suenot/pbo-search.
Deflated Sharpe Ratio mengadili pemenang anda: memandangkan anda mencari N konfigurasi, adakah Sharpe yang satu ini melebihi apa yang nasib baik boleh beli? Artikel ini mengadili sesuatu yang lain — tindakan memilih itu sendiri. Anda menjalankan satu grid, anda simpan sel terbaik, anda teruskan. Tetapi adakah pemilihan itu sendiri boleh dipercayai? Jika anda menjalankan semula keseluruhan pembahagian dalam-sampel/luar-sampel dengan cara yang berbeza, adakah konfigurasi yang sama akan tetap berada di atas — atau anda hanya menobatkan yang paling bertuah daripada seratus syiling?
Probability of Backtest Overfitting (PBO), diperkenalkan oleh Bailey, Borwein, López de Prado & Zhu (2017), menjawab soalan itu dengan tepat, dan ia melakukannya dengan satu nombor yang kebanyakan orang salah baca sebaik sahaja melihatnya. Berikut ialah ayat paling penting dalam artikel ini, jadi bacalah ia dua kali:
Null PBO ialah 0.5, bukan 1. Satu carian dengan tiada kemahiran luar-sampel mencatatkan skor PBO ≈ 0.5. Separuh bukan bermaksud "separuh overfit" — separuh adalah sepenuhnya overfit, satu lambungan syiling. Anda mahukan PBO menghampiri sifar.
Itu menjerat semua orang. Kita dilatih untuk membaca kebarangkalian berbanding null "ketiadaan," dan untuk overfitting, naluri kita berkata bacaan "tidak bersalah" adalah 0. Ia bukan begitu. PBO ialah kebarangkalian bahawa konfigurasi yang anda pilih sebagai terbaik dalam sampel mendarat pada separuh bawah medan itu di luar sampel. Jika carian anda secara tulen tidak mempelajari apa-apa yang bergeneralisasi, pemenang dalam-sampel itu, di luar sampel, sama berkemungkinan berada di mana-mana dalam kedudukan — jadi ia jatuh ke separuh bawah kira-kira separuh daripada masa. PBO ≈ 0.5 bermaksud prosedur pemilihan anda adalah satu lambungan syiling. PBO ≈ 0 bermaksud pemenang dalam-sampel itu kekal sebagai pemenang secara boleh dipercayai di luar sampel — pemilihan itu boleh dipercayai. Segala-galanya di bawah dibina untuk menjadikan satu fakta penentukuran itu konkrit, pada data di mana kita tahu ground truth.
| Rejim (200 konfig, T = 1000, S = 16) | Apakah ia | Sharpe dalam-sampel pemenang | Sharpe luar-sampel | PBO | Keputusan |
|---|---|---|---|---|---|
| Medan kelebihan-sifar (200 strategi bunyi hingar iid) | nasib tulen, tiada kelebihan di mana-mana | 1.98 | 0.06 | 0.476 | overfit — satu lambungan syiling |
| Kelebihan ditanam (20 konfig membawa Sharpe tahunan 2.38) | kemahiran tulen, kukuh | 3.73 | 2.34 | 0.001 | boleh dipercayai |
| Grid silangan-MA pada jalan rawak tulen (170 konfig) | satu fatamorgana yang menggoda | 0.97 | 0.04 | 0.463 | overfit — satu lambungan syiling |
Nisbah Sharpe ditahunkan ×√252. Ketiga-tiga baris memuratakan Sharpe strategi terpilih merentasi 60 matriks Monte-Carlo — perbandingan adil dan setara, jadi grid overfit itu diskor dengan cara yang sama seperti null dan kelebihan yang ditanam. Pada asas purata ini, Sharpe dalam-sampel terpilih grid itu (0.97) sebenarnya lebih rendah daripada 1.98 null yang digembungkan, Sharpe luar-sampelnya adalah 0.04 yang sedikit positif, dan PBO-nya (0.463) duduk sedikit di bawah ½ — tidak dapat dibezakan secara statistik daripada null. Nombor satu-matriks yang dramatik (Sharpe dalam-sampel terbaik-dalam-grid 2.33 runtuh kepada median luar-sampel −0.22, PBO 0.573) tergolong pada satu seed jalan-rawak wakil dan muncul, dilabel dengan jelas, dalam Babak 4. Setiap nombor boleh dikesan kembali kepada fail keputusan.
Tiga rejim, satu pengajaran. Satu carian tiada-kelebihan duduk tepat pada garis lambungan-syiling 0.5 sama ada bunyi hingar itu iid (PBO 0.476) atau berpakaian sebagai satu grid purata-bergerak sebenar (PBO 0.463) — kedua-duanya tidak dapat dibezakan secara statistik, dan kedua-duanya memberatkan. Satu kelebihan tulen menjatuhkan PBO kepada 0.001. Dipuratakan merentasi matriks, pemenang terpilih grid itu tidak menonjol — satu Sharpe dalam-sampel 0.97, di bawah 1.98 null yang digembungkan — yang itu sendiri adalah diagnosis jujur: satu carian tiada-kelebihan terbaca sebagai null. Drama itu hidup dalam ekor. Pada satu matriks jalan-rawak wakil (Babak 4) sel terbaik grid itu mencatatkan Sharpe dalam-sampel 2.33 — pada asasnya sama dengan 2.34 luar-sampel kelebihan yang ditanam, satu seri mati — namun di luar sampel ia mendarat pada separuh bawah kira-kira sekerap ia mendarat di atas. Jurang antara satu backtest yang cantik dan satu pemilihan yang tidak bernilai itu tidak kelihatan dalam Sharpe pemenang itu sendiri dan hanya kelihatan apabila anda menskor prosedur itu. Itulah yang dilakukan oleh PBO.
Babak 1 — Prosedur yang diadili: apa sebenarnya yang dilakukan CSCV

DSR adalah parametrik: ia memodelkan taburan Sharpe maksimum di bawah satu null dan mendeflasi keertian pemenang itu secara analitik. CSCV adalah jawapan bukan-parametrik kepada masalah bias-pemilihan yang sama — dan bukannya memodelkan maksimum itu, ia mensampel semula pembahagian train/test dengan setiap cara yang boleh dan memerhatikan, secara empirik, sama ada pemenang dalam-sampel itu terus menang. Tiada andaian taburan, tiada pengiraan "percubaan berkesan." Cuma: adakah pilihan itu bergeneralisasi?
Mulakan dengan bahan mentah. Anda membacktest N = 200 konfigurasi bagi satu kelas strategi merentasi T = 1000 pemerhatian segerak. Susunkan siri pulangan setiap konfigurasi menjadi satu lajur dan anda mendapat satu matriks prestasi M bersaiz T × N — 1,000 baris masa, 200 lajur strategi. Inilah satu-satunya input yang diperlukan oleh CSCV.
Sekarang binaan itu, dalam empat langkah:
- Bahagikan masa kepada
S = 16blok terputus dengan panjang yang sama (T/Sbaris setiap satu). Blok mengekalkan struktur masa tempatan — satu pilihan reka bentuk yang penting sebaik sahaja pulangan mempunyai memori. - Pilih setiap cara untuk menggunakan separuh blok untuk train dan separuh untuk test. Dengan
S = 16, itu adalah kesemuaC(16, 8) = 12,870cara untuk memilih 8 daripada 16 blok sebagai set train; 8 lagi adalah set test. Di sinilah "combinatorially symmetric" datang: setiap pembahagian mempunyai satu cermin (tukar ganti train dan test), jadi skema ini menggunakan data anda secara simetri berbanding satu potongan lepas→depan yang diistimewakan yang diberikan oleh satu walk-forward tunggal. - Pada setiap pembahagian, susun kedudukan kesemua 200 konfigurasi mengikut Sharpe dalam-sampel dan pilih pemenang
n*. Kemudian cari kedudukan konfigurasin*yang sama itu di luar sampel, pada 8 blok yang ditahan. - Rekodkan kedudukan relatif luar-sampel pemenang itu dan tukarkannya menjadi satu logit. PBO ialah pecahan daripada 12,870 pembahagian di mana logit itu ≤ 0.
Penyenaraian itu kecil untuk ditulis:
from itertools import combinations
combos = list(combinations(range(S), S // 2)) # C(16, 8) = 12,870 splits
Bagi setiap pembahagian, biarkan menjadi kedudukan luar-sampel pemenang dalam-sampel di kalangan konfigurasi (kedudukan 1 = terburuk, = terbaik). Normalkannya kepada satu kedudukan relatif , ambil logitnya , dan integrasikan merentasi pembahagian:
Logit itu cumalah satu pembaris yang mudah. bermaksud pemenang itu mendarat pada separuh atas di luar sampel (kedudukan relatif di atas ½) — konsistensi dalam-sampel/luar-sampel, baik. bermaksud ia mendarat pada atau di bawah median luar-sampel — pilihan dalam-sampel itu tidak bergeneralisasi pada pembahagian itu. PBO ialah pecahan pembahagian di mana pemenang dalam-sampel gagal mengatasi median di luar sampel. Keseluruhan matriks itu menentukannya: memandangkan M dan S, PBO adalah deterministik — tiada seed pensampelan semula, kesemua 12,870 pembahagian disenaraikan secara menyeluruh.
Dalam kod, sebaik sahaja anda mempunyai Sharpe dalam-sampel dan luar-sampel bagi setiap konfigurasi pada setiap pembahagian (matriks R_tr dan R_te, masing-masing 12,870 × 200), inti penganggar itu adalah enam baris:
n_star = R_tr.argmax(axis=1) # in-sample winner, per split
oos_sh = R_te[rows, n_star] # that winner's OWN out-of-sample Sharpe
rank = (R_te <= oos_sh[:, None]).sum(axis=1) # its OOS rank among N configs, 1..N
omega = np.clip(rank / (N + 1.0), 1e-6, 1 - 1e-6) # relative OOS rank in (0,1)
lambdas = np.log(omega / (1.0 - omega)) # logit
pbo = float(np.mean(lambdas <= 0.0)) # fraction of splits with lambda <= 0
Perhatikan apa yang tiada di sini: tiada p-value, tiada ambang pada Sharpe pemenang, tiada model taburan null. PBO tidak pernah bertanya sama ada pemenang itu bagus. Ia bertanya sama ada memilih yang terbaik dalam-sampel adalah satu keputusan yang terselamat daripada bersentuhan dengan data yang ditahan. Itu adalah satu sifat carian anda, bukan strategi anda — sebabnya tepat mengapa ia menangkap perkara yang tidak dapat ditangkap oleh statistik pemenang itu sendiri.
Babak 2 — Penentukuran adalah keseluruhan hujah: null ialah 0.5

Satu diagnostik yang tidak boleh anda tentukur adalah khabar angin sahaja. Jadi sebelum mempercayai PBO pada apa-apa yang sebenar, tetapkan dua titik akhir pada data di mana jawapannya diketahui: satu medan dengan tiada kelebihan di mana-mana, dan satu medan dengan kelebihan tulen. Jika PBO tidak mendarat berhampiran 0.5 pada yang pertama dan berhampiran 0 pada yang kedua, ia tidak bernilai.
Titik akhir null. Bina M daripada 200 lajur bunyi hingar Normal bebas, drift-sifar, kelebihan-sifar — Sharpe sebenar tepat 0 untuk setiap konfigurasi — dan jalankan CSCV. Puratakan merentasi 60 matriks sedemikian. Strategi terpilih (terbaik-dalam-sampel) mencatatkan purata Sharpe tahunan dalam-sampel 1.98. Itu bukan nombor kecil; ia adalah penggembungan pemilihan yang sama yang diukur oleh artikel DSR — yang terbaik daripada 200 lajur bunyi hingar kelihatan seperti strategi yang boleh dibiayai. Di luar sampel, pemenang yang sama itu menghasilkan Sharpe tahunan 0.06. Ia memulangkan hampir semuanya. Dan keputusan mengenai prosedur itu:
Itulah lambungan syiling, diukur. Merentasi 12,870 pembahagian, pemenang dalam-sampel sama berkemungkinan mendarat di bawah median luar-sampel seperti di atasnya — 0.476, sedikit di bawah ½, tidak dapat dibezakan daripada 0.5 memandangkan sebaran Monte-Carlo. Diagnostik pengiring bersetuju: kebarangkalian bahawa Sharpe luar-sampel strategi terpilih itu adalah negatif ialah 0.475 — pilih yang terbaik dalam-sampel daripada bunyi hingar tulen dan ia rugi wang di luar sampel kira-kira separuh daripada masa. Tiada kemahiran dalam pemilihan itu kerana tiada kemahiran untuk ditemui, dan PBO melaporkan tepat itu: 0.5 adalah garis overfitting, dan bunyi hingar tulen duduk tepat padanya.
Mengapa 0.5 dan bukan 1? Kerana di bawah satu null yang benar, kesemua 200 lajur adalah boleh tukar ganti — cabutan yang boleh tukar ganti secara statistik daripada proses bunyi hingar yang sama. Pemenang dalam-sampel itu istimewa hanya dalam sampel; di luar sampel ia cuma satu lajur lain, sama berkemungkinan berkedudukan di mana-mana. Jadi kedudukan relatif luar-sampelnya adalah seragam pada , logit adalah simetri di sekitar 0, dan pecahan dengan menumpu kepada ½. Satu PBO bernilai 1 akan lebih teruk daripada lambungan syiling — ia akan bermaksud kejayaan dalam-sampel secara boleh dipercayai meramalkan kegagalan luar-sampel, yang memerlukan satu mekanisme anti-persistensi aktif, bukan sekadar ketiadaan kelebihan (lebih lanjut mengenai ini dalam nota kejujuran).
Titik akhir kelebihan. Sekarang bina satu medan di mana 20 daripada 200 konfigurasi membawa satu kelebihan sebenar yang ditanam — satu Sharpe setiap-pemerhatian 0.15, yang ditahunkan kepada 2.38 (terbitan: ) — dan biarkan 180 lagi sebagai bunyi hingar. Jalankan CSCV yang sama tepat. Cerita itu terbalik sepenuhnya:
| Sharpe dalam-sampel (tahunan) | Sharpe luar-sampel (tahunan) | PBO | P(kerugian OOS) | |
|---|---|---|---|---|
| Null (0 kelebihan) | 1.98 | 0.06 | 0.476 | 0.475 |
| Kelebihan ditanam (Sharpe 2.38) | 3.73 | 2.34 | 0.001 | 0.0006 |
Pemenang kelebihan-ditanam itu mencatatkan Sharpe tahunan dalam-sampel 3.73 — digembungkan oleh pemilihan, seperti biasa — tetapi kali ini ia mengekalkan satu 2.34 luar-sampel, dan PBO runtuh kepada 0.001. Merentasi kesemua 12,870 pembahagian, pemenang dalam-sampel itu pada asasnya tidak pernah jatuh ke separuh bawah di luar sampel. Kebarangkalian kerugian luar-sampel jatuh kepada 0.0006. Inilah rupa satu prosedur pemilihan yang boleh dipercayai: tidak kira bagaimana anda memotong train berbanding test, jenis konfigurasi yang sama terus menang, kerana terdapat satu kesan sebenar dan kukuh di sana untuk dikunci oleh carian itu. Dua titik akhir itu — 0.476 pada bunyi hingar, 0.001 pada kelebihan tulen — adalah penentukuran itu. PBO berfungsi.
Babak 3 — Satu termometer berterusan, bukan ujian ya/tidak

Dua titik akhir membuktikan PBO boleh membezakan bunyi hingar daripada kelebihan. Tetapi sifat yang lebih mendalam adalah ia melakukannya secara lancar. Imbas kelebihan yang ditanam daripada tiada kepada kuat dan PBO tidak melompat serta-merta daripada 0.5 kepada 0 — ia meluncur turun satu tanjakan monoton, dan Sharpe luar-sampel strategi terpilih meningkat untuk menemuinya, langkah demi langkah:
| Sharpe sebenar ditanam (tahunan) | PBO | Sharpe OOS strategi terpilih (tahunan) |
|---|---|---|
| 0.00 | 0.52 | −0.05 |
| 0.48 | 0.44 | 0.19 |
| 0.95 | 0.21 | 0.81 |
| 1.59 | 0.03 | 1.65 |
| 2.38 | 0.001 | 2.48 |
| 3.17 | 0.00 | 3.29 |
Baca kedua-dua lajur data itu bersama-sama. Pada kelebihan sebenar sifar, PBO ialah 0.52 dan strategi terpilih memperoleh −0.05 di luar sampel — lambungan syiling, sekali lagi, dan satu pemenang yang rugi wang. Tambah sedikit bisikan kelebihan (tahunan 0.48) dan PBO menurun kepada 0.44. Menjelang Sharpe sebenar tahunan 0.95 — satu kelebihan yang sederhana dan boleh dipercayai secara tulen — PBO sudah pun 0.21 dan Sharpe luar-sampel telah meningkat kepada 0.81. Pada 1.59 ia adalah 0.03; pada 2.38, 0.001; pada 3.17, secara efektif 0.00, dengan strategi terpilih membawa 3.29 di luar sampel. PBO jatuh secara monoton apabila kelebihan sebenar berkembang, dan prestasi luar-sampel pemenang itu meningkat seiring — kedua-duanya adalah fakta yang sama dilihat daripada dua sudut.
Inilah sifat yang menjadikan PBO boleh digunakan dalam amalan: ia adalah satu termometer overfitting berterusan, bukan penggera binari. Satu PBO bernilai 0.21 bukan sekadar berkata "tidak overfit" — ia berkata pemilihan anda mempunyai kemahiran luar-sampel yang separa: pemenang dalam-sampel mengatasi median luar-sampel 79% daripada masa, tetapi kelebihan itu cukup nipis sehingga satu perlima daripada pembahagian masih mengebumikannya. Anda boleh memerhatikan nombor itu bergerak semasa anda mengukuhkan isyarat anda, mengetatkan alam semesta anda, atau memangkas grid anda, dan mengetahui arah mana yang jujur. Kaedah anggaran kasar kertas kerja itu sendiri — tolak apabila PBO melebihi 0.05 — timbul secara semula jadi daripada tanjakan ini: di bawah Sharpe tahunan ~1.5 carian itu belum melepasinya; di atas ~1.6 ia telah melepasinya. Tetapi tanjakan itu sendiri lebih memberi maklumat daripada mana-mana titik potong tunggal, kerana ia memberitahu anda bukan sahaja sama ada anda overfit tetapi sejauh mana anda menghampiri lambungan syiling.
Babak 4 — Perangkap realistik: satu backtest yang cantik, disahkan tidak bernilai

Null bunyi hingar-iid itu jujur tetapi mudah ditolak — "strategi saya bukan lajur Normal rawak." Jadi inilah perangkap itu dalam bentuk yang sebenarnya dilangkah masuk oleh pengamal. Ambil satu silangan purata bergerak (moving-average crossover), peraturan yang paling banyak dibacktest di dunia: long apabila satu MA pantas melintasi ke atas satu MA perlahan, flat sebaliknya. Gridkannya — 10 panjang pantas 17 panjang perlahan, mengekalkan pasangan pantas-di-bawah-perlahan yang sah, untuk K = 170 konfigurasi. Sekarang jalankan grid itu pada satu siri dengan kelebihan sifar yang boleh dibuktikan: satu jalan rawak tulen. Tiada apa-apa untuk ditemui. Satu silangan tidak dapat meramalkan satu jalan rawak. Kita tahu jawapannya adalah "tiada strategi."
Grid itu tidak tahu perkara itu. Ia menyerahkan kepada anda satu pemenang, dan pemenang itu menggoda:
| Diagnostik (satu matriks jalan-rawak wakil, seed 3000, K = 170, S = 16) | Nilai |
|---|---|
| Sharpe dalam-sampel terbaik (tahunan) | 2.33 |
| PBO | 0.573 |
| Median Sharpe luar-sampel (tahunan) | −0.22 |
| Kebarangkalian kerugian luar-sampel | 0.63 |
| Cerun degradasi luar-sampel-berbanding-dalam-sampel | −0.92 |
| Median logit | −0.25 |
Ini adalah satu matriks berseed. Dipuratakan merentasi 60 matriks jalan-rawak bebas, diagnostik yang sama ini membaca PBO 0.463 ± 0.223, satu Sharpe dalam-sampel terpilih 0.97 merosot kepada 0.04, dan P(kerugian OOS) 0.47 — tidak dapat dibezakan secara statistik daripada null. 0.573 pada seed 3000 adalah satu cabutan pada sisi tinggi jalur null ~0.5 — bunyi hingar persampelan di sekitar nilai lambungan-syiling, jauh di dalam sebaran ±0.223 matriks-ke-matriks — dan cerita itu sama sahaja pada kedua-dua belah.
Satu Sharpe tahunan dalam-sampel 2.33 pada satu silangan purata bergerak adalah jenis keputusan yang berakhir dalam satu pitch deck. Ia pada asasnya sama dengan Sharpe luar-sampel kelebihan yang benar-benar ditanam dari Babak 2 (2.34 — satu seri mati). Jika anda berhenti pada backtest itu, anda akan membiayainya. CSCV menolak. PBO adalah satu lambungan syiling di sini: 0.463 dipuratakan merentasi 60 matriks, 0.573 pada matriks tertentu ini — kedua-duanya berkata carian itu tiada kemahiran luar-sampel. Jangan terlebih-baca 0.573 itu: ia duduk 0.073 di atas ½, bunyi hingar persampelan di sekitar null 0.5 dan jauh di dalam jalur ±0.223 matriks-ke-matriks; satu PBO yang benar-benar di atas 0.5 — di mana kejayaan dalam-sampel secara aktif akan meramalkan kegagalan luar-sampel — memerlukan satu struktur anti-persistensi atau kos-dagangan yang tidak terkandung dalam jalan rawak ini (lihat nota kejujuran). Pada matriks ini, median logit −0.25 meletakkan median pemenang dalam-sampel pada satu kedudukan relatif luar-sampel kira-kira 0.44 (terbitan: ) — lebih kurang ke-75 daripada 170 (terbitan: ), sedikit di bawah pertengahan medan yang sepatutnya diketuainya. Median Sharpe luar-sampel pemenang itu adalah −0.22 — negatif — dan ia mengalami kerugian luar-sampel 63% daripada masa. Satu Sharpe backtest 2.33 yang jangkaan luar-sampelnya adalah kerugian: definisi satu fatamorgana.
Cerun degradasi −0.92 itu adalah pisau kedua. Regreskan Sharpe luar-sampel pemenang terpilih bagi setiap pembahagian terhadap Sharpe dalam-sampelnya; cerun itu negatif secara curam — semakin baik satu konfigurasi kelihatan dalam sampel, semakin teruk ia berprestasi di luar sampel. Ini adalah cap jari overfitting pada satu siri yang mempunyai memori: silangan itu berpaut pada corak sementara dalam blok latihan yang, kerana ia adalah artifak satu jalan rawak, berbalik arah di luar sampel. Satu kehalusan yang wajar dinyatakan supaya anda tidak terlebih-baca cerun itu: satu cerun negatif bukan dengan sendirinya satu keputusan. Malah rejim kelebihan-tulen dari Babak 2 mempunyai satu cerun degradasi negatif (−0.52) — regresi kepada min sentiasa menarik maksimum terpilih itu turun sedikit di luar sampel. Apa yang memisahkan fatamorgana daripada kelebihan sebenar bukanlah hakikat cerun itu negatif tetapi di mana pemenang itu mendarat: kelebihan tulen kekal berhampiran atas (PBO 0.001) sambil memulangkan sedikit; fatamorgana itu duduk pada garis lambungan-syiling (PBO 0.463 purata, 0.573 pada seed ini), pemenangnya tidak lebih berkemungkinan berada di atas median luar-sampel berbanding di bawahnya. Baca cerun itu untuk berapa banyak penyusutan; baca PBO untuk sama ada ia masih bergeneralisasi. Fatamorgana itu gagal pada kedua-duanya.
Inilah sebabnya PBO memperoleh tempatnya di sebelah satu backtest mentah. Sharpe dalam-sampel 2.33 itu bukan satu pembohongan — strategi itu benar-benar memperolehinya, dalam sampel, pada jalan rawak itu. Ia adalah pemilihan, berpakaian dalam satu peraturan yang biasa pada satu grid yang kelihatan realistik, dan tidak kira berapa lama anda merenung keluk ekuiti, ia tidak akan terdedah. Hanya menskor prosedur itu yang dapat mendedahkannya.
Babak 5 — PBO dan DSR: dua soalan jujur, satu dataran

PBO dan Deflated Sharpe Ratio adalah dua separuh daripada pemeriksaan kejujuran yang sama, dan mereka tidak berlebihan — mereka menyoal siasat objek yang berbeza:
| Deflated Sharpe Ratio (DSR) | Probability of Backtest Overfitting (PBO) | |
|---|---|---|
| Objek yang diadili | pemenang | prosedur pemilihan |
| Soalan | adakah Sharpe ini melebihi apa yang nasib baik boleh beli merentasi N percubaan? | adakah memilih yang terbaik dalam-sampel bergeneralisasi di luar sampel? |
| Kaedah | parametrik — deflasi ambang keertian | bukan-parametrik — sampel semula kesemua C(S, S/2) pembahagian train/test |
| Nilai null | DSR ≈ 0.5 (pemenang hanya menyamai siling bunyi hingar) | PBO ≈ 0.5 (pemenang adalah lambungan syiling di luar sampel) |
| Anda mahukan | DSR menghampiri 1 | PBO menghampiri 0 |
| Perlukan kiraan percubaan N? | ya — dan grid berkorelasi menjadikan N kabur | tidak — pensampelan semula pembahagian mengendalikan kebergantungan secara semula jadi |
Mereka bahkan boleh tidak bersetuju, dan ketidaksepakatan itu bersifat diagnostik. DSR boleh diperdaya oleh satu grid berkorelasi untuk terlebih-deflasi (perangkap yang menjadi keseluruhan tumpuan babak akhir artikel DSR — 640 sel berkorelasi bukan 640 percubaan bebas, dan menyuap kiraan mentah itu menggembungkan siling bunyi hingar secara berlebihan). PBO tidak pernah mengira percubaan; ia mensampel semula matriks pulangan sebenar, jadi korelasi grid terpanggang ke dalam pembahagian itu secara percuma. Sebaliknya, PBO memberitahu anda prosedur itu bergeneralisasi tetapi bukan sama ada pemenang itu melepasi kadar ambang — satu carian boleh mempunyai PBO rendah dan masih memilih sesuatu yang Sharpe luar-sampelnya, walaupun secara boleh dipercayai di atas median medan, terlalu kecil untuk didagangkan. DSR menilai harga pemenang; PBO menilai harga prosedur. Jalankan kedua-duanya.

Terdapat satu intuisi geometri di sebalik semua ini, dan itulah perkara paling berguna untuk dibawa pulang. Kelebihan tulen adalah satu dataran; overfitting adalah satu puncak tajam. Apabila satu kesan sebenar memacu grid anda, konfigurasi yang baik berkelompok — fast=3/slow=55 berfungsi, begitu juga jirannya, kerana kesemuanya mensampel isyarat asas yang sama. Dataran itu kukuh terhadap pensampelan semula: tidak kira 8 daripada 16 blok mana yang anda gunakan untuk train, pemenang dalam-sampel itu diambil daripada rantau luas yang sama, dan rantau itu masih di atas di luar sampel. Banyak pembahagian bersetuju → PBO rendah. Apabila overfitting memacu grid anda, "pemenang" itu adalah satu puncak tajam terpencil — satu sel yang kebetulan sepadan dengan bunyi hingar blok latihan, dikelilingi jiran yang sederhana. Puncak tajam itu rapuh: satu pembahagian train/test yang berbeza menobatkan satu puncak tajam terpencil yang berbeza, dan tiada satu pun daripadanya terselamat ke set test. Pembahagian tidak bersetuju → PBO ≈ 0.5. Ini adalah pengajaran yang sama yang dicapai oleh kajian analisis-dataran kami daripada sisi peta-parameter; PBO, pada dasarnya, adalah perbezaan dataran-berbanding-puncak-tajam diukur merentasi setiap pensampelan semula simetri data anda serentak.
Ia juga menjelaskan mengapa CSCV mengatasi pembahagian walk-forward lalai-pengamal. Walk-forward memberi anda satu potongan lepas→depan dan satu keputusan; CSCV memberi anda 12,870 potongan simetri dan bertanya sama ada pemenang itu terselamat kesemuanya. Satu puncak tajam boleh terselamat daripada satu potongan sewenang-wenangnya melalui nasib baik; ia tidak boleh terselamat daripada 12,870. (Combinatorial Purged Cross-Validation, CPCV, López de Prado melanjutkan tepat idea ini dengan purging dan embargo untuk membunuh kebocoran-label yang boleh dialami oleh pensampelan semula biasa di bawah kebergantungan bersiri — anak tangga seterusnya yang semula jadi sebaik sahaja label anda bertindih.) Amaran struktur yang sama menjalin sepanjang keseluruhan siri ini: metrik yang anda optimumkan secara senyap memilih strategi anda (reka bentuk fungsi objektif), satu kebocoran satu-bar menghasilkan satu Sharpe 15 daripada bunyi hingar (look-ahead bias), satu carian ujian-berganda menghasilkan satu Sharpe 1.63 daripada bunyi hingar (DSR) — dan di sini, satu prosedur pemilihan yang disampel semula menghasilkan satu pemenang tidak bernilai yang hanya PBO dapat mendedahkannya.
Nota kejujuran
Empat amaran, dinyatakan dengan jelas, kerana satu kajian terkawal memperoleh kesimpulannya hanya dengan menamakan hadnya.
- Proses penjanaan-data itu adalah sintetik — dengan sengaja. Bunyi hingar Normal iid untuk null, satu medan Sharpe-ditanam untuk imbasan kelebihan, dan satu grid purata bergerak pada jalan rawak tulen untuk perangkap itu. Tiada satu pun mendakwa realisme pasaran; setiap satu dipilih untuk ground truth terkawal. Kita hanya boleh membuktikan PBO membaca 0.5 pada "tiada kemahiran" dan 0 pada "kemahiran sebenar" dengan menjana data di mana kita tahu yang mana satu. Pulangan sebenar berekor tebal, berkorelasi bersiri, dan tidak pegun; hasil yang diserahkan di sini adalah diagnostik yang ditentukur, bukan satu strategi.
- Null PBO ialah 0.5, dan itu adalah satu ciri, bukan satu keanehan. Nyatakan ia setiap kali anda melaporkan satu PBO, kerana jika tidak, separuh pembaca anda akan menganggap 0.5 sebagai "separuh selamat." Satu carian tiada-kemahiran-luar-sampel duduk pada 0.5; satu kelebihan tulen memacunya kepada 0. Tiada bacaan "tidak bersalah" bagi PBO ≈ 0.5 — ia adalah keputusan overfit sepenuhnya.
- PBO > 0.5 adalah satu kawasan "menyimpang" yang tidak kita paksakan. Satu PBO secara sistematik di atas 0.5 bermaksud kejayaan dalam-sampel secara aktif meramalkan kegagalan luar-sampel — konfigurasi IS-terburuk menjadi OOS-terbaik. Itu memerlukan satu struktur anti-persistensi atau kos-dagangan, bukan sekadar ketiadaan kelebihan. Carian overfit kita duduk tepat pada ≈ 0.5 (0.476 untuk bunyi hingar iid; 0.463 dipuratakan untuk grid MA; 0.573 pada satu seed sisi-tinggi, dalam jalur Monte-Carlo ±0.14–0.22 merentasi 60 matriks), yang sudah pun bermaksud "tiada kemahiran luar-sampel." Kita tidak menghasilkan kawasan menyimpang itu; kita hanya menunjukkan bahawa overfitting membawa anda mendarat tepat pada garis lambungan-syiling, yang sudah cukup memberatkan.
- PBO adalah deterministik memandangkan matriks itu; hanya matriks itu yang rawak. Bagi
MdanS = 16yang tetap, kesemuaC(16, 8) = 12,870pembahagian disenaraikan secara menyeluruh — tiada seed bootstrap dan tiada varians persampelan dalam PBO itu sendiri. Sebaran yang kita laporkan (±0.137 pada null, ±0.223 pada grid MA) adalah varians merentasi 60 matriks Monte-Carlo, bukan dalam penganggar itu. Sharpe pada setiap belah dianggarkan pada kira-kira 500 pemerhatian — 496 selepas pemangkasan blok CSCV, keranaT = 1000dibahagikan kepada 16 blok sama besar meninggalkan 992 baris yang boleh digunakan, dibahagikan kepada dua separuh sebanyak 496; kerana Sharpe adalah tidak-varian-tertib, susunan baris dalam satu set train atau test tidak penting (ia akan penting, untuk metrik bergantung-laluan seperti satu nisbah pulangan/drawdown).
Kesimpulan Utama
- PBO menskor prosedur pemilihan, bukan pemenang — dan nullnya ialah 0.5. Ia adalah kebarangkalian bahawa konfigurasi yang anda pilih sebagai terbaik dalam sampel mendarat pada separuh bawah di luar sampel. PBO ≈ 0.5 adalah satu lambungan syiling (overfit sepenuhnya); PBO ≈ 0 adalah satu pemilihan yang boleh dipercayai. Anda mahukannya menghampiri sifar, dan anda mesti menyatakannya dengan lantang, kerana 0.5 terbaca sebagai "selamat" pada mata yang tidak terlatih dan bermaksud sebaliknya sama sekali.
- Penentukuran membuktikan ia berfungsi. Pada 200 strategi kelebihan-sifar iid, Sharpe tahunan dalam-sampel terbaik 1.98 runtuh kepada 0.06 di luar sampel dan PBO = 0.476 — bunyi hingar duduk pada garis lambungan-syiling, rugi wang di luar sampel 47.5% daripada masa. Tanam satu kelebihan tulen (Sharpe tahunan 2.38) dan 3.73 dalam-sampel itu terselamat kepada 2.34 luar-sampel manakala PBO jatuh kepada 0.001. Dua titik akhir, satu diagnostik yang ditentukur.
- PBO adalah satu termometer berterusan. Imbas kelebihan yang ditanam dan PBO jatuh secara monoton — 0.52 → 0.44 → 0.21 → 0.03 → 0.001 → 0.00 pada Sharpe sebenar tahunan 0.00 / 0.48 / 0.95 / 1.59 / 2.38 / 3.17 — dengan Sharpe luar-sampel strategi terpilih meningkat seiring (−0.05 hingga 3.29). Ia mengukur sejauh mana anda menghampiri lambungan syiling, bukan sekadar ya/tidak.
- Perangkap realistik itulah keseluruhan intinya. Satu grid purata bergerak 170-konfig pada satu jalan rawak tulen memuratakan satu Sharpe dalam-sampel terpilih hanya 0.97 merosot kepada 0.04, dengan PBO 0.463 — tidak dapat dibezakan secara statistik daripada null, satu carian tiada-kelebihan terbaca sebagai null. Pada satu matriks wakil, fatamorgana itu jelas: satu Sharpe dalam-sampel terbaik 2.33 (satu nombor pitch-deck), satu median Sharpe luar-sampel −0.22, satu peluang 63% untuk kerugian luar-sampel, PBO 0.573, dan satu cerun degradasi curam −0.92. Satu backtest yang cantik dengan jangkaan luar-sampel yang negatif, tidak kelihatan pada setiap statistik yang dicetak di sebelah pemenang dan hanya kelihatan apabila anda menskor prosedur itu.
- Padankan PBO dengan Deflated Sharpe Ratio. DSR menilai harga pemenang (adakah Sharpe ini melebihi nasib baik, memandangkan N percubaan?); PBO menilai harga prosedur (adakah pemilihan itu bergeneralisasi?). DSR memerlukan satu kiraan percubaan dan boleh diperdaya oleh grid berkorelasi; PBO mensampel semula matriks itu dan tidak pernah mengira percubaan. Satu kelebihan tulen adalah satu dataran luas yang dipersetujui oleh banyak pembahagian (PBO rendah); satu puncak tajam dalam-sampel yang terpencil adalah overfit (pembahagian tidak bersetuju, PBO ≈ 0.5). Jalankan kedua-duanya, dan baca dataran itu.
Pemenang satu carian adalah bersalah sehingga terbukti tidak bersalah — dan PBO menyoal balas carian itu sendiri, bukan alibi yang diberikannya kepada anda. Ia mengabaikan sebaik mana pemenang itu kelihatan dalam sampel dan hanya bertanya sama ada memilihnya adalah satu keputusan yang terselamat daripada dipotong semula 12,870 cara. Apabila ia tidak terselamat — apabila Sharpe cantik 2.33 anda ternyata mendarat pada separuh bawah di luar sampel sekerap ia tidak — anda belum menemui satu strategi. Anda telah menemui syiling paling bertuah, dan PBO adalah nombor yang menangkapnya sedang dilambung.
Eksperimen penuh — harness penentukuran-null, imbasan termometer kelebihan-ditanam, perangkap grid jalan-rawak, dan setiap nombor dalam artikel ini boleh dihasilkan semula daripada satu skrip deterministik tunggal — terdapat dalam kertas kerja pengiring di pbo-search.marketmaker.cc, dengan kod dan data di github.com/suenot/pbo-search.
Pengarang
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.