← Kembali ke artikel
July 2, 2026
Bacaan 5 minit

Reka Bentuk Fungsi Objektif: Metrik yang Anda Optimumkan Secara Rahsia Memilih Strategi Anda

Reka Bentuk Fungsi Objektif: Metrik yang Anda Optimumkan Secara Rahsia Memilih Strategi Anda
#algotrading
#backtest
#overfitting
#fungsi objektif
#pengoptimuman
#sharpe
#pengesahan
🎯
Part 1 of 7 · Collection
Backtesting Without Fooling Yourself

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 — satu pasaran sintetik dengan kelebihan yang diketahui dalam satu jalur isyarat sederhana dan bunyi hingar berekor tebal di mana-mana — kemudian menjalankan satu carian ambang di bawah enam fungsi objektif berbeza dan mengukur, di luar sampel, strategi mana yang sebenarnya dipilih oleh setiap objektif. Baca kertas kerja dalam talian (versi interaktif + PDF) di objective-design.marketmaker.cc, kod dan data di github.com/suenot/objective-design-degeneracy.

Anda mahukan strategi terbaik. Jadi anda menjalankan satu carian — imbas satu ambang, satu lookback, satu jarak stop, dan simpan tetapan mana sahaja yang menskor paling tinggi. Carian itu selesai dan menyerahkan anda seorang pemenang. Munasabah. Standard. Itulah yang dilakukan oleh setiap pengoptimum, grid search, dan penala hiperparameter di muka bumi ini.

Tetapi lihat kata kerja itu: menskor paling tinggi. Paling tinggi pada apa? Sebelum carian itu boleh menobatkan apa-apa, anda perlu menyerahkan kepadanya satu nombor tunggal untuk dimaksimumkan — satu fungsi objektif. PnL. Sharpe. Sharpe-pada-bar-yang-anda-dagangkan. Pulangan-berbanding-drawdown-maksimum. Anda menaip salah satu daripada ini, mungkin tanpa banyak berfikir, dan kemudian carian itu menghabiskan sejuta penilaian melakukan tepat apa yang anda minta.

Satu pilihan itu bukan sekadar formaliti. Ia adalah keseluruhan keputusan. Carian itu tidak menemui "satu strategi yang baik" — tiada perkara sedemikian secara abstrak. Ia menemui strategi yang memaksimumkan skalar yang anda pilih, dan skalar yang berbeza menunjuk kepada strategi yang sangat berbeza pada data yang sama. Objektif itu adalah tangan rahsia pada stereng, dan kebanyakan masa tiada siapa yang memerhatikannya.

Berikut adalah keseluruhan artikel dalam satu jadual. Satu carian ambang, satu pasaran sintetik dengan kelebihan sebenar yang diketahui, enam objektif — dan enam strategi yang mereka pilih, diukur pada data yang ditahan (held-out):

Objektif (apa yang dimaksimumkan oleh carian) Pendedahan pasaran purata Sharpe dalam-sampel Sharpe luar-sampel Pemenang merosot
PnL Mentah 0.859 1.76 1.61 0%
Sharpe Garis-Masa-Penuh 0.740 1.82 1.71 0%
Sharpe Setiap-Dagangan ("aktif") 0.286 1.00 0.70 57%
Lantai pendedahan (emin=0.20e_{\min}=0.20) 0.740 1.82 1.71 0%
Pengecilan bilangan-dagangan (conf_k=40=40) 0.523 1.54 1.31 20.7%
Teguh (lantai + conf_k) 0.675 1.78 1.70 0.2%

600 seed bebas, T=2000T = 2000 bar setiap satu, 80 ambang calon setiap carian, dalam-sampel dan luar-sampel dicabut secara berasingan. Sharpe tahunan (252 tempoh/tahun). "Merosot" = pemenang yang dipilih berada dalam pasaran kurang daripada 5% daripada masa, atau mencatatkan Sharpe luar-sampel bukan-positif. Optimum sebenar pasaran ini adalah Sharpe tahunan luar-sampel 1.77.

Baca baris ketiga sehingga ia menyakitkan. Sharpe setiap-dagangan — wakil bagi keseluruhan keluarga metrik bersyarat-aktiviti (Sharpe setiap-dagangan, expectancy, SQN van Tharp, kadar menang) yang semuanya dikira hanya pada bar-bar yang anda dagangkan — memilih satu strategi yang di luar sampel lebih teruk daripada separuh yang lain, dan melakukannya secara merosot 57% daripada masa. Ia bukan objektif yang lebih teruk secara halus. Pada data ini ia adalah satu perangkap, dan carian itu terjerumus ke dalamnya lebih daripada separuh masa. Sekarang baca baris tepat di atasnya: Sharpe garis-masa-penuh yang biasa tidak pernah merosot dan menskor 1.71 di luar sampel. Itulah kemuncak keseluruhan pembaikan, dirosakkan lebih awal — pembetulan yang jujur hanyalah mengukur pada garis masa penuh; naik taraf yang lebih canggih pada baris bawah, pada tahap terbaiknya, hanya pernah menyamai nombor itu, tidak pernah mengatasinya. Artikel ini adalah anatomi perangkap itu dan pembetulannya, dengan ground truth diketahui sepanjang masa supaya "adakah objektif itu memilih strategi yang betul?" adalah satu fakta, bukan pendapat.

Babak 1 — Keputusan rahsia: hukum Goodhart adalah carian itu

Satu carian parameter digambarkan sebagai corong pelbagai keluk strategi calon, dengan satu kanta tunggal berlabel OBJEKTIF mengecap satu keluk sebagai pemenang manakala keluk yang kelihatan serupa dibuang, menggambarkan bahawa pemilihan metrik secara senyap memilih strategi itu

Pada tahun 1975 ahli ekonomi Charles Goodhart menulis satu ayat yang lebih bertahan lama daripada segala-galanya yang pernah dilakukannya:

"Sebarang keteraturan statistik yang diperhatikan akan cenderung runtuh sebaik sahaja tekanan dikenakan ke atasnya untuk tujuan kawalan."

Parafrasa popular, biasanya dikreditkan kepada Marilyn Strathern, lebih padat: apabila satu ukuran menjadi sasaran, ia berhenti menjadi ukuran yang baik.

Satu carian parameter adalah contoh paling tulen bagi hukum Goodhart yang mungkin ada. Fungsi objektif adalah ukuran itu. Carian itu adalah tekanan itu — beribu-ribu, berjuta-juta percubaan untuk menolak ukuran itu setinggi mungkin. Dan carian itu langsung tidak peduli apa yang anda maksudkan dengan ukuran itu. Ia hanya peduli tentang nombor itu. Jika ada sebarang cara untuk menjadikan nombor itu besar yang tidak ada kaitan langsung dengan kelebihan sebenar yang boleh didagangkan — berdagang jarang-jarang, duduk flat kebanyakan masa, tangkap beberapa outlier yang bertuah — carian itu akan menemui cara itu, kerana mencari maksimum adalah satu-satunya perkara yang ia direka untuk lakukan.

