← Kembali ke artikel
July 2, 2026
5 menit baca

Objective-Function Design: Metrik yang Anda Optimalkan Diam-Diam Memilih Strategi Anda

Objective-Function Design: Metrik yang Anda Optimalkan Diam-Diam Memilih Strategi Anda
#algotrading
#backtest
#overfitting
#objective-function
#optimisasi
#sharpe
#validasi
🎯
Part 1 of 7 · Collection
Backtesting Without Fooling Yourself

Bagian dari seri "Backtests Without Illusions".

📄 Artikel ini berkembang menjadi paper riset. Setiap angka di bawah berasal dari satu skrip deterministik yang membangun ground truth terkontrol — sebuah pasar sintetis dengan edge yang diketahui pada pita sinyal moderat dan noise fat-tailed di mana-mana — lalu menjalankan satu pencarian threshold di bawah enam fungsi objektif berbeda dan mengukur, out of sample, strategi mana yang sebenarnya dipilih setiap objektif. Baca paper-nya online (versi interaktif + PDF) di objective-design.marketmaker.cc, kode dan data di github.com/suenot/objective-design-degeneracy.

Anda menginginkan strategi terbaik. Jadi Anda menjalankan sebuah pencarian — menyapu sebuah threshold, sebuah lookback, sebuah jarak stop, dan menyimpan setting mana pun yang mencetak skor tertinggi. Pencarian selesai dan menyerahkan seorang pemenang kepada Anda. Masuk akal. Standar. Itulah yang dilakukan setiap optimizer, grid search, dan hyperparameter tuner di muka bumi.

Tetapi perhatikan kata kerjanya: mencetak skor tertinggi. Tertinggi dalam apa? Sebelum pencarian bisa menobatkan apa pun, Anda harus menyerahkan kepadanya satu angka tunggal untuk dimaksimalkan — sebuah fungsi objektif. PnL. Sharpe. Sharpe-pada-bar-yang-Anda-tradingkan. Return-per-max-drawdown. Anda mengetikkan salah satu dari ini, mungkin tanpa banyak berpikir, dan kemudian pencarian menghabiskan sejuta evaluasi melakukan persis apa yang Anda minta.

Pilihan tunggal itu bukan formalitas. Itu adalah keputusan sepenuhnya. Pencarian tidak menemukan "strategi yang bagus" — tidak ada hal semacam itu secara abstrak. Ia menemukan strategi yang memaksimalkan skalar yang Anda pilih, dan skalar yang berbeda menunjuk pada strategi yang sangat berbeda pada data yang sama. Objektif adalah tangan rahasia di kemudi, dan kebanyakan waktu tidak ada yang memperhatikannya.

Berikut seluruh artikel dalam satu tabel. Satu pencarian threshold, satu pasar sintetis dengan edge nyata yang diketahui, enam objektif — dan enam strategi yang mereka pilih, diukur pada data held-out:

Objektif (apa yang dimaksimalkan pencarian) Eksposur pasar rata-rata Sharpe in-sample Sharpe out-of-sample Pemenang degenerat
PnL mentah 0.859 1.76 1.61 0%
Sharpe full-timeline 0.740 1.82 1.71 0%
Sharpe per-trade ("aktif") 0.286 1.00 0.70 57%
Exposure floor (emin=0.20e_{\min}=0.20) 0.740 1.82 1.71 0%
Shrinkage jumlah-trade (conf_k=40=40) 0.523 1.54 1.31 20.7%
Robust (floor + conf_k) 0.675 1.78 1.70 0.2%

600 seed independen, T=2000T = 2000 bar masing-masing, 80 threshold kandidat per pencarian, in-sample dan out-of-sample ditarik secara independen. Sharpe tahunan (252 periode/tahun). "Degenerat" = pemenang terpilih berada di pasar kurang dari 5% dari waktu, atau mencetak Sharpe out-of-sample non-positif. Optimum sejati pasar ini adalah Sharpe tahunan out-of-sample sebesar 1.77.

Baca baris ketiga sampai terasa menyakitkan. Sharpe per-trade — perwakilan dari seluruh keluarga metrik activity-conditional (Sharpe per-trade, expectancy, SQN milik van Tharp, win rate), semuanya dihitung pada hanya bar yang Anda tradingkan — memilih strategi yang out of sample lebih buruk daripada separuh yang lain, dan melakukannya secara degenerat 57% dari waktu. Ini bukan objektif yang sedikit lebih buruk. Pada data ini ia adalah sebuah jebakan, dan pencarian terjerembab ke dalamnya lebih dari separuh waktu. Sekarang baca baris tepat di atasnya: Sharpe full-timeline yang polos tidak pernah berdegenerasi dan mencetak 1.71 out of sample. Itulah inti dari seluruh perbaikan, dibocorkan lebih awal — perbaikan yang jujur hanyalah mengukur pada seluruh timeline; perombakan yang lebih canggih di baris-baris bawah, di titik terbaiknya, hanya pernah menyamai angka itu, tidak pernah mengalahkannya. Artikel ini adalah anatomi dari jebakan itu dan perbaikannya, dengan ground truth yang diketahui sepanjang jalan sehingga "apakah objektif memilih strategi yang benar?" menjadi fakta, bukan opini.

Babak 1 — Keputusan rahasia: hukum Goodhart adalah pencarian itu sendiri

Sebuah parameter search digambarkan sebagai corong dari banyak kurva strategi kandidat, dengan sebuah lensa tunggal berlabel OBJECTIVE mencap satu kurva sebagai pemenang sementara kurva-kurva yang tampak identik dibuang, mengilustrasikan bahwa pilihan metrik diam-diam memilih strategi

Pada tahun 1975 ekonom Charles Goodhart menulis sebuah kalimat yang bertahan lebih lama daripada semua hal lain yang ia lakukan:

"Setiap keteraturan statistik yang teramati akan cenderung runtuh begitu tekanan diberikan padanya untuk tujuan kendali."

Parafrase populernya, biasanya dikreditkan kepada Marilyn Strathern, lebih ringkas: ketika sebuah ukuran menjadi target, ia berhenti menjadi ukuran yang baik.