Ini adalah kegagalan yang sama yang literatur keselamatan-AI panggil reward hacking: satu ejen yang mengoptimumkan proksi bagi apa yang anda mahu akan mengeksploitasi setiap jurang antara proksi itu dan matlamat sebenar. Carian anda adalah ejen itu. "Nisbah Sharpe" adalah proksi itu. "Satu strategi yang boleh saya percayai untuk mendagangkan wang sebenar suku tahun depan" adalah matlamat itu. Jurang antara kedua-duanya adalah tempat keseluruhan disiplin ini hidup.

Untuk melihat jurang itu terbuka, kita memerlukan satu dunia di mana kita tahu kebenarannya. Jadi kita membina satu.

Pasaran itu. Pada setiap tempoh, satu peramal sts_t (isyarat standard-Normal) tiba, diikuti oleh pulangan rtr_t yang sebahagiannya diramalkan olehnya. Kelebihan itu adalah sebenar tetapi terhad — ia wujud hanya di dalam jalur isyarat sederhana st1|s_t| \le 1, dan lenyap di luarnya:

rt=βst1[st1]+εt,β=0.3,εtt4 (unit variance).r_t = \beta\, s_t \cdot \mathbf{1}\big[\,|s_t| \le 1\,\big] + \varepsilon_t, \qquad \beta = 0.3, \qquad \varepsilon_t \sim t_{4}\ (\text{unit variance}).

Dua pilihan reka bentuk penting di sini. Pertama, kelebihan itu hidup dalam jalur sederhana: isyarat ekstrem tidak membawa sebarang maklumat ramalan, jadi satu strategi patut mendagangkan bahagian tengah dan mengelakkan ekor. Kedua, bunyi hingar εt\varepsilon_t adalah berekor tebal (Student-tt dengan 4 darjah kebebasan, jenis ekor berat yang benar-benar dimiliki oleh pulangan sebenar) — tetapi ramuan ini di sini untuk realisme, bukan mekanisme. Ada godaan untuk berkata ekor tebal itulah yang menjadikan perangkap ini mungkin, dan kami menganggap tepat begitu sehingga kami menjalankan kawalan: satu versi bunyi-hingar-Gaussian bagi pasaran ini (gaussian_control dalam keputusan, 300 seed) menghasilkan semula perangkap itu pada asasnya tidak berubah — objektif setiap-dagangan masih merosot 55.7% daripada masa di bawah bunyi hingar Gaussian berbanding 57.0% dengan ekor tebal, dan Sharpe luar-sampelnya adalah 0.71 berbanding 0.70. Jadi perangkap itu bukan tentang ekor tebal. Ia adalah kesan sampel-kecil-tambah-pemilihan yang tulen: ambil maksimum, merentasi ~20 ambang berpendedahan-rendah, bagi satu Sharpe yang dikira pada segelintir pemerhatian, dan mana-mana penjuru yang bertuah akan sentiasa kelihatan hebat. Sebarang taburan bunyi hingar melakukannya; satu strategi yang berada dalam pasaran untuk hanya beberapa bar boleh, semata-mata melalui nasib, duduk melalui beberapa pergerakan yang menguntungkan dan mencatatkan satu nombor dalam-sampel yang tidak bermakna apa-apa. Kami mengekalkan ekor tebal kerana pulangan sebenar memilikinya, bukan kerana perangkap itu memerlukannya.

Strategi itu. Satu keluarga satu-parameter. Berdagang mengikut arah isyarat apabila magnitudnya di bawah ambang θ\theta, jika tidak kekal flat:

post=sign(st)1[stθ].\text{pos}_t = \operatorname{sign}(s_t)\cdot \mathbf{1}\big[\,|s_t| \le \theta\,\big].

Satu θ\theta yang sangat kecil hanya berdagang pada isyarat yang paling kecil dan paling tidak ketara — satu loteri dagangan-jarang, hampir tidak pernah berada dalam pasaran. Satu θ\theta berhampiran hujung jalur menangkap keseluruhan kelebihan sebenar dan berpendedahan baik. Satu θ\theta yang besar berdagang pada segala-galanya, termasuk bar di luar-jalur yang tidak membawa kelebihan dan hanya menambah bunyi hingar.

def gen_dataset(T, rng, beta=0.30, band=1.0, tail_df=4):
    s    = rng.standard_normal(T)
    edge = beta * np.where(np.abs(s) <= band, s, 0.0)          # edge ONLY inside |s| <= 1
    t    = rng.standard_t(tail_df, T) / np.sqrt(tail_df / (tail_df - 2.0))  # fat tails, unit var
    return s, edge + t

def simulate(s, r, theta):
    pos      = np.where(np.abs(s) <= theta, np.sign(s), 0.0)   # trade the band, skip outliers
    strat    = pos * r
    active   = pos != 0.0
    exposure = active.mean()                                   # fraction of bars in a position
    sharpe_full   = strat.mean()         / strat.std(ddof=1)            # on the WHOLE timeline
    sharpe_active = strat[active].mean() / strat[active].std(ddof=1)    # on ONLY the active bars
    return dict(exposure=exposure, n_trades=int(active.sum()),
                sharpe_full=sharpe_full, sharpe_active=sharpe_active, pnl=strat.sum())

Kerana kita membina pasaran itu sendiri, kita boleh mengira kebenarannya secara langsung — prestasi purata pada setiap ambang merentasi kesemua 600 seed, di luar sampel. Optimum sebenar terletak pada θ1.04\theta \approx 1.04: tepat di hujung jalur isyarat, berada dalam pasaran kira-kira 70% daripada masa (terbitan: satu isyarat standard-Normal jatuh di dalam s1.04|s|\le 1.04 dengan kebarangkalian P(s1.04)=0.70P(|s|\le 1.04)=0.70), mencatatkan Sharpe tahunan luar-sampel 1.77. Itulah nombor yang setiap objektif cuba temui. Ingat perkara ini: θ≈1.04, Sharpe OOS 1.77, kira-kira 70% garis masa berada dalam pasaran. Apa sahaja yang dipilih oleh satu objektif yang jauh daripada ini adalah objektif itu gagal, bukan pasaran itu sukar.

Babak 2 — Perangkap: lapan dagangan bertuah, Sharpe 21, satu fatamorgana

Satu mesin slot membayar pada satu putaran bertuah tunggal, menunjukkan lapan tiket dagangan dan Sharpe setiap-dagangan dalam-sampel yang menjulang pada 21 yang runtuh kepada 0.13 di luar sampel, mendramatisasikan seorang pemenang loteri dagangan-jarang yang dipilih oleh satu objektif naif