Sebuah parameter search adalah instansi paling murni yang mungkin dari hukum Goodhart. Fungsi objektif adalah ukurannya. Pencarian adalah tekanannya — ribuan, jutaan percobaan untuk mendorong ukuran itu setinggi mungkin. Dan pencarian sama sekali tidak peduli dengan apa yang Anda maksudkan dengan ukuran itu. Ia hanya peduli pada angkanya. Jika ada cara apa pun untuk membuat angka itu besar yang tidak ada hubungannya dengan edge nyata yang bisa ditradingkan — trading jarang-jarang, duduk flat sebagian besar waktu, menangkap beberapa outlier yang beruntung — pencarian akan menemukan cara itu, karena menemukan maksimum adalah satu-satunya hal yang ia dibangun untuk lakukan.

Ini adalah kegagalan yang sama yang disebut literatur AI-safety sebagai reward hacking: sebuah agent yang mengoptimalkan sebuah proxy untuk apa yang Anda inginkan akan mengeksploitasi setiap celah antara proxy dan tujuan sebenarnya. Pencarian Anda adalah agent itu. "Rasio Sharpe" adalah proxy itu. "Strategi yang bisa saya percaya untuk mentradingkan uang sungguhan kuartal depan" adalah tujuannya. Celah di antara keduanya adalah tempat seluruh disiplin ilmu ini hidup.

Untuk menyaksikan celah itu terbuka, kita membutuhkan sebuah dunia di mana kita tahu kebenarannya. Jadi kita membangun satu.

Pasarnya. Setiap periode, sebuah predictor sts_t (sinyal standard-normal) datang, diikuti oleh return rtr_t yang sebagian ia prediksi. Edge-nya nyata tetapi terbatas (bounded) — ia hanya ada di dalam pita sinyal moderat st1|s_t| \le 1, dan menghilang 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}).

Ada dua pilihan desain yang penting. Pertama, edge-nya hidup di pita moderat: sinyal ekstrem tidak membawa informasi prediktif, sehingga strategi seharusnya mentradingkan bagian tengah dan melewatkan ekor-ekornya. Kedua, noise εt\varepsilon_t bersifat fat-tailed (Student-tt dengan 4 derajat kebebasan, jenis ekor tebal yang sungguhan dimiliki return nyata) — tetapi bahan ini hadir untuk realisme, bukan mekanisme. Menggoda untuk mengatakan bahwa ekor tebal itulah yang memungkinkan jebakan ini, dan kami mengasumsikan persis itu sampai kami menjalankan kontrolnya: sebuah versi noise-Gaussian dari pasar ini (gaussian_control dalam hasil, 300 seed) mereproduksi jebakan itu pada dasarnya tidak berubah — objektif per-trade tetap berdegenerasi 55.7% dari waktu di bawah noise Gaussian versus 57.0% dengan ekor tebal, dan Sharpe out-of-sample-nya 0.71 versus 0.70. Jadi jebakan ini bukan soal ekor tebal. Ia adalah efek murni small-sample-plus-selection: ambil maksimum, dari ~20 threshold berseksposur rendah, dari sebuah Sharpe yang dihitung pada segelintir observasi, dan sudut yang beruntung akan selalu terlihat spektakuler. Distribusi noise apa pun melakukan ini; sebuah strategi yang berada di pasar hanya untuk beberapa bar bisa, semata-mata karena keberuntungan, melewati beberapa pergerakan yang menguntungkan dan mencetak angka in-sample yang tidak berarti apa pun. Kami mempertahankan ekor tebal karena return nyata memilikinya, bukan karena jebakan ini membutuhkannya.

Strateginya. Sebuah keluarga satu-parameter. Trading searah dengan sinyal kapan pun magnitudonya di bawah sebuah threshold θ\theta, jika tidak tetap flat:

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

θ\theta yang sangat kecil hanya mentradingkan sinyal-sinyal terkecil dan paling tidak istimewa — sebuah lotre rare-trade, hampir tidak pernah berada di pasar. θ\theta dekat tepi pita menangkap seluruh edge sejati dan tereksposur dengan baik. θ\theta yang sangat besar mentradingkan segalanya, termasuk bar-bar out-of-band yang tidak membawa edge dan hanya menambah noise.

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())

Karena kita yang membangun pasarnya, kita bisa menghitung kebenarannya secara langsung — performa rata-rata pada setiap threshold di seluruh 600 seed, out of sample. Optimum sejatinya berada di θ1.04\theta \approx 1.04: tepat di tepi pita sinyal, berada di pasar sekitar 70% dari waktu (turunan: sebuah sinyal standard-normal jatuh di dalam s1.04|s|\le 1.04 dengan probabilitas P(s1.04)=0.70P(|s|\le 1.04)=0.70), mencetak Sharpe tahunan out-of-sample sebesar 1.77. Itulah angka yang coba ditemukan setiap objektif. Simpan ini dalam pandangan: θ≈1.04, OOS Sharpe 1.77, sekitar 70% timeline berada di pasar. Apa pun yang dipilih sebuah objektif yang jauh dari ini adalah objektifnya yang gagal, bukan pasarnya yang sulit.

Babak 2 — Jebakannya: delapan trade beruntung, Sharpe sebesar 21, sebuah fatamorgana

Sebuah mesin slot membayar pada satu putaran beruntung, menunjukkan delapan tiket trade dan Sharpe per-trade in-sample yang menjulang sebesar 21 yang runtuh menjadi 0.13 out of sample, mendramatisasi pemenang lotre rare-trade yang dipilih oleh objektif naif

Sekarang lepaskan sebuah objektif naif pada satu tarikan konkret dari pasar ini — seed 6. Pengungkapan penuh tentang seed ini: ia bukan tarikan pertama atau tarikan acak. Kami memindai seed untuk mencari pemenang per-trade yang secara mencolok degenerat dan memilih yang ini, tepatnya agar mekanismenya mustahil terlewatkan. Hasil yang ditunjukkannya sangat tipikal — seperti yang akan dikonfirmasi Babak 3, objektif per-trade memilih lotre ber-eksposur di bawah 5% pada 56% dari semua seed — tetapi magnitudo seed 6 berada di ujung ekstrem distribusi itu. Bacalah ini sebagai instansi yang sangat mencolok dari sebuah kegagalan umum, bukan instansi median. Kami mengoptimalkan Sharpe per-trade: rasio Sharpe yang dihitung pada hanya bar-bar di mana strategi sungguh-sungguh berada dalam posisi. Ini adalah hal yang sangat wajar untuk dilaporkan. "Ketika ia trading, seberapa bagus trade-trade-nya?" Rasanya seperti mengisolasi skill dari idle. Yang terjadi justru sebaliknya.

Berikut strategi yang dinobatkan Sharpe per-trade pada seed 6:

  • Threshold θ=0.005\theta = 0.005 — ia hanya mentradingkan sinyal-sinyal paling kecil.
  • Eksposur pasar 0.4% — ia flat 99.6% dari waktu.
  • Delapan trade. Delapan. Selama 2000 bar.
  • Sharpe tahunan per-trade in-sample: 21.09.
  • Sharpe full-timeline in-sample: 0.82.
  • Sharpe full-timeline out-of-sample: 0.13.

Metrik per-trade membaca 21.09 — angka yang belum pernah dicetak strategi nyata mana pun, jenis angka yang bisa membuat sebuah fund diluncurkan. Dan itu sepenuhnya fatamorgana. Delapan trade itu kebetulan menangkap beberapa pergerakan yang menguntungkan; diukur hanya pada delapan bar itu, rasio mean terhadap standar deviasi menjadi astronomis. Tetapi pada seluruh timeline — di mana strategi flat 99.6% dari waktu — "edge" itu berkontribusi pada dasarnya nol: sebuah Sharpe full-timeline sebesar 0.82 in sample, runtuh menjadi 0.13 pada data segar. Pemenang yang dipilih objektif ini, untuk semua tujuan trading, adalah flat.

Dan itu bahkan bukan edge sejati pada threshold tersebut. Ingat kembali pasarnya: edge hidup di pita s1|s|\le 1, dan θ=0.005\theta = 0.005 berada tepat di pusat mati di mana sinyal paling lemah. Kurva out-of-sample sejati pada θ=0.005\theta = 0.005 adalah −0.01 — tak terbedakan dari nol (turunan dari kurva ground-truth). Pencarian ini tidak menemukan edge sejati yang kecil. Ia menemukan delapan tarikan noise yang beruntung dan melaporkannya sebagai Sharpe 21.

Inilah jebakannya dalam miniatur: Sharpe per-trade memberi imbalan pada strategi karena trading sejarang mungkin, karena semakin sedikit bar tempat Anda berdiri, semakin mudah bagi beberapa di antaranya untuk beruntung, dan metrik ini tidak pernah sekalipun bertanya "tapi apakah kamu sungguh-sungguh berada di pasar?" Magnitudo seed 6 dipilih secara selektif — kami mencari yang mencolok — tetapi jenisnya tidak. Di seluruh 600 seed, Sharpe per-trade memilih pemenang degenerat (yang nyaris tidak trading, atau kalah out of sample) pada 57% darinya, dan lotre ber-eksposur di bawah 5% khususnya pada 56%. Pilihan degenerat yang tipikal jauh lebih jinak daripada Sharpe 21 milik seed 6: dirata-ratakan di seluruh 600 seed, pemenang objektif per-trade memiliki Sharpe per-trade in-sample sebesar 4.58 dan eksposur rata-rata 0.286 — masih flat sebagian besar waktu, hanya bukan flat 99.6%. Seed 6 mendramatisasi mekanismenya; 56% itulah bagian yang seharusnya mengkhawatirkan Anda. Lebih dari separuh waktu, metrik sehari-hari ini menyerahkan kepada Anda sebuah tiket lotre dan menyebutnya strategi.

Babak 3 — Kebenaran statistik: enam objektif, 600 seed

Enam fungsi objektif sebagai kontestan pada sebuah leaderboard, Sharpe per-trade berpendar paling terang in sample tetapi dicap degenerat 57 persen sementara objektif-objektif yang sadar-eksposur tetap stabil out of sample, mengilustrasikan bahwa angka in-sample yang hebat tidak berarti seleksi yang baik

Satu seed tidak membuktikan apa pun; ia hanya mengilustrasikan. Untuk mengukur sebuah objektif kita harus bertanya apa yang dipilihnya rata-rata, di seluruh banyak pasar independen, dan menilai pilihan itu pada data yang tidak pernah dilihat pencarian. Jadi: 600 seed, masing-masing sebuah tarikan independen dari pasar; pada masing-masing, jalankan pencarian 80-threshold di bawah setiap objektif; catat eksposur, Sharpe in-sample dan out-of-sample dari apa pun yang dipilihnya, dan apakah pilihan itu degenerat.

Objektif Eksposur rata-rata Sharpe in-sample Sharpe out-of-sample Penurunan IS→OOS (abs.) Degenerat
PnL mentah 0.859 1.76 1.61 0.15 0.0%
Sharpe full-timeline 0.740 1.82 1.71 0.11 0.0%
Sharpe per-trade 0.286 1.00 0.70 0.30 57%
Exposure floor (emin=0.20e_{\min}=0.20) 0.740 1.82 1.71 0.11 0.0%
Shrinkage conf_k (k=40k=40) 0.523 1.54 1.31 0.23 20.7%
Robust (floor + conf_k) 0.675 1.78 1.70 0.08 0.2%

Kolom "Penurunan IS→OOS" adalah penurunan absolut dalam Sharpe tahunan dari in-sample ke out-of-sample (mis. 1.000.701.00\to0.70 adalah penurunan sebesar 0.30), bukan persentase. Dan perhatikan baris "Exposure floor" identik byte-demi-byte dengan "Sharpe full-timeline": itu bukan kebetulan, dan Babak 5 menjelaskan alasannya.

Tiga fakta mencuat, dan masing-masing adalah sebuah pelajaran.