Sekarang lepaskan satu objektif naif ke atas satu cabutan konkrit pasaran ini — seed 6. Pendedahan penuh tentang seed ini: ia bukan cabutan pertama atau satu yang rawak. Kami mengimbas seed untuk mencari pemenang setiap-dagangan yang merosot secara mendadak dan memilih yang ini, tepat supaya mekanismenya mustahil untuk terlepas pandang. Hasil yang ditunjukkannya adalah benar-benar tipikal — seperti yang akan disahkan oleh Babak 3, objektif setiap-dagangan memilih satu loteri berpendedahan-bawah-5% dalam 56% daripada kesemua seed — tetapi magnitud seed 6 terletak pada hujung ekstrem taburan itu. Bacalah ia sebagai satu contoh kegagalan biasa yang sangat mendadak, bukan satu yang median. Kami mengoptimumkan Sharpe setiap-dagangan: nisbah Sharpe yang dikira hanya pada bar-bar di mana strategi itu benar-benar dalam kedudukan. Ini adalah perkara yang sangat semula jadi untuk dilaporkan. "Apabila ia berdagang, sebaik mana dagangannya?" Ia terasa seperti mengasingkan kemahiran daripada kelengahan. Ia melakukan sebaliknya.

Berikut adalah strategi yang dinobatkan oleh Sharpe setiap-dagangan pada seed 6:

  • Ambang θ=0.005\theta = 0.005 — ia berdagang hanya pada isyarat yang paling kecil.
  • Pendedahan pasaran 0.4% — ia flat 99.6% daripada masa.
  • Lapan dagangan. Lapan. Sepanjang 2000 bar.
  • Sharpe setiap-dagangan tahunan dalam-sampel: 21.09.
  • Sharpe garis-masa-penuh dalam-sampel: 0.82.
  • Sharpe garis-masa-penuh luar-sampel: 0.13.

Metrik setiap-dagangan membaca 21.09 — satu nombor yang tidak pernah dicatatkan oleh mana-mana strategi sebenar, jenis angka yang boleh melancarkan satu dana. Dan ia adalah fatamorgana yang lengkap. Lapan dagangan itu kebetulan menangkap beberapa pergerakan yang menguntungkan; diukur hanya sepanjang lapan bar itu, nisbah min kepada sisihan piawai adalah astronomik. Tetapi pada garis masa penuh — di mana strategi itu flat 99.6% daripada masa — "kelebihan" itu menyumbang pada asasnya tiada apa-apa: Sharpe garis-masa-penuh 0.82 dalam sampel, runtuh kepada 0.13 pada data segar. Pemenang yang dipilih oleh objektif itu adalah, bagi semua tujuan dagangan, flat.

Dan ia bukan pun kelebihan sebenar pada ambang itu. Ingat kembali pasaran itu: kelebihan hidup dalam jalur s1|s|\le 1, dan θ=0.005\theta = 0.005 terletak tepat di tengah-tengah di mana isyarat paling lemah. Keluk luar-sampel sebenar pada θ=0.005\theta = 0.005 adalah −0.01 — tidak dapat dibezakan daripada sifar (terbitan daripada keluk ground-truth). Carian itu tidak menemui satu kelebihan sebenar yang kecil. Ia menemui lapan cabutan bunyi hingar yang bertuah dan melaporkannya sebagai Sharpe 21.

Inilah perangkap itu dalam bentuk kecil: Sharpe setiap-dagangan memberi ganjaran kepada strategi kerana berdagang sejarang mungkin, kerana semakin sedikit bar yang anda berdiri di atasnya, semakin mudah untuk beberapa daripadanya bertuah, dan metrik itu tidak pernah sekalipun bertanya "tetapi adakah anda sebenarnya dalam pasaran?" Magnitud seed 6 dipilih secara terpilih — kami memang mencari yang mendadak — tetapi jenisnya tidak. Merentasi kesemua 600 seed, Sharpe setiap-dagangan memilih pemenang merosot (satu yang hampir tidak berdagang, atau rugi di luar sampel) dalam 57% daripadanya, dan satu loteri berpendedahan-bawah-5% khususnya dalam 56%. Pilihan merosot yang tipikal jauh lebih lembut daripada Sharpe 21 seed 6: purata merentasi kesemua 600 seed, pemenang objektif setiap-dagangan mempunyai Sharpe setiap-dagangan dalam-sampel 4.58 dan pendedahan purata 0.286 — masih flat kebanyakan masa, cuma bukan 99.6% flat. Seed 6 mendramatisasikan mekanisme itu; 56% itulah bahagian yang patut merisaukan anda. Lebih daripada separuh masa, metrik harian ini menyerahkan anda satu tiket loteri dan memanggilnya satu strategi.

Babak 3 — Kebenaran statistik: enam objektif, 600 seed

Enam fungsi objektif sebagai peserta pada papan pendahulu, Sharpe setiap-dagangan bersinar paling terang dalam sampel tetapi dicap merosot 57 peratus manakala objektif yang peka-pendedahan kekal stabil di luar sampel, menggambarkan bahawa satu nombor dalam-sampel yang hebat tidak bermakna satu pemilihan yang baik

Satu seed tidak membuktikan apa-apa; ia hanya menggambarkan. Untuk mengukur satu objektif kita perlu bertanya apa yang dipilihnya secara purata, merentasi banyak pasaran bebas, dan menskor pilihan itu pada data yang tidak pernah dilihat oleh carian itu. Jadi: 600 seed, setiap satu cabutan bebas pasaran itu; pada setiap satu, jalankan carian 80-ambang di bawah setiap objektif; rekod pendedahan, Sharpe dalam-sampel dan luar-sampel bagi apa sahaja yang dipilihnya, dan sama ada pilihan itu merosot.

Objektif Pendedahan purata Sharpe dalam-sampel Sharpe luar-sampel Penurunan IS→OOS (mutlak) Merosot
PnL Mentah 0.859 1.76 1.61 0.15 0.0%
Sharpe Garis-Masa-Penuh 0.740 1.82 1.71 0.11 0.0%
Sharpe Setiap-Dagangan 0.286 1.00 0.70 0.30 57%
Lantai pendedahan (emin=0.20e_{\min}=0.20) 0.740 1.82 1.71 0.11 0.0%
Pengecilan conf_k (k=40k=40) 0.523 1.54 1.31 0.23 20.7%
Teguh (lantai + conf_k) 0.675 1.78 1.70 0.08 0.2%

Lajur "Penurunan IS→OOS" adalah jatuhan mutlak dalam Sharpe tahunan daripada dalam-sampel kepada luar-sampel (cth. 1.000.701.00\to0.70 adalah satu penurunan 0.30), bukan satu peratusan. Dan perhatikan baris "Lantai pendedahan" adalah serupa bait-demi-bait dengan "Sharpe Garis-Masa-Penuh": itu bukan satu kebetulan, dan Babak 5 menjelaskan sebabnya.

Tiga fakta muncul dengan jelas, dan setiap satu adalah satu pengajaran.