Sharpe per-trade adalah satu-satunya objektif naif yang berdegenerasi. Eksposur rata-ratanya 0.286 — ia memilih strategi yang flat sebagian besar waktu — dan Sharpe in-sample-nya sebesar 1.00 turun 0.30 menjadi out-of-sample 0.70, yang terburuk dari seluruh lapangan. Perhatikan tandanya: angka in-sample-nya (1.00) bahkan tidak mengesankan, namun pada satu seed mana pun ia dengan senang hati akan melaporkan angka per-trade sebesar 21. Rata-ratanya luntur karena jendela-jendela keberuntungan menunjuk ke arah acak; yang bertahan sampai out-of-sample hanya 0.70, dan 57% dari pilihan individualnya benar-benar sampah.

Objektif yang sadar-eksposur secara alami aman. PnL mentah dan Sharpe full-timeline tidak pernah berdegenerasi (0.0%). Alasannya struktural: keduanya diukur di atas seluruh timeline, sehingga strategi yang flat 99.6% dari waktu memperoleh hampir nol di bawah keduanya. Anda tidak bisa menge-game sebuah metrik full-timeline dengan trading jarang-jarang — duduk flat dihukum secara langsung dan otomatis, karena bar-bar flat berada di penyebut (denominator). Ini adalah gagasan tunggal paling penting dalam artikel ini, dan kita akan kembali kepadanya di Babak 6.

PnL mentah aman tetapi tidak optimal — ia over-eksposur. Perhatikan baik-baik: eksposur rata-rata PnL mentah adalah 0.859, yang tertinggi dari semuanya, dan Sharpe out-of-sample-nya (1.61) sedikit di bawah Sharpe full-timeline (1.71) dan optimum sejati (1.77). PnL memberi imbalan pada berada di pasar, sehingga pencarian mendorong θ\theta terlalu tinggi (pada seed 6, PnL mentah memilih θ=1.84\theta=1.84 dibanding optimal 1.04), menyeret masuk bar-bar out-of-band yang tidak membawa edge dan hanya menambah noise. Ia tidak meledak — tetapi ia melenceng melewati optimum sejati ke arah yang berlawanan dari jebakan per-trade. Objektif berbeda, bias berbeda, pelajaran yang sama: metriklah yang memilih strategi.

Dua baris yang belum kita bahas — exposure floor dan conf_k — adalah perbaikannya. Itulah babak berikutnya.

Babak 4 — Mengapa delapan trade tidak akan pernah bisa dipercaya

Sebuah estimasi titik Sharpe tunggal ditandai dengan error bar confidence-interval yang sangat besar karena hanya bertumpu pada delapan observasi, di samping sebuah penggaris berlabel minimum track record length, mengilustrasikan bahwa sebuah rasio yang diukur pada segelintir trade tidak berarti apa pun secara statistik

Sebelum memperbaiki jebakan ini, ada baiknya kita presisi tentang mengapa delapan trade menghasilkan Sharpe sebesar 21 yang tidak berarti apa-apa — karena perbaikannya mengikuti langsung dari alasannya.

Sebuah rasio Sharpe adalah sebuah estimasi, dan estimasi memiliki error bar. Hasil Andrew Lo tahun 2002 memberikan standard error dari sebuah rasio Sharpe yang diestimasi dari TT observasi, di bawah asumsi paling murah hati yang mungkin (return IID Gaussian):

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

Error-nya menciut hanya sebesar 1/T1/\sqrt{T}. Umpankan jebakannya. Sharpe per-trade pada seed 6 adalah 21.0921.09 tahunan, yaitu 1.331.33 per observasi, dihitung pada T=8T = 8 bar. Standard error-nya 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}

(turunan dari formula Lo). Estimasi titiknya adalah 21.0921.09; error bar satu-sigma-nya berorde ±7.7\pm 7.7 — bacalah ini sebagai order-of-magnitude ilustratif, bukan confidence interval yang terkalibrasi, karena formulanya mengasumsikan return IID Gaussian yang dilanggar oleh noise fat-tailed t4t_4 kita. Meski begitu, pesannya tidak bisa disalahartikan: "Sharpe 21" itu adalah angka yang ditarik dari distribusi yang begitu lebar sehingga pada dasarnya tidak membawa informasi — dan itu adalah perhitungan yang murah hati, karena perluasan Mertens menunjukkan bahwa ekor tebal dan skew hanya menginflasi standard error lebih jauh lagi. Sharpe dari sebuah backtest rare-trade kurang bisa dipercaya daripada nilai titiknya dalam setiap arah sekaligus: observasi terlalu sedikit, dan distribusi yang salah.

Inilah tepatnya yang diformalkan oleh Minimum Track Record Length (Bailey & López de Prado, 2012). Ia membalik pertanyaannya — berapa banyak observasi yang saya butuhkan sebelum saya diizinkan mempercayai Sharpe sebesar ini pada confidence 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},

mengubah "percayai lebih sedikit backtest ber-trade-sedikit" menjadi jumlah trade yang eksplisit dan bisa diperiksa. Poin mendalam untuk desain objektif adalah ini: objektif yang baik seharusnya menegakkan minimum track record dari dalam, alih-alih membiarkan seorang manusia menyadari, setelah faktanya, bahwa pemenang bertumpu pada delapan observasi. Sharpe per-trade melakukan yang sebaliknya — ia dimaksimalkan dengan mendorong jumlah observasi menuju minimum. Objektif mana pun yang optimumnya berada pada "trade sesedikit mungkin" adalah, menurut konstruksinya, sebuah objektif yang mencari estimasinya sendiri yang paling tidak bisa diandalkan.

Dua kegagalan bertumpuk dalam jebakan ini, dan menamai keduanya memberi tahu kita cara memperbaikinya. Pertama, noise small-sample: delapan observasi tidak bisa memastikan rasio apa pun. Kedua, seleksi: delapan bar itu tidak diserahkan begitu saja kepada kita — pencarian yang memilih threshold yang mendarat di atasnya, sebagian karena mereka beruntung. Pencarian adalah sebuah maximizer; ia akan selalu menemukan sudut ruang di mana noise kebetulan terlihat seperti sinyal. Anda tidak bisa mengakali ini dengan estimasi titik yang lebih baik. Anda harus mengubah apa arti "terbaik" sehingga sudut yang beruntung itu bukan lagi maksimum.