Sharpe setiap-dagangan adalah satu-satunya objektif naif yang merosot. Pendedahan purata adalah 0.286 — ia memilih strategi yang flat kebanyakan masa — dan Sharpe dalam-sampelnya 1.00 jatuh sebanyak 0.30 kepada satu luar-sampel 0.70, yang paling teruk dalam kumpulan itu. Perhatikan tanda pengesan itu: nombor dalam-sampelnya (1.00) tidak pun mengagumkan, namun pada mana-mana satu seed ia dengan senang hati akan melaporkan satu angka setiap-dagangan sebanyak 21. Purata itu terhakis kerana tetingkap bertuah itu menunjuk ke arah rawak; apa yang terselamat kepada luar-sampel hanyalah 0.70, dan 57% daripada pilihan individu adalah sampah sepenuhnya.

Objektif yang peka-pendedahan adalah selamat secara semula jadi. PnL mentah dan Sharpe garis-masa-penuh tidak pernah merosot (0.0%). Sebabnya adalah struktural: kedua-duanya diukur sepanjang keseluruhan garis masa, jadi satu strategi yang flat 99.6% daripada masa memperoleh hampir tiada apa-apa di bawahnya. Anda tidak boleh memperdaya satu metrik garis-masa-penuh dengan berdagang jarang-jarang — duduk flat didenda secara langsung dan automatik, kerana bar flat berada dalam penyebut. Ini adalah idea paling penting dalam keseluruhan artikel ini, dan kami kembali kepadanya dalam Babak 6.

PnL mentah selamat tetapi tidak optimum — ia terlebih-pendedahan. Lihat dengan teliti: pendedahan purata PnL mentah adalah 0.859, yang paling tinggi daripada semua, dan Sharpe luar-sampelnya (1.61) sedikit di bawah Sharpe garis-masa-penuh (1.71) dan optimum sebenar (1.77). PnL memberi ganjaran kepada berada dalam pasaran, jadi carian itu menolak θ\theta terlalu tinggi (pada seed 6, PnL mentah memilih θ=1.84\theta=1.84 berbanding 1.04 yang optimum), menyeret masuk bar di luar-jalur yang tidak membawa kelebihan dan hanya menambah bunyi hingar. Ia tidak meletup — tetapi ia hanyut melepasi optimum sebenar dalam arah yang bertentangan dengan perangkap setiap-dagangan itu. Objektif berbeza, bias berbeza, pengajaran yang sama: metrik itu yang memilih strategi.

Dua baris yang belum kita bincangkan — lantai pendedahan dan conf_k — adalah pembaikan itu. Itulah babak seterusnya.

Babak 4 — Mengapa lapan dagangan tidak boleh dipercayai

Satu anggaran titik Sharpe tunggal ditandakan dengan bar ralat selang-keyakinan yang sangat besar kerana ia bersandar pada hanya lapan pemerhatian, di sebelah satu pembaris berlabel panjang rekod trek minimum, menggambarkan bahawa satu nisbah yang diukur pada segelintir dagangan adalah tidak bermakna secara statistik

Sebelum membaiki perangkap itu, wajar untuk bersikap tepat tentang mengapa lapan dagangan menghasilkan satu Sharpe 21 yang tidak bermakna apa-apa — kerana pembetulan itu mengikuti secara langsung daripada sebabnya.

Satu nisbah Sharpe adalah satu anggaran, dan anggaran mempunyai bar ralat. Keputusan Andrew Lo pada 2002 memberikan ralat piawai bagi satu nisbah Sharpe yang dianggarkan daripada TT pemerhatian, di bawah andaian yang paling pemurah yang mungkin (pulangan Gaussian IID):

SE(SR^)1+SR^2/2T.\operatorname{SE}\big(\widehat{SR}\big) \approx \sqrt{\frac{1 + \widehat{SR}^{\,2}/2}{T}}.

Ralat itu mengecil hanya sebagai 1/T1/\sqrt{T}. Suapkan ia perangkap itu. Sharpe setiap-dagangan pada seed 6 adalah 21.0921.09 tahunan, iaitu 1.331.33 setiap pemerhatian, dikira pada T=8T = 8 bar. Ralat piawainya adalah

SE1+1.332/280.49 per observation = 7.7 annualized\operatorname{SE} \approx \sqrt{\frac{1 + 1.33^2/2}{8}} \approx 0.49 \ \text{per observation} \ = \ \textbf{7.7 annualized}

(terbitan daripada formula Lo). Anggaran titik itu adalah 21.0921.09; bar ralat satu-sigmanya berada pada order ±7.7\pm 7.7 — bacalah ini sebagai order-magnitud ilustratif, bukan selang keyakinan yang ditentukur, kerana formula itu menganggap pulangan Gaussian IID yang dilanggar oleh bunyi hingar berekor-tebal t4t_4 kami. Walaupun begitu, mesejnya tidak dapat disangkal: "Sharpe 21" itu adalah satu nombor yang dicabut daripada satu taburan yang begitu luas sehingga ia membawa pada asasnya tiada maklumat — dan itu adalah pengiraan yang pemurah, kerana lanjutan Mertens menunjukkan bahawa ekor tebal dan skew hanya menggembungkan ralat piawai itu lebih lagi. Sharpe bagi satu backtest dagangan-jarang kurang boleh dipercayai daripada nilai titiknya dalam setiap arah serentak: terlalu sedikit pemerhatian, dan taburan yang salah.

Inilah tepatnya yang diformalkan oleh Panjang Rekod Trek Minimum (Bailey & López de Prado, 2012). Ia membalikkan soalan itu — berapa banyak pemerhatian yang saya perlukan sebelum saya dibenarkan mempercayai satu Sharpe bersaiz ini pada keyakinan pp?

MinTRL=1+[1γ^3SR^+γ^414SR^2](Z1pSR^SR)2,\text{MinTRL} = 1 + \Big[\,1 - \hat\gamma_3\,\widehat{SR} + \tfrac{\hat\gamma_4 - 1}{4}\,\widehat{SR}^{\,2}\,\Big]\left(\frac{Z_{1-p}}{\widehat{SR} - SR^*}\right)^{2},

menukarkan "percaya kurang backtest dagangan-sedikit" kepada satu bilangan dagangan yang eksplisit dan boleh disemak. Intipati mendalam bagi reka bentuk objektif adalah ini: satu objektif yang baik patut menguatkuasakan rekod trek minimum dari dalam, bukannya membiarkan seorang manusia perasan, selepas fakta, bahawa pemenang itu bersandar pada lapan pemerhatian. Sharpe setiap-dagangan melakukan sebaliknya — ia dimaksimumkan dengan menolak bilangan pemerhatian ke arah minimum. Sebarang objektif yang optimumnya terletak pada "seberapa sedikit dagangan yang mungkin" adalah, mengikut binaan, satu objektif yang mencari anggarannya sendiri yang paling tidak boleh dipercayai.

Dua kegagalan bergabung dalam perangkap ini, dan menamakan kedua-duanya memberitahu kita cara membetulkannya. Pertama, bunyi hingar sampel-kecil: lapan pemerhatian tidak boleh memastikan sebarang nisbah. Kedua, pemilihan: lapan bar itu tidak diserahkan kepada kita — carian itu memilih ambang yang mendarat pada mereka, sebahagiannya kerana mereka bertuah. Carian itu adalah satu pemaksimum; ia akan sentiasa menemui penjuru ruang itu di mana bunyi hingar kebetulan kelihatan seperti isyarat. Anda tidak boleh mengatasi ini dengan anggaran titik yang lebih baik. Anda perlu mengubah apa yang dimaksudkan dengan "terbaik" supaya penjuru bertuah itu bukan maksimum.

Babak 5 — Pembaikan: satu lantai pendedahan dan satu pengecilan bilangan-dagangan

Satu panel kawalan dengan dua tombol berlabel lantai pendedahan dan pengecilan conf_k, kedua-duanya mengangkat satu permukaan prestasi luar-sampel ke atas satu plato rata yang tinggi manakala satu penunjuk kemerosotan menjadi gelap, menggambarkan dua pembetulan bebas yang bersama-sama memulihkan optimum sebenar

Kita mempunyai dua penyakit yang dinamakan — berdagang terlalu jarang dan bersandar pada terlalu sedikit pemerhatian — jadi kita menulis dua penawar, setiap satu disasarkan kepada satu penyakit.

Penawar 1: satu lantai pendedahan. Pembetulan paling mudah yang mungkin. Tolak terus sebarang strategi yang tidak berada dalam pasaran sekurang-kurangnya emine_{\min} daripada masa — jika anda hampir tidak berdagang, skor anda adalah -\infty dan carian itu tidak boleh memilih anda. Tetapi ada satu kehalusan jujur tentang apa yang anda letakkan lantai, dan itulah pengajaran senyap keseluruhan artikel ini. Sebagai objektif berdiri sendiri kami meletakkan lantai pada Sharpe garis-masa-penuh, dan pada pasaran ini itu tidak mengubah apa-apa langsung: pemenang Sharpe garis-masa-penuh itu sendiri sudah berada pada ~74% pendedahan, jadi lantai 20% tidak pernah sekalipun terikat. Itulah tepatnya sebab baris "lantai pendedahan" dan "Sharpe garis-masa-penuh" dalam jadual di atas adalah serupa bait-demi-bait — pasangkan satu lantai kepada satu metrik yang sudah selamat dan anda hanya menerbitkan semula Sharpe penuh. Lantai itu hanya melakukan kerja yang kelihatan apabila ia menjaga satu metrik yang sebaliknya akan berlari pantas ke penjuru: satu metrik setiap-dagangan, seperti dalam objektif teguh di bawah. Dalam erti kata lain, "memerlukan pendedahan" dan "mengukur pada garis masa penuh" adalah, pada data ini, dua nama bagi campur tangan yang sama.

Penawar 2: satu pengecilan bilangan-dagangan — "conf_k". Untuk apabila anda terperangkap dengan satu metrik setiap-dagangan dan mahukan satu pembetulan lembut dan bukannya potongan keras: diskaunkan Sharpe itu secara berterusan mengikut berapa banyak dagangan yang menjadi sandarannya. Darabkan dengan n/(n+k)n/(n+k), di mana nn adalah bilangan dagangan dan kk adalah satu "pemalar keyakinan" tetap — satu kekuatan prior setara-dagangan yang dipilih sebelum carian itu:

score(θ)=SR^(θ)n(θ)n(θ)+k.\text{score}(\theta) = \widehat{SR}(\theta)\cdot \frac{n(\theta)}{n(\theta) + k}.

Apabila n0n \to 0 skor itu dihimpit kepada sifar tanpa mengira sebesar mana Sharpe mentah itu; apabila nn \to \infty skor itu menumpu kepada Sharpe mentah. Ini adalah logik pembetulan yang sama seperti MinTRL dan ralat piawai Babak 4 — mengecilkan satu anggaran sampel-kecil ke arah sifar sebagai satu fungsi menurun bagi saiz sampelnya — dilipat terus ke dalam objektif dan bukannya diguna pakai sebagai satu penapis pasca-hoc. Preseden bernama yang paling hampir adalah System Quality Number van Tharp (SQN=Ntrade/σtrade\text{SQN} = \sqrt{N}\cdot \overline{\text{trade}}/\sigma_{\text{trade}}), yang juga menjadikan satu metrik kualiti setiap-dagangan berskala dengan bilangan dagangan NN — walaupun bentuk fungsiannya berbeza (N\sqrt{N} berkembang tanpa batas, manakala n/(n+k)n/(n+k) tepu pada 1). Dari segi bentuk, penawar kami adalah satu pengecilan gaya-Bayesian-berwajaran-ketepatan / empirical-Bayes; ia adalah binaan kami sendiri untuk masalah ini, bukan satu penganggar bernama yang diambil daripada literatur.

def obj_active_sharpe(m):                  # the trap: Sharpe on only the active bars
    return m["sharpe_active"]

def _shrink(n, conf_k):                     # trade-count shrinkage n / (n + k)
    return n / (n + conf_k) if (n + conf_k) > 0 else 0.0

def obj_confk(m, conf_k=40.0):              # few trades -> little credit
    return m["sharpe_active"] * _shrink(m["n_trades"], conf_k)

def obj_robust(m, e_min=0.20, conf_k=40.0): # both cures at once
    if m["exposure"] < e_min:               # floor: reject strategies that barely trade
        return -np.inf
    return m["sharpe_active"] * _shrink(m["n_trades"], conf_k)

Sekarang bahagian jujur itu: berapa banyak lantai, berapa banyak pengecilan? Imbas kedua-duanya dan baca keseluruhan permukaan itu. Setiap sel adalah Sharpe luar-sampel purata merentasi 200 seed (satu subset satu-pertiga daripada 600, untuk mengekalkan imbasan dua-dimensi itu murah) dengan kadar kemerosotan di sebelahnya:

emine_{\min} \ conf_k k=0k=0 k=40k=40 k=80k=80
0.00 0.66 (59.5%) 1.26 (22.5%) 1.47 (11.5%)
0.05 1.43 (10.0%) 1.53 (6.0%) 1.60 (4.0%)
0.10 1.64 (1.5%) 1.65 (1.0%) 1.67 (1.0%)
0.20 1.71 (0.0%) 1.71 (0.0%) 1.71 (0.0%)
0.35 1.73 (0.0%) 1.73 (0.0%) 1.73 (0.0%)

Sharpe tahunan luar-sampel purata, dengan kadar kemerosotan dalam kurungan. Sel kiri-atas (0,0)(0,0) adalah Sharpe setiap-dagangan mentah — tiada lantai, tiada pengecilan: OOS 0.66, merosot 59.5%. Itu adalah objektif yang sama seperti baris setiap-dagangan Babak 3, yang membaca 0.70 / 57%; jurang kecil itu semata-mata set seed — imbasan ini menggunakan 200 seed, Monte Carlo menggunakan kesemua 600. Metrik yang sama, sampel yang lebih kecil.