Babak 5 — Perbaikannya: sebuah exposure floor dan sebuah shrinkage jumlah-trade

Sebuah panel kendali dengan dua knob berlabel exposure floor dan shrinkage conf_k, keduanya mengangkat sebuah permukaan performa out-of-sample naik ke sebuah plateau datar yang tinggi sementara indikator degenerasi padam, mengilustrasikan dua perbaikan independen yang bersama-sama memulihkan optimum sejati

Kita punya dua penyakit yang telah dinamai — trading terlalu jarang dan bertumpu pada observasi yang terlalu sedikit — jadi kita menulis dua obat, masing-masing menyasar salah satunya.

Obat 1: sebuah exposure floor. Perbaikan paling sederhana yang mungkin. Tolak langsung strategi mana pun yang tidak berada di pasar setidaknya emine_{\min} dari waktu — jika Anda nyaris tidak trading, skor Anda adalah -\infty dan pencarian tidak bisa memilih Anda. Tetapi ada kehalusan jujur pada apa yang Anda floor, dan itulah pelajaran diam-diam dari seluruh artikel ini. Sebagai objektif berdiri sendiri kami mem-floor Sharpe full-timeline, dan pada pasar ini itu sama sekali tidak mengubah apa pun: pemenang Sharpe full-timeline sendiri sudah berada pada eksposur ~74%, sehingga floor 20% tidak pernah sekali pun aktif. Itulah tepatnya mengapa baris "exposure floor" dan "Sharpe full-timeline" pada tabel-tabel di atas identik byte-demi-byte — pasang sebuah floor pada metrik yang sudah aman dan Anda hanya menurunkan ulang Sharpe penuh. Floor hanya melakukan pekerjaan yang terlihat ketika ia menjaga sebuah metrik yang akan berlari kencang ke sudut jika tidak: metrik per-trade, seperti pada objektif robust di bawah. Dengan kata lain, "mensyaratkan eksposur" dan "mengukur pada seluruh timeline" adalah, pada data ini, dua nama untuk satu intervensi yang sama.

Obat 2: sebuah shrinkage jumlah-trade — "conf_k". Untuk saat Anda terjebak dengan metrik per-trade dan menginginkan koreksi lunak alih-alih pemotongan keras: diskon Sharpe secara kontinu berdasarkan berapa banyak trade yang menjadi tumpuannya. Kalikan dengan n/(n+k)n/(n+k), di mana nn adalah jumlah trade dan kk adalah "konstanta confidence" tetap — sebuah kekuatan prior setara-trade yang dipilih sebelum pencarian:

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

Ketika n0n \to 0 skornya dihancurkan menuju nol berapa pun besarnya Sharpe mentah; ketika nn \to \infty skornya konvergen menuju Sharpe mentah. Ini adalah logika korektif yang sama dengan MinTRL dan standard error dari Babak 4 — menciutkan sebuah estimasi small-sample menuju nol sebagai fungsi menurun dari ukuran sampelnya — dilipat langsung ke dalam objektif alih-alih diterapkan sebagai filter post-hoc. Preseden bernama yang paling dekat adalah System Quality Number milik van Tharp (SQN=Ntrade/σtrade\text{SQN} = \sqrt{N}\cdot \overline{\text{trade}}/\sigma_{\text{trade}}), yang serupa membuat metrik kualitas per-trade berskala dengan jumlah trade NN — meskipun bentuk fungsionalnya berbeda (N\sqrt{N} tumbuh tanpa batas, sedangkan n/(n+k)n/(n+k) jenuh pada 1). Dalam bentuknya milik kita adalah sebuah shrinkage bergaya Bayesian precision-weighted / empirical-Bayes; ini adalah konstruksi kami sendiri untuk masalah ini, bukan estimator bernama yang diangkat dari 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 bagian yang jujur: berapa banyak floor, berapa banyak shrinkage? Sapukan keduanya dan baca seluruh permukaannya. Setiap sel adalah Sharpe out-of-sample rata-rata di seluruh 200 seed (subset sepertiga dari 600, agar sweep dua-dimensi ini tetap murah) dengan tingkat degenerasi di sampingnya:

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 out-of-sample rata-rata, dengan tingkat degenerasi dalam tanda kurung. Sel kiri-atas (0,0)(0,0) adalah Sharpe per-trade mentah — tanpa floor, tanpa shrinkage: OOS 0.66, degenerat 59.5%. Itu adalah objektif yang sama dengan baris per-trade Babak 3, yang membaca 0.70 / 57%; selisih kecilnya murni soal kumpulan seed — sweep ini menggunakan 200 seed, Monte Carlo menggunakan seluruh 600. Metrik yang sama, sampel yang lebih kecil.

Permukaan ini menceritakan kisah yang bersih dalam tiga pembacaan.

Setiap obat bekerja sendiri-sendiri. Bergerak ke kanan sepanjang baris atas (tambah shrinkage, tanpa floor): OOS naik 0.661.261.470.66 \to 1.26 \to 1.47 dan degenerasi turun 59.5%22.5%11.5%59.5\% \to 22.5\% \to 11.5\%. Bergerak ke bawah kolom kiri (tambah floor, tanpa shrinkage): OOS naik 0.661.431.641.710.66 \to 1.43 \to 1.64 \to 1.71 dan degenerasi turun 59.5%10%1.5%0%59.5\% \to 10\% \to 1.5\% \to 0\%. Salah satu knob pun, diputar sendirian, secara independen mengangkat performa out-of-sample dan membunuh degenerasi. Exposure floor adalah tuas tunggal yang lebih kuat di sini, karena ia menyerang ciri khas jebakan ini — eksposur mendekati nol — secara langsung.