Permukaan itu menceritakan satu kisah yang bersih dalam tiga bacaan.

Setiap penawar berfungsi secara bersendirian. Gerak ke kanan sepanjang baris atas (tambah pengecilan, tiada lantai): OOS memanjat 0.661.261.470.66 \to 1.26 \to 1.47 dan kemerosotan jatuh 59.5%22.5%11.5%59.5\% \to 22.5\% \to 11.5\%. Gerak ke bawah lajur kiri (tambah lantai, tiada pengecilan): OOS memanjat 0.661.431.641.710.66 \to 1.43 \to 1.64 \to 1.71 dan kemerosotan jatuh 59.5%10%1.5%0%59.5\% \to 10\% \to 1.5\% \to 0\%. Mana-mana tombol, diputar secara bersendirian, secara bebas mengangkat prestasi luar-sampel dan membunuh kemerosotan. Lantai pendedahan adalah tuas tunggal yang lebih kuat di sini, kerana ia menyerang ciri penentu perangkap itu — pendedahan hampir-sifar — secara terus.

Bersama-sama mereka mencapai plato itu — dan plato itu hanyalah Sharpe garis-masa-penuh. Menjelang emin=0.20e_{\min} = 0.20 baris itu rata pada OOS 1.71 dengan 0% kemerosotan merentasi setiap tahap pengecilan; tolak kepada emin=0.35e_{\min}=0.35 dan ia beranjak sedikit kepada 1.73. Tetapi lihat dengan teliti apa 1.71 itu sebenarnya: ia adalah skor tepat yang dicatatkan oleh Sharpe garis-masa-penuh biasa dalam Babak 3 tanpa sebarang lantai dan tanpa sebarang pengecilan sama sekali. Pada tahap terbaiknya, naik taraf itu tidak mengatasi Sharpe garis-masa-penuh — ia membina semulanya. Dan objektif teguh yang dibaiki sepenuhnya pun tidak sampai betul-betul ke sana: merentasi kesemua 600 seed ia mendarat pada OOS 1.70 dengan baki kemerosotan 0.17%, sedikit di bawah 1.71 / 0% Sharpe penuh — ia didominasi secara lemah oleh metrik yang lebih ringkas. Satu tetapan pertengahan yang sederhana, emin=0.10e_{\min}=0.10 dengan k=40k=40, mencapai OOS 1.65 pada 1% kemerosotan — berguna jika satu metrik setiap-dagangan dipaksa ke atas anda, tetapi tidak pernah menjadi sebab untuk memilih satu.

Nombor yang tepat bergantung-skala — bentuk itulah hasilnya. Nilai khusus emin=0.20e_{\min}=0.20, k=40k=40 yang membaiki pasaran ini sepenuhnya ditalakan kepada proses penjanaan-data ini; pada pasaran lain dengan kekerapan dagangan dan ketebalan ekor yang berbeza, plato itu terletak di tempat lain. Apa yang bergeneralisasi bukan koordinatnya tetapi permukaannya: satu angkatan monoton dalam kedua-dua arah, kemerosotan ditolak kepada sifar, satu plato pada kebenaran. Anda menemui koordinat anda sendiri dengan mengimbas, tepat seperti di atas.

Gabungkan kedua-dua penawar bersama — objektif teguh, lantai 0.20 ditambah conf_k 40 — dan kembali kepada seed 6. Perangkap itu menobatkan θ=0.005\theta = 0.005, lapan dagangan, satu Sharpe OOS garis-masa-penuh 0.13. Objektif teguh itu sebaliknya memilih θ=0.979\theta = 0.979: pendedahan pasaran 0.66, 447 dagangan, Sharpe tahunan luar-sampel 1.77. θ=0.979\theta = 0.979 itu adalah satu titik grid di bawah optimum sebenar θ=1.04\theta = 1.04, jadi ia memulihkan satu ambang hampir-optimum yang berpendedahan baik dan bukannya mendarat tepat di tengah sasaran — Sharpe luar-sampel seed-tunggalnya (1.77) kebetulan bertepatan dengan optimum populasi. Data yang sama, carian yang sama, 80 ambang calon yang sama. Hanya takrifan "terbaik" yang berubah, dan ia menggerakkan pemenang itu daripada satu fatamorgana lapan-dagangan yang flat kepada kelebihan sebenar yang berpendedahan baik — yang, secara menariknya, adalah ambang yang sama tepat yang dipilih oleh Sharpe garis-masa-penuh biasa pada seed ini.

Satu amaran yang dijelaskan secara eksplisit oleh imbasan ini: conf_k sahaja tidak mencukupi pada pasaran ini. Pada k=40k=40 tanpa lantai, kemerosotan masih 22.5% merentasi seed — dan pada seed 6 khususnya, conf_k sahaja memilih θ=0.015\theta = 0.015, 35 dagangan, satu Sharpe luar-sampel −0.06. Tiga puluh lima dagangan terselamat daripada satu pengecilan 35/(35+40)0.4735/(35+40) \approx 0.47 dengan skor yang cukup tinggal untuk menang. Lantai pendedahan itulah yang menutup jurang terakhir itu, kerana ia menyasarkan tandatangan sebenar perangkap itu — berada flat — secara terus, dan bukannya mempercayai bilangan dagangan sebagai proksi untuknya.

Babak 6 — Pengajaran yang lebih mendalam: ukur pada keseluruhan garis masa

Dua cara menskor strategi yang sama dibandingkan: satu sorotan sempit yang menyuluh hanya beberapa bar yang didagangkan oleh strategi itu berbanding satu lampu banjir yang mengukur keseluruhan garis masa termasuk selang flat, menggambarkan bahawa objektif yang peka-pendedahan tidak boleh diperdaya oleh dagangan bertuah yang jarang

Undur selangkah daripada pembaikan itu dan perhatikan apa yang sebenarnya memisahkan objektif yang selamat daripada perangkap itu. Ia bukan kecanggihan. PnL mentah dan Sharpe garis-masa-penuh adalah lebih ringkas daripada Sharpe setiap-dagangan, dan mereka tidak pernah merosot — 0% merentasi 600 seed — tanpa sebarang lantai, tanpa sebarang pengecilan, tanpa sebarang penalaan langsung.

Garis pemisah itu adalah satu ciri tunggal: tetingkap apa yang diukur oleh metrik itu? Sharpe setiap-dagangan mengukur hanya bar-bar yang dipilih oleh strategi itu untuk berdiri di atasnya — satu tetingkap pilihan-sendiri yang boleh dikecilkan oleh carian itu sesuka hati. Sharpe garis-masa-penuh dan jumlah PnL mengukur keseluruhan garis masa, termasuk bar flat. Dan anda tidak boleh menjadikan satu metrik garis-masa-penuh besar dengan berdagang jarang-jarang, kerana setiap jam anda duduk flat adalah satu jam dalam penyebut yang tidak memperoleh apa-apa. Lantai pendedahan dan conf_k, pada akhirnya, hanyalah cara-cara menaik taraf metrik setiap-dagangan dengan kepekaan-pendedahan yang sudah dimiliki secara percuma oleh metrik garis-masa-penuh — dan imbasan itu sudah memberitahu kita siling naik taraf itu: pada tahap terbaiknya ia menyamai Sharpe garis-masa-penuh (OOS 1.70 vs 1.71), tidak pernah mengatasinya. Jika anda bebas memilih tetingkap itu, pilih keseluruhan garis masa dan langkau naik taraf itu sepenuhnya.

Jadi prinsip reka bentuk itu, dinyatakan dengan jelas:

Reka bentuk objektif itu supaya ia tidak boleh diperdaya oleh dagangan bertuah yang jarang. Anda mempunyai tiga alat, mengikut susunan keutamaan secara kasar:

  1. Ukur pada garis masa penuh. Default yang hampir tidak pernah patut ditinggalkan. Sharpe garis-masa-penuh dan jumlah pulangan adalah peka-pendedahan mengikut binaan — kelengahan didenda secara automatik kerana bar flat dikira. Jika anda mendapati diri anda melaporkan satu metrik yang dikira pada "hanya bar-bar di mana kami aktif," berhenti dan tanya apa yang akan dilakukan oleh carian itu dengan kebebasan memilih bar-bar itu.
  2. Memerlukan pendedahan. Jika anda mesti menggunakan satu metrik bersyarat-aktiviti, letakkan lantai pada pendedahan supaya carian itu tidak boleh memilih satu strategi yang hampir tidak berdagang. Ini adalah tuas tunggal yang paling kuat menentang perangkap khusus ini.
  3. Kecilkan mengikut bilangan dagangan. Diskaunkan sebarang nisbah dengan n/(n+k)n/(n+k) supaya satu Sharpe yang bersandar pada segelintir pemerhatian memperoleh hanya sebahagian kecil kredit yang diperoleh oleh satu yang bersandar pada beribu-ribu. Ini adalah penguatkuasaan Panjang Rekod Trek Minimum di peringkat objektif: satu nombor daripada sedikit pemerhatian tidak boleh dipercayai (Babak 4), jadi satu objektif yang jujur menetapkan harga ketidakbolehpercayaan itu dan bukannya mempercayai seorang manusia untuk menangkapnya kemudian.

Tiada satu pun daripada ini menjadikan carian itu lebih bijak. Ia menjadikan sasaran itu jujur, supaya apabila carian itu melakukan tepat apa yang sentiasa dilakukannya — mencari maksimum — maksimum itu adalah satu strategi yang benar-benar anda mahukan.

Nota kejujuran

Tiga amaran, dinyatakan dengan jelas, kerana satu kajian terkawal memperoleh kesimpulannya hanya dengan menamakan hadnya.

  • Pasaran itu adalah sintetik, dan disengajakan begitu. Satu isyarat standard-Normal, satu kelebihan linear yang terhad kepada s1|s|\le 1, bunyi hingar Student-tt(44) berekor tebal — dipilih untuk ground truth terkawal, bukan untuk realisme pasaran. Kita hanya boleh membuktikan bahawa satu objektif memilih strategi yang salah dengan menjalankannya pada data di mana kita tahu strategi mana yang betul. Pasaran sebenar adalah tidak pegun, berkorelasi bersiri, dan beralih-rejim. Ekor tebal itu adalah satu ramuan realistik yang kami kekalkan, tetapi — bertentangan dengan tekaan pertama yang semula jadi, dan bertentangan dengan draf awal artikel ini sendiri — ia bukan apa yang menggerakkan perangkap itu: satu kawalan bunyi-hingar-Gaussian (300 seed) merosot 55.7% daripada masa berbanding 57.0% di sini, dengan Sharpe luar-sampel 0.71 berbanding 0.70. Perangkap itu adalah satu artifak sampel-kecil-tambah-pemilihan yang terselamat dengan atau tanpa ekor berat. Yang diserahkan adalah diagnosis dan corak pembaikan, bukan satu strategi dan bukan satu pemalar universal.
  • Nilai pembaikan itu bergantung-skala. Lantai khusus emin=0.20e_{\min}=0.20 dan pengecilan k=40k=40 yang menutup perangkap itu sepenuhnya adalah disesuaikan kepada proses penjanaan-data ini — kekerapan dagangannya, ketebalan ekornya, saiz kelebihannya. Pada data lain plato itu bergerak. Apa yang berpindah adalah bentuk permukaan imbasan itu (angkatan monoton pada kedua-dua tombol, kemerosotan kepada sifar, satu plato pada kebenaran) dan kaedah untuk mencari koordinat anda sendiri: imbas kedua-duanya dan baca permukaan itu, jangan salin nombornya.
  • conf_k adalah binaan kami sendiri, bukan satu penganggar bernama. Pengecilan bilangan-dagangan SR^n/(n+k)\widehat{SR}\cdot n/(n+k) adalah satu alat gaya Bayesian-berwajaran-ketepatan / empirical-Bayes yang kami bina untuk masalah ini; rasionalnya berakar pada keputusan ralat-piawai Lo/Mertens yang disahkan dan MinTRL Bailey–López de Prado, dan saudara bernama yang paling hampir adalah System Quality Number van Tharp (Ntrade/σtrade\sqrt{N}\cdot \overline{\text{trade}}/\sigma_{\text{trade}}, satu bentuk fungsian yang berbeza), tetapi kami tidak mendakwa n/(n+k)n/(n+k) itu sendiri muncul di bawah sesuatu nama dalam literatur. Penawar pengiringnya — lantai pendedahan, pengukuran garis-masa-penuh — adalah amalan standard yang dinyatakan dengan tepat. Dan perhatikan objektif mana yang sudah selamat di sini: PnL mentah dan Sharpe garis-masa-penuh tidak pernah memerlukan pembaikan, kerana mereka peka-pendedahan sejak awal — sehinggakan meletakkan lantai pada Sharpe garis-masa-penuh terturun kembali kepada Sharpe garis-masa-penuh, pemenangnya sudah melepasi sebarang lantai yang munasabah. Perangkap itu khususnya adalah Sharpe setiap-dagangan / aktif — dan malah objektif setiap-dagangan yang dibaiki sepenuhnya pun hanya menyamai Sharpe garis-masa-penuh (OOS 1.70 vs 1.71), tidak pernah mengatasinya. Pengajaran utama bukanlah pembaikan itu; ia adalah untuk mengukur pada garis masa penuh sejak dari awal.