Bersama-sama keduanya mencapai plateau — dan plateau itu hanyalah Sharpe full-timeline. Pada emin=0.20e_{\min} = 0.20 barisnya datar pada OOS 1.71 dengan degenerasi 0% di seluruh level shrinkage; dorong ke emin=0.35e_{\min}=0.35 dan ia merayap ke 1.73. Tetapi perhatikan baik-baik apa sebenarnya 1.71 itu: itu adalah skor persis yang dicetak Sharpe full-timeline polos di Babak 3 tanpa floor dan tanpa shrinkage sama sekali. Di titik terbaiknya, perombakan-perombakan ini tidak mengalahkan Sharpe full-timeline — mereka merekonstruksinya. Dan objektif robust yang sepenuhnya diperbaiki bahkan tidak sampai ke sana: di seluruh 600 seed ia mendarat pada OOS 1.70 dengan degenerasi residual 0.17%, sedikit di bawah 1.71 / 0% milik Sharpe penuh — ia secara lemah didominasi oleh metrik yang lebih sederhana. Sebuah setting tengah yang sederhana, emin=0.10e_{\min}=0.10 dengan k=40k=40, mencapai OOS 1.65 pada degenerasi 1% — berguna jika sebuah metrik per-trade dipaksakan kepada Anda, tetapi tidak pernah menjadi alasan untuk memilihnya.

Angka-angka persisnya scale-dependent — bentuknya adalah hasilnya. Nilai-nilai spesifik emin=0.20e_{\min}=0.20, k=40k=40 yang sepenuhnya memperbaiki pasar ini disetel untuk data-generating process ini; pada pasar berbeda dengan frekuensi trade dan ketebalan ekor yang berbeda, plateau-nya berada di tempat lain. Yang bergeneralisasi bukanlah koordinatnya melainkan permukaannya: pengangkatan monoton di kedua arah, degenerasi didorong menuju nol, sebuah plateau pada kebenaran. Anda menemukan koordinat Anda sendiri dengan melakukan sweep, persis seperti di atas.

Gabungkan kedua obat itu — objektif robust, floor 0.20 ditambah conf_k 40 — dan kembali ke seed 6. Jebakan itu menobatkan θ=0.005\theta = 0.005, delapan trade, Sharpe OOS full-timeline sebesar 0.13. Objektif robust sebaliknya memilih θ=0.979\theta = 0.979: eksposur pasar 0.66, 447 trade, Sharpe tahunan out-of-sample 1.77. θ=0.979\theta = 0.979 itu satu grid point di bawah optimum sejati θ=1.04\theta = 1.04, sehingga ia memulihkan threshold yang mendekati-optimal dan tereksposur baik alih-alih mendarat tepat di titik pusat — Sharpe out-of-sample seed tunggalnya (1.77) kebetulan bertepatan dengan optimum populasi. Data yang sama, pencarian yang sama, 80 threshold kandidat yang sama. Hanya definisi "terbaik" yang berubah, dan itu memindahkan pemenang dari fatamorgana delapan-trade yang flat menjadi edge sejati yang tereksposur baik — yang, secara mengungkap, adalah persis threshold yang sama yang dipilih Sharpe full-timeline polos pada seed ini.

Satu peringatan yang dibuat eksplisit oleh sweep ini: conf_k saja tidak cukup pada pasar ini. Pada k=40k=40 tanpa floor, degenerasi masih 22.5% di seluruh seed — dan khususnya pada seed 6, conf_k saja memilih θ=0.015\theta = 0.015, 35 trade, Sharpe out-of-sample sebesar −0.06. Tiga puluh lima trade bertahan dari shrinkage sebesar 35/(35+40)0.4735/(35+40) \approx 0.47 dengan skor yang cukup tersisa untuk menang. Exposure floor-lah yang menutup celah terakhir itu, karena ia menyasar ciri sejati jebakan ini — flat — secara langsung, alih-alih mempercayai jumlah trade sebagai proxy untuknya.

Babak 6 — Pelajaran yang lebih dalam: ukur pada seluruh timeline

Dua cara menilai strategi yang sama dikontraskan: sebuah spotlight sempit yang hanya menerangi beberapa bar yang ditradingkan strategi versus sebuah floodlight yang mengukur seluruh timeline termasuk bentangan-bentangan flat, mengilustrasikan bahwa objektif yang sadar-eksposur tidak bisa dikelabui oleh trade-trade beruntung yang jarang

Mundur selangkah dari perbaikan ini dan perhatikan apa yang sebenarnya memisahkan objektif-objektif yang aman dari jebakan itu. Bukan kecanggihan. PnL mentah dan Sharpe full-timeline lebih sederhana daripada Sharpe per-trade, dan mereka tidak pernah berdegenerasi — 0% di seluruh 600 seed — tanpa floor, tanpa shrinkage, tanpa tuning sama sekali.

Garis pemisahnya adalah satu properti tunggal: jendela apa yang diukur metrik ini? Sharpe per-trade hanya mengukur bar-bar yang dipilih strategi untuk berdiri di atasnya — sebuah jendela self-selected yang bisa diciutkan pencarian sesukanya. Sharpe full-timeline dan total PnL mengukur seluruh timeline, termasuk bar-bar flat. Dan Anda tidak bisa membuat metrik full-timeline menjadi besar dengan trading jarang-jarang, karena setiap jam Anda duduk flat adalah satu jam di penyebut yang tidak menghasilkan apa-apa. Exposure floor dan conf_k, pada akhirnya, hanyalah cara merombak metrik per-trade dengan kesadaran-eksposur yang sudah dimiliki metrik full-timeline secara gratis — dan sweep tadi sudah memberi tahu kita plafon dari perombakan itu: di titik terbaiknya ia hanya menyamai Sharpe full-timeline (OOS 1.70 vs 1.71), tidak pernah mengalahkannya. Jika Anda bebas memilih jendelanya, pilih seluruh timeline dan lewati perombakan itu sepenuhnya.

Jadi prinsip desainnya, dinyatakan secara terus terang:

Desainlah objektif sehingga ia tidak bisa dikelabui oleh trade-trade beruntung yang jarang. Anda memiliki tiga alat, kira-kira dalam urutan preferensi:

  1. Ukur pada seluruh timeline. Default yang hampir tidak pernah boleh ditinggalkan. Sharpe full-timeline dan total return bersifat sadar-eksposur menurut konstruksinya — idle secara otomatis dihukum karena bar-bar flat ikut dihitung. Jika Anda mendapati diri melaporkan sebuah metrik yang dihitung pada "hanya bar-bar di mana kami aktif," berhentilah dan tanyakan apa yang akan dilakukan pencarian dengan kebebasan memilih bar-bar itu.
  2. Syaratkan eksposur. Jika Anda harus menggunakan metrik activity-conditional, floor eksposurnya sehingga pencarian tidak bisa memilih strategi yang nyaris tidak trading. Ini adalah tuas tunggal terkuat melawan jebakan spesifik ini.
  3. Ciutkan berdasarkan jumlah trade. Diskon rasio apa pun sebesar n/(n+k)n/(n+k) sehingga sebuah Sharpe yang bertumpu pada segelintir observasi memperoleh sebagian kecil kredit dari yang bertumpu pada ribuan. Ini adalah penegakan Minimum Track Record Length pada level objektif: angka dari sedikit observasi tidak bisa diandalkan (Babak 4), jadi objektif yang jujur memasukkan ketidak-andalan itu ke dalam harga alih-alih mempercayai seorang manusia untuk menangkapnya nanti.

Tidak satu pun dari ini membuat pencarian menjadi lebih cerdas. Ini membuat targetnya jujur, sehingga ketika pencarian melakukan persis apa yang selalu ia lakukan — menemukan maksimum — maksimum itu adalah strategi yang sungguh-sungguh Anda inginkan.

Catatan kejujuran

Tiga caveat, dinyatakan secara terus terang, karena sebuah studi terkontrol mendapatkan kesimpulannya hanya dengan menyebutkan batas-batasnya.

  • Pasarnya sintetis, dan sengaja demikian. Sebuah sinyal standard-normal, edge linear yang dibatasi pada s1|s|\le 1, noise Student-tt(44) fat-tailed — dipilih untuk ground truth terkontrol, bukan untuk realisme pasar. Kita hanya bisa membuktikan bahwa sebuah objektif memilih strategi yang salah dengan menjalankannya pada data di mana kita tahu strategi mana yang benar. Pasar nyata bersifat non-stasioner, terautokorelasi, dan berganti-ganti rezim. Ekor tebal adalah bahan realistis yang kami pertahankan, tetapi — bertentangan dengan dugaan pertama yang wajar, dan bertentangan dengan draft awal artikel ini sendiri — bukan itulah yang menggerakkan jebakan ini: sebuah kontrol noise-Gaussian (300 seed) berdegenerasi 55.7% dari waktu versus 57.0% di sini, dengan Sharpe out-of-sample 0.71 versus 0.70. Jebakan ini adalah artefak small-sample-plus-selection yang bertahan dengan atau tanpa ekor tebal. Hasil akhirnya (deliverable) adalah diagnosis dan pola perbaikannya, bukan sebuah strategi dan bukan sebuah konstanta universal.
  • Nilai-nilai perbaikannya scale-dependent. Floor spesifik emin=0.20e_{\min}=0.20 dan shrinkage k=40k=40 yang sepenuhnya menutup jebakan ini disetel untuk data-generating process ini — frekuensi trade-nya, ketebalan ekornya, ukuran edge-nya. Pada data lain plateau-nya bergeser. Yang berpindah (transfer) adalah bentuk dari permukaan sweep (pengangkatan monoton di kedua knob, degenerasi menuju nol, sebuah plateau pada kebenaran) dan metode untuk menemukan koordinat Anda sendiri: sapukan keduanya dan baca permukaannya, jangan menyalin angka-angkanya.
  • conf_k adalah konstruksi kami sendiri, bukan estimator bernama. Shrinkage jumlah-trade SR^n/(n+k)\widehat{SR}\cdot n/(n+k) adalah sebuah perangkat bergaya Bayesian precision-weighted / empirical-Bayes yang kami bangun untuk masalah ini; rasionalnya berakar pada hasil standard-error Lo/Mertens yang terverifikasi dan MinTRL Bailey–López de Prado, dan kerabat bernama terdekatnya adalah System Quality Number milik van Tharp (Ntrade/σtrade\sqrt{N}\cdot \overline{\text{trade}}/\sigma_{\text{trade}}, bentuk fungsional yang berbeda), tetapi kami tidak mengklaim n/(n+k)n/(n+k) itu sendiri muncul dengan sebuah nama dalam literatur. Obat-obat pendampingnya — exposure floor, pengukuran full-timeline — adalah praktik standar yang dinyatakan secara presisi. Dan perhatikan objektif mana yang sudah aman di sini: PnL mentah dan Sharpe full-timeline tidak pernah membutuhkan perbaikan, karena mereka sudah sadar-eksposur sejak awal — sedemikian rupa sehingga mem-floor Sharpe full-timeline hanya mereduksi menjadi Sharpe full-timeline itu sendiri, pemenangnya sudah melewati floor masuk akal mana pun. Jebakannya secara spesifik adalah Sharpe per-trade / aktif — dan bahkan objektif per-trade yang sepenuhnya diperbaiki hanya menyamai Sharpe full-timeline (OOS 1.70 vs 1.71), tidak pernah mengalahkannya. Pelajaran utamanya bukan perbaikannya; melainkan mengukur pada seluruh timeline sejak awal.