Kesimpulan Utama

  1. Objektif itu adalah keputusan, bukan formaliti. Satu carian tidak menemui "satu strategi yang baik" — ia menemui pemaksimum bagi apa sahaja skalar yang anda serahkan kepadanya, dan skalar yang berbeza memilih strategi yang sangat berbeza pada data yang sama. Memilih objektif itu ialah memilih strategi; segala-galanya selepas itu hanyalah kerja perakaunan. Itulah hukum Goodhart: sebaik sahaja metrik anda menjadi sasaran carian itu, carian itu akan mengeksploitasi setiap jurang antaranya dan apa yang anda maksudkan.
  2. Sharpe setiap-dagangan adalah satu perangkap. Diukur hanya pada bar-bar yang didagangkan oleh satu strategi, ia dimaksimumkan dengan berdagang sejarang mungkin — semakin sedikit pemerhatian, semakin mudah beberapa pergerakan bertuah menggembungkan nisbah itu (satu kawalan Gaussian mengesahkan ekor tebal tidak diperlukan; ia adalah kesan sampel-kecil-tambah-pemilihan). Merentasi 600 seed ia memilih satu loteri berpendedahan-bawah-5% dalam 56% daripadanya dan merosot dalam 57%; pilihan merosot yang tipikal purata satu Sharpe setiap-dagangan dalam-sampel 4.58. Pada satu seed yang sengaja dipilih mendadak, ia menobatkan satu strategi lapan-dagangan, 0.4%-pendedahan dengan Sharpe setiap-dagangan dalam-sampel 21.09 yang runtuh kepada satu Sharpe garis-masa-penuh luar-sampel 0.13. Satu nisbah yang dibina di atas lapan pemerhatian mempunyai ralat piawai pada order ±7.7 tahunan (Babak 4) — ia tidak pernah menjadi maklumat.
  3. Objektif yang peka-pendedahan adalah selamat secara semula jadi. PnL mentah dan Sharpe garis-masa-penuh tidak pernah merosot (0%), kerana mereka mengukur keseluruhan garis masa dan kelengahan didenda secara automatik. Anda tidak boleh memperdaya satu metrik garis-masa-penuh dengan berdagang jarang-jarang. Satu-satunya kelemahan PnL mentah adalah bias yang bertentangan — ia terlebih-pendedahan (pendedahan purata 0.859, OOS 1.61 berbanding 1.77 yang sebenar), menggerakkan θ\theta melepasi optimum untuk lebih banyak berada dalam pasaran.
  4. Pembaikan itu berfungsi — tetapi ia hanya membawa anda kembali kepada Sharpe garis-masa-penuh. Satu lantai pendedahan dan satu pengecilan bilangan-dagangan (conf_k) masing-masing secara bebas mengangkat Sharpe luar-sampel dan menolak kemerosotan ke arah sifar; bersama-sama mereka mencapai satu plato. Tetapi plato itu ialah Sharpe garis-masa-penuh: kemerosotan jatuh daripada 59.5% pada (emin,k)=(0,0)(e_{\min},k)=(0,0) kepada 0% menjelang emin=0.20e_{\min}=0.20 dan Sharpe OOS memanjat daripada 0.66 kepada 1.71 — nombor tepat yang dicatatkan oleh Sharpe penuh biasa tanpa bantuan, dan objektif teguh yang dibaiki sepenuhnya sebenarnya mendarat sedikit di bawahnya (OOS 1.70, kemerosotan 0.17%: didominasi secara lemah). Pada seed 6 objektif teguh itu memulihkan satu ambang hampir-optimum yang berpendedahan baik (θ=0.979\theta = 0.979, satu titik grid di bawah 1.041.04 sebenar; 447 dagangan; Sharpe OOS 1.77). Anggap conf_k sebagai satu pilihan sandaran untuk apabila satu metrik setiap-dagangan dipaksa ke atas anda, bukan sebagai satu naik taraf berbanding mengukur garis masa penuh. Koordinat yang tepat bergantung-skala; bentuk permukaan itu adalah hasil yang berpindah.
  5. Reka bentuk objektif itu supaya ia tidak boleh diperdaya oleh dagangan bertuah yang jarang. Mengikut keutamaan: ukur pada garis masa penuh (default), memerlukan pendedahan (tuas tunggal paling kuat), kecilkan mengikut bilangan dagangan (Panjang Rekod Trek Minimum di peringkat objektif). Tiada satu pun daripada ini menjadikan carian itu lebih bijak — ia menjadikan sasaran itu jujur, supaya maksimum yang pasti ditemui oleh carian itu adalah satu strategi yang benar-benar akan anda dagangkan.

Satu carian parameter adalah satu jin yang taat. Ia mengabulkan tepat hajat yang anda ucapkan, bukan yang anda maksudkan — dan "maksimumkan metrik ini" adalah hajat itu. Ucapkannya sebagai satu Sharpe setiap-dagangan dan ia akan menyihir lapan dagangan bertuah dan memanggilnya satu kekayaan. Ucapkannya supaya duduk flat itu dihukum dan segelintir dagangan hanya memperoleh segelintir kredit, dan jin yang sama, pada data yang sama, menyerahkan anda kelebihan sebenar. Strategi yang anda gunakan telah dipilih pada saat anda menaip objektif itu. Pilihlah ia dengan sengaja.

Eksperimen penuh — pasaran sintetik, enam objektif, Monte Carlo 600-seed, dan permukaan imbasan-pembaikan, setiap nombor boleh dihasilkan semula daripada satu skrip deterministik tunggal — terdapat dalam kertas kerja pengiring di objective-design.marketmaker.cc, dengan kod dan data di github.com/suenot/objective-design-degeneracy.

Ini adalah satu front dalam perang yang sama yang diperjuangkan oleh kajian-kajian kami yang lain daripada sudut yang berbeza. Deflated Sharpe Ratio memberi harga kepada pemenang satu carian selepas ujian berganda — di mana artikel ini bertanya sama ada objektif itu langsung memilih strategi yang betul, DSR bertanya sama ada strategi yang dipilihnya mengatasi apa yang dihasilkan oleh nasib baik sahaja. Kajian kebarangkalian overfitting backtest yang akan datang menyerang bias pemilihan yang sama daripada sisi pensampelan semula, menskor prosedur itu dan bukannya pemenang. Dan taksonomi look-ahead bias mengkatalogkan pengeluar hebat lain bagi Sharpe palsu — satu kebocoran daripada masa depan — yang menghasilkan gejala yang sama tepat (satu backtest gemilang yang mati secara langsung) melalui satu mekanisme yang sama sekali berbeza. Reka bentuk objektif, deflasi, kebarangkalian overfitting, look-ahead: empat nama untuk satu disiplin — tidak diperdaya oleh backtest anda sendiri.

Penafian: Maklumat yang disediakan dalam artikel ini adalah untuk tujuan pendidikan dan maklumat sahaja dan bukan merupakan nasihat kewangan, pelaburan, atau dagangan. Dagangan mata wang kripto melibatkan risiko kerugian yang ketara.

Pengarang

Eugen Soloviov
Eugen Soloviov

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.

Newsletter

Kekal Mendahului Pasaran

Langgan surat berita kami untuk pandangan dagangan AI eksklusif, analisis pasaran, dan kemas kini platform.

Kami menghormati privasi anda. Berhenti melanggan pada bila-bila masa.