Poin-Poin Kunci

  1. Objektifnya adalah keputusannya, bukan formalitas. Sebuah pencarian tidak menemukan "strategi yang bagus" — ia menemukan maximizer dari skalar apa pun yang Anda serahkan kepadanya, dan skalar yang berbeda memilih strategi yang sangat berbeda pada data yang identik. Memilih objektif adalah memilih strategi; segala sesuatu setelahnya hanyalah pembukuan. Itulah hukum Goodhart: begitu metrik Anda menjadi target pencarian, pencarian akan mengeksploitasi setiap celah antara metrik itu dan apa yang Anda maksudkan.
  2. Sharpe per-trade adalah sebuah jebakan. Diukur hanya pada bar-bar yang ditradingkan sebuah strategi, ia dimaksimalkan dengan trading sejarang mungkin — semakin sedikit observasi, semakin mudah beberapa pergerakan beruntung menginflasi rasionya (sebuah kontrol Gaussian mengonfirmasi ekor tebal tidak diperlukan; ini adalah efek small-sample-plus-selection). Di seluruh 600 seed ia memilih lotre ber-eksposur di bawah 5% pada 56% darinya dan berdegenerasi pada 57%; pilihan degenerat yang tipikal rata-rata memiliki Sharpe per-trade in-sample sebesar 4.58. Pada satu seed yang sengaja dipilih karena mencolok, ia menobatkan strategi delapan-trade ber-eksposur 0.4% dengan Sharpe per-trade in-sample sebesar 21.09 yang runtuh menjadi Sharpe out-of-sample full-timeline sebesar 0.13. Sebuah rasio yang dibangun dari delapan observasi memiliki standard error berorde ±7.7 tahunan (Babak 4) — itu tidak pernah menjadi informasi.
  3. Objektif yang sadar-eksposur secara alami aman. PnL mentah dan Sharpe full-timeline tidak pernah berdegenerasi (0%), karena mereka mengukur seluruh timeline dan idle secara otomatis dihukum. Anda tidak bisa menge-game metrik full-timeline dengan trading jarang-jarang. Satu-satunya cacat PnL mentah adalah bias yang berlawanan — ia over-eksposur (eksposur rata-rata 0.859, OOS 1.61 dibanding 1.77 yang sejati), menyeret θ\theta melewati optimum agar lebih banyak berada di pasar.
  4. Perbaikannya berhasil — tetapi hanya membawa Anda kembali ke Sharpe full-timeline. Sebuah exposure floor dan sebuah shrinkage jumlah-trade (conf_k) masing-masing secara independen mengangkat Sharpe out-of-sample dan mendorong degenerasi menuju nol; bersama-sama mereka mencapai sebuah plateau. Tetapi plateau itu adalah Sharpe full-timeline: degenerasi turun dari 59.5% pada (emin,k)=(0,0)(e_{\min},k)=(0,0) menjadi 0% pada emin=0.20e_{\min}=0.20 dan Sharpe OOS naik dari 0.66 menjadi 1.71 — angka persis yang dicetak Sharpe penuh polos tanpa bantuan, dan objektif robust yang sepenuhnya diperbaiki sebenarnya mendarat sedikit di bawahnya (OOS 1.70, degenerasi 0.17%: didominasi secara lemah). Pada seed 6 objektif robust memulihkan threshold yang mendekati-optimal dan tereksposur baik (θ=0.979\theta = 0.979, satu grid point di bawah 1.041.04 yang sejati; 447 trade; Sharpe OOS 1.77). Perlakukan conf_k sebagai fallback untuk saat sebuah metrik per-trade dipaksakan kepada Anda, bukan sebagai upgrade dibanding mengukur seluruh timeline. Koordinat persisnya scale-dependent; bentuk permukaannya adalah hasil yang bisa dipindahkan (transferable).
  5. Desainlah objektif sehingga ia tidak bisa dikelabui oleh trade-trade beruntung yang jarang. Dalam urutan preferensi: ukur pada seluruh timeline (default), syaratkan eksposur (tuas tunggal terkuat), ciutkan berdasarkan jumlah trade (Minimum Track Record Length pada level objektif). Tidak satu pun dari ini membuat pencarian lebih cerdas — mereka membuat targetnya jujur, sehingga maksimum yang pasti ditemukan pencarian adalah strategi yang sungguh-sungguh akan Anda tradingkan.

Sebuah parameter search adalah jin yang patuh. Ia mengabulkan persis permohonan yang Anda ucapkan, bukan yang Anda maksudkan — dan "maksimalkan metrik ini" adalah permohonannya. Ucapkan sebagai Sharpe per-trade dan ia akan menyulap delapan trade beruntung dan menyebutnya sebuah keberuntungan besar. Ucapkan sedemikian rupa sehingga duduk flat dihukum dan segelintir trade hanya memperoleh segelintir kredit, dan jin yang sama, pada data yang sama, menyerahkan kepada Anda edge sejati. Strategi yang Anda deploy dipilih pada saat Anda mengetikkan objektifnya. Pilihlah dengan sengaja.

Eksperimen lengkapnya — pasar sintetis, enam objektif, Monte Carlo 600-seed, dan permukaan repair-sweep, setiap angka dapat dibangkitkan ulang dari satu skrip deterministik — ada di paper pendamping di objective-design.marketmaker.cc, dengan kode dan data di github.com/suenot/objective-design-degeneracy.

Ini adalah satu front dalam perang yang sama yang diperjuangkan studi-studi kami yang lain dari sudut berbeda. Deflated Sharpe Ratio memberi harga pada pemenang sebuah pencarian setelah multiple testing — di mana artikel ini bertanya apakah objektifnya memilih strategi yang benar sama sekali, DSR bertanya apakah strategi yang dipilihnya mengalahkan apa yang dihasilkan keberuntungan semata. Studi probability of backtest overfitting yang akan datang menyerang selection bias yang sama dari sisi resampling, menilai prosedurnya alih-alih pemenangnya. Dan taksonomi look-ahead bias mengkatalogkan pabrikan besar lain dari Sharpe palsu — sebuah kebocoran dari masa depan — yang menghasilkan gejala yang identik (sebuah backtest gemilang yang mati saat live) melalui mekanisme yang sepenuhnya berbeda. Desain objektif, deflasi, probabilitas overfitting, look-ahead: empat nama untuk satu disiplin ilmu — tidak tertipu oleh backtest Anda sendiri.

Penafian: Informasi yang disediakan dalam artikel ini hanya untuk tujuan edukasi dan informasi serta tidak merupakan nasihat keuangan, investasi, atau trading. Trading mata uang kripto mengandung risiko kerugian yang signifikan.

Penulis

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

Selangkah Lebih Maju dari Pasar

Berlangganan newsletter kami untuk wawasan AI trading eksklusif, analisis pasar, dan pembaruan platform.

Kami menghormati privasi Anda. Berhenti berlangganan kapan saja.