← Kembali ke artikel
July 5, 2026
Bacaan 5 minit

Pintu Gerbang Fideliti: Backtesting Kasar-ke-Halus Menipu Anda Lebih Pantas Melainkan Proksi Murah Menyusun Kedudukan Sama Seperti yang Mahal

Pintu Gerbang Fideliti: Backtesting Kasar-ke-Halus Menipu Anda Lebih Pantas Melainkan Proksi Murah Menyusun Kedudukan Sama Seperti yang Mahal
#dagangan algo
#backtest
#multi-fideliti
#hyperband
#ASHA
#successive halving
#overfitting
#pengesahan
Part 6 of 10 · Collection
High-Performance Backtest Engines

Sebahagian daripada siri "Backtest Tanpa Ilusi".

Setiap carian parameter yang serius menghadapi halangan yang sama: ruang carian amat besar, dan setiap penilaian yang jujur adalah mahal. Strategi multi-timeframe dengan selusin ambang dan tiga tempoh penunjuk, dinilai merentasi pembahagian walk-forward berbilang-fold, boleh memakan masa saat bagi setiap konfigurasi. Sepuluh ribu konfigurasi bermakna berjam-jam. Jadi anda mencari jalan pintas, dan jalan pintas itu sentiasa idea yang sama: nilai secara murah, naikkan taraf hanya konfigurasi yang terselamat kepada ujian yang mahal. Saring sepuluh ribu konfigurasi pada satu fold, kekalkan beberapa ratus teratas, jalankan konfigurasi itu pada semua fold. Saring pada lilin sejam, drill down ke 1 saat hanya untuk para finalis.

Inilah carian kasar-ke-halus — drill-down, multi-fideliti, successive halving, Hyperband, ASHA — dan ia adalah salah satu idea yang benar-benar baik dalam pengoptimuman. Ia boleh mengubah sehari pengkomputan menjadi sejam. Kami menggunakannya. Tetapi ia menyembunyikan satu perangkap yang begitu senyap sehingga kebanyakan orang yang menggunakannya tidak pernah memeriksanya, dan perangkap itu ialah: keseluruhan kaedah ini mengandaikan proksi murah anda menyusun kedudukan konfigurasi dengan cara yang sama seperti penilaian mahal. Jika tidak, anda bukan mencari dengan lebih pantas. Anda sedang membuang pemenang masa depan anda pada pintu gerbang pertama dan menaikkan taraf hingar — anda cuma menipu diri sendiri dengan lebih pantas.

Artikel ini membincangkan satu ukuran yang memberitahu anda sama ada drill-down anda itu benar atau sekadar ilusi. Kami menjalankannya pada carian multi-timeframe kami sendiri, dan jawapannya agak tidak selesa: pada fideliti paling murah, proksi kami menyusun kedudukan konfigurasi hampir secara rawak (Spearman ρ ≈ 0.03). Jika kami memangkas secara agresif pada fideliti itu — sebagaimana yang digalakkan oleh tetapan lalai ASHA yang sedia ada — kami tentu telah membuang pemenang sebenar pada pusingan pertama. Penyelesaiannya ialah satu pintu gerbang wajib yang dijalankan sebelum carian: ukur korelasi kedudukan, dan enggan memangkas di bawah fideliti di mana korelasi itu boleh dipercayai.

Apa sebenarnya carian multi-fideliti itu

Lata carian kasar-ke-halus: ribuan konfigurasi fideliti-rendah yang murah disaring secara meluas di sebelah kiri, hanya konfigurasi terselamat teratas dinaikkan taraf ke kanan melalui penilaian penuh yang semakin mahal — successive halving mengecilkan medan zamrud luas berisi calon kepada beberapa finalis yang cerah

Keluarga kaedah ini mempunyai satu bentuk. Anda mentakrifkan satu fideliti (juga dipanggil sumber atau bajet): satu dail dari murah kepada mahal yang, pada maksimumnya, memberikan objektif sebenar. Kemudian anda menjalankan konfigurasi pada fideliti rendah, menyusun kedudukannya, mengekalkan pecahan terbaik, dan menjalankan semula hanya konfigurasi yang terselamat itu pada fideliti lebih tinggi — berulang sehingga sebilangan kecil finalis telah dinilai pada fideliti penuh.

Successive halving (Jamieson & Talwalkar, 2016) adalah teras kaedah ini: mulakan N konfigurasi pada sumber minimum, kekalkan 1/η teratas, gandakan sumber dengan η, ulang. Hyperband (Li et al., 2018) membalut successive halving dalam gelung luar yang melindungi merentasi pelbagai sumber permulaan yang berbeza, supaya anda tidak perlu meneka betapa agresifnya pemangkasan yang perlu dilakukan. ASHA (Li et al., 2020) ialah versi tak segerak (asynchronous) yang mesra-selari. Kadar penyingkiran η ialah satu-satunya butang yang mereka kongsi; lalai kanonik ialah η = 3 — kekalkan satu pertiga teratas pada setiap tahap, gandakan tiga bajet.

Fideliti itu sendiri boleh menjadi hampir apa sahaja dari murah kepada mahal yang menumpu kepada kebenaran:

  • Bilangan fold walk-forward. Nilai pada 1 fold, kemudian 2, kemudian 3, sehingga K. Inilah fideliti yang kami kaji di bawah, kerana ia adalah yang paling semula jadi bagi satu backtest dengan pembahagian out-of-sample yang bergolek.
  • Resolusi lilin. Saring pada bar 1 jam, naikkan taraf ke 1 minit, drill down ke 1 saat atau dagangan mentah hanya untuk finalis. Ini adalah idea drill-down adaptif yang diterapkan pada carian dan bukannya pada simulasi pengisian (fill simulation).
  • Panjang sejarah, epoch, subsampel dataset — fideliti ML klasik.

Dalam satu backtest, fold dan resolusi adalah dua perkara yang penting, dan — inilah inti keseluruhan artikel ini — kedua-duanya tidak sama selamat. Salah satu daripadanya mempunyai bias yang secara senyap memilih parameter yang salah tidak kira betapa teliti anda mengawalnya melalui pintu gerbang.

Satu andaian yang menjadi asas kepada semuanya

Keruntuhan senyap drill-down: kedudukan fideliti-rendah yang murah tidak sepadan dengan kedudukan penuh yang mahal, jadi pemenang zamrud yang sebenar dipangkas pada pintu gerbang pertama sementara hingar merah-jingga dinaikkan taraf ke atas — dan tiada sebarang ralat pernah dilemparkan

Mari kita tuliskan apa yang sebenarnya diperlukan oleh successive halving untuk menjadi betul. Ia tidak memerlukan fideliti murah memberikan nilai objektif yang betul — tiada siapa yang peduli jika satu fold melaporkan Sharpe yang berbeza daripada enam fold. Ia memerlukan sesuatu yang lebih lemah tetapi jauh lebih khusus: fideliti murah itu mesti menyusun kedudukan konfigurasi dengan cara yang sama seperti yang mahal. Jika konfigurasi A mengatasi konfigurasi B pada fideliti penuh, A sepatutnya cenderung mengatasi B pada fideliti rendah juga. Itu sahaja. Itu juga adalah segala-galanya.

Secara formal, kuantiti yang menentukan sama ada drill-down berfungsi ialah korelasi kedudukan antara objektif fideliti-rendah dan fideliti-tinggi, merentasi ruang konfigurasi. Jika korelasi itu tinggi, konfigurasi yang terselamat daripada pusingan murah adalah konfigurasi yang sama yang akan menang pada pusingan mahal, dan anda telah menjimatkan pengkomputan secara percuma. Jika ia rendah, pusingan murah itu adalah penapis rawak: ia membuang konfigurasi yang baik dan menaikkan taraf yang buruk, dan anda telah membelanjakan bajet anda untuk mempercepatkan diri anda ke arah jawapan yang lebih teruk. Tiada tetapan pertengahan bagi η yang dapat menyelamatkan anda — proksi yang buruk yang dipangkas secara lembut masih membocorkan pemenang; dipangkas secara agresif ia mengalirkan darah pemenang tersebut.

Kegagalan ini tidak kelihatan dengan cara yang biasa. Carian selesai, melaporkan seorang juara, juara itu kelihatan baik in-sample. Tiada apa-apa yang melemparkan ralat. Anda hanya mendapati proksi itu berbohong apabila juara tersebut runtuh out-of-sample — dan pada waktu itu anda telah mengaitkan kegagalan itu kepada strategi, bukan kepada carian yang memilihnya. Jadi disiplinnya sama seperti yang sentiasa ditemui oleh siri ini: ukur perkara yang diandaikan oleh kaedah itu, sebelum anda mempercayai kaedah tersebut. Bagi drill-down, perkara yang perlu diukur ialah korelasi kedudukan, dan pengukuran itu murah.

Mengukurnya: pintu gerbang fideliti

Pintu gerbang fideliti sebagai satu pusat pemeriksaan: sebelum mana-mana tahap dipercayai, kira-kira dua ratus konfigurasi rawak diberi skor pada setiap tahap fideliti dan korelasi kedudukan antara proksi murah dan penilaian penuh diukur pada satu pintu gerbang bercahaya yang hanya terbuka sebaik sahaja kedua-dua kedudukan itu sepadan

Pintu gerbang ini adalah satu eksperimen kecil yang anda jalankan sekali sahaja, sebelum carian sebenar, pada ruang yang sama yang akan anda cari. Prosedurnya:

  1. Ambil beberapa ratus konfigurasi secara rawak daripada ruang parameter (kami menggunakan ~200 — cukup untuk anggaran Spearman yang stabil, cukup murah untuk mampu dilakukan).
  2. Nilai setiap satu pada setiap tahap fideliti: pada 1 fold, 2 fold, … sehingga K fold penuh. Bagi fideliti berasaskan bilangan-fold, ini hampir percuma, kerana fold yang dikira untuk tahap murah digunakan semula pada tahap mahal — satu purata kumulatif.
  3. Bagi setiap tahap r, kira korelasi kedudukan Spearman antara kedudukan r-fold dan kedudukan K-fold penuh, merentasi ~200 konfigurasi tersebut.
  4. Tahap pertama di mana ρ melepasi ambang (kami menggunakan ρ ≥ 0.5) adalah fideliti paling cetek yang anda dibenarkan memangkas. Di bawah itu, kedudukan tersebut terlalu berhingar untuk dipercayai; anda tidak boleh menyingkirkan konfigurasi di situ.

Keseluruhannya hanya beberapa puluh baris kod. Teras kepadanya:

def fidelity_check(cache, n_probe, seed=7):
    """Spearman ρ: cumulative mean over the first r folds (in FOLD_ORDER)
    vs the full K-fold objective, on n_probe random configs."""
    rng = np.random.default_rng(seed)
    k = len(FOLDS)
    per_fold = np.empty((k, n_probe))
    order_win = np.array([list(FOLDS[fi]) for fi in FOLD_ORDER], np.int64)
    for j in range(n_probe):
        p = _unit_to_params(rng.random(len(PNAMES)))       # random config
        scores, *_ = eval_group(cache, p, _sp_of(p)[None, :], order_win, False)
        per_fold[:, j] = scores[0]                          # score on each fold
    cums = np.cumsum(per_fold, axis=0) / np.arange(1, k + 1)[:, None]  # r-fold mean
    rhos = []
    for r in range(1, k):
        rho = spearmanr(cums[r - 1], cums[-1]).statistic    # r folds vs all K
        rhos.append(0.0 if math.isnan(rho) else rho)
    return rhos

Perhatikan satu perincian yang disengajakan: fold diambil mengikut FOLD_ORDER, satu susunan berselang-seli (interleaved) yang berganti antara hirisan awal dan akhir kalendar (fold 0, kemudian satu fold pertengahan, kemudian fold 1, kemudian satu yang lebih lewat, …). Ini amat penting dan menjadi topik bahagian kemudian: ini bermakna "1 fold" ialah satu hirisan yang merentasi pertengahan sejarah, dan "2 fold" ialah satu hirisan awal ditambah satu hirisan akhir — tidak pernah tetingkap terkini yang bersambung. Fideliti murah menjadi lebih murah dengan menggunakan fold yang lebih sedikit, bukan yang lebih terkini.

Keputusan: satu fold menyusun kedudukan hampir secara rawak

Korelasi kedudukan meningkat mengikut bilangan fold: satu lengkung Spearman rho yang menaik, bermula hampir seperti taburan lambungan syiling pada satu fold dan mencuram kepada persetujuan hampir sempurna menjelang lima fold, dengan satu garis pintu gerbang mendatar dilukis merentasi titik tengah — di bawahnya pemangkasan dilarang dan di atasnya ia dibenarkan

Berikut ialah apa yang dilaporkan oleh pintu gerbang, dijalankan pada dua daripada persediaan multi-timeframe kami. Nombor tersebut ialah Spearman ρ antara kedudukan r-fold dan kedudukan K-fold penuh merentasi ~200 konfigurasi rawak — sejauh mana setianya kedudukan fideliti-murah meramalkan kedudukan fideliti-penuh.

Fold r Larian Multi-TF Rejim yang lebih sukar
1 +0.43 +0.03
2 +0.67 +0.43
3 +0.78 +0.78
4 +0.82
5 +0.91 +0.91

Bacalah lajur rejim-lebih-sukar dahulu, kerana ia yang paling membimbangkan. Pada satu fold, ρ = 0.03. Itu bukan korelasi yang lemah; itu ialah tiada korelasi langsung — kedudukan satu-fold bagi dua ratus konfigurasi secara statistik tidak dapat dibezakan daripada mengocoknya secara rawak. Satu larian successive-halving yang ditetapkan (sebagaimana kebanyakannya, secara lalai) untuk mula memangkas pada min_resource = 1 akan, dalam rejim ini, membuat potongan pertama dan paling agresifnya berdasarkan lambungan syiling. Konfigurasi yang akhirnya akan menang pada fideliti penuh mempunyai peluang 50/50 untuk terselamat pada pusingan pertama itu sendiri. Menjelang anda sampai ke fideliti di mana kedudukan itu bermakna sesuatu (ρ = 0.78 pada tiga fold), kebanyakannya sudah pun hilang.

Lajur multi-TF lebih lembut tetapi membuat hujah yang sama dengan cara yang berbeza. Malah di situ, satu fold memberikan ρ = 0.43 — di bawah pintu gerbang 0.5 kami. Ia kelihatan seperti korelasi yang agak baik, dan itulah tepatnya bahayanya: 0.43 cukup tinggi untuk melalaikan anda dan cukup rendah untuk membocorkan konfigurasi terbaik anda. Hanya pada dua fold (ρ = 0.67) barulah kedudukan itu menjadi boleh dipercayai.

Dua perkara dapat digeneralisasikan daripada ini. Pertama, ρ pada satu fold bergantung kepada rejim dan tidak boleh dipercayai — kami mengukur nilai antara 0.03 hingga 0.43 merentasi pelbagai persediaan, dan dalam kedua-dua kes, tiada satu fold pun yang melepasi ambang. Kedua, ρ meningkat secara monoton dan pantas: menjelang tiga fold, kedua-dua persediaan berada pada 0.78, dan menjelang lima fold ia menumpu kepada 0.91. Isyarat itu memang wujud; anda hanya perlu membelanjakan fideliti yang cukup untuk melihatnya. Tugas pintu gerbang ialah mencari tahap tepat di mana "cukup" itu bermula — dan melarang pemangkasan di bawahnya.

Mengapa satu fold sahaja begitu berhingar

Hingar ini bukanlah pepijat dalam pembinaan fold kami; ia bersifat intrinsik, dan memahami sebabnya menghalang anda daripada "membetulkannya" dengan cara yang salah. Satu fold walk-forward tunggal adalah tetingkap yang pendek — beberapa minggu daripada satu rejim pasaran. Skor sesuatu strategi pada tetingkap itu didominasi oleh sejauh mana parameternya secara kebetulan sesuai dengan rejim itu, yang hanya berkait secara longgar dengan sejauh mana ia dapat digeneralisasikan. Dua konfigurasi yang sebenarnya berbeza kualitinya boleh bertukar kedudukan pada satu fold tunggal semata-mata kerana salah satunya menangkap trend yang kebetulan terkandung dalam fold itu. Objektif pada satu fold ialah penganggar varians-tinggi bagi objektif yang sebenarnya anda ambil berat, dan korelasi kedudukan adalah tepat perkara pertama yang dimusnahkan oleh varians tinggi — anda boleh mengekalkan purata sesuatu penganggar sementara kedudukannya adalah hingar semata-mata.

Menambah fold merendahkan varians tersebut secara purata. Setiap fold adalah cabutan keadaan pasaran yang separuh bebas antara satu sama lain; purata r-fold adalah penganggar dengan varians lebih rendah, dan kedudukannya menumpu ke arah kedudukan fideliti-penuh. Itulah tepatnya kenaikan ρ = 0.03 → 0.43 → 0.78 → 0.91: bukan objektif itu berubah, tetapi anggaran kedudukannya menjadi stabil apabila nasib khusus-rejim purata-rata hilang. Pengajarannya ialah fideliti, bagi sesuatu backtest, pada asasnya adalah tentang berapa banyak rejim bebas yang telah anda sampelkan — dan satu hampir tidak pernah cukup untuk menyusun kedudukan.

Ini juga menerangkan mengapa rejim yang lebih sukar bermula pada 0.03 manakala larian multi-TF bermula pada 0.43. Dalam rejim yang lebih sukar, fold tunggal itu lebih bersifat idiosinkratik-rejim — skor satu-fold bagi konfigurasi lebih didorong oleh nasib dan kurang oleh kelebihan (edge) yang berkekalan, jadi kedudukannya lebih hampir kepada rawak. Pintu gerbang membaca perbezaan itu secara automatik dan bertindak balas dengan menuntut lebih banyak fold sebelum ia membenarkan pemangkasan. Anda tidak perlu tahu terlebih dahulu rejim mana yang sedang anda hadapi; anda hanya perlu mengukur.

Pintu gerbang dalam kod: menaikkan fideliti minimum secara automatik

Output pintu gerbang ialah satu integer tunggal: min_resource, fideliti paling cetek yang ASHA dibenarkan memangkas. Peraturannya bersifat mekanikal — telusuri setiap tahap, ambil yang pertama yang ρ-nya melepasi ambang:

RHO_GATE = 0.5
min_res = len(FOLDS)                      # default: pruning OFF (full fidelity)
rhos = fidelity_check(cache, n_probe=200) # [ρ@1, ρ@2, …, ρ@(K-1)]
passing = [r for r, rho in enumerate(rhos, 1) if rho >= RHO_GATE]
if passing:
    min_res = passing[0]                  # first rung that clears the gate

pruner = SuccessiveHalvingPruner(min_resource=min_res, reduction_factor=3)

Mari kita telusuri kedua-dua larian ini. Dalam persediaan multi-TF, ρ@1 = 0.43 gagal pada pintu gerbang tetapi ρ@2 = 0.67 melepasinya, jadi min_resource dinaikkan secara automatik kepada 2: ASHA menjalankan setiap konfigurasi pada sekurang-kurangnya dua fold sebelum ia dibenarkan menyingkirkan apa-apa, kemudian memangkas seperti biasa daripada situ. Dalam rejim yang lebih sukar, ρ@1 = 0.03 dan ρ@2 = 0.43 kedua-duanya gagal; ρ@3 = 0.78 adalah yang pertama melepasi, jadi min_resource menjadi 3. Dan mekanisme fallback yang penting: jika tiada tahap yang mencapai 0.5, passing menjadi kosong dan min_resource kekal pada K — pemangkasan dimatikan sepenuhnya, dan carian itu merosot secara anggun kepada carian fideliti-penuh biasa dan bukannya carian pantas yang salah. Satu drill-down yang tidak dapat membuktikan proksinya hanya enggan memangkas.

Inilah keseluruhan falsafah dalam satu baris aliran kawalan. Lalai bagi setiap pustaka successive-halving ialah "pangkas daripada min_resource = 1, percayai tahap murah." Pintu gerbang menggantikan itu dengan "pangkas daripada tahap pertama yang data katakan boleh dipercayai, dan jika tiada satu pun, jangan pangkas." Ia menelan kos satu ujian ~200-konfigurasi di awal dan ia menukar drill-down daripada satu tindakan keyakinan buta kepada satu keputusan yang terukur. Kadar penyingkiran η = 3 kekal tidak berubah; pintu gerbang tidak menyentuh betapa keras anda memangkas, hanya betapa awal anda dibenarkan bermula.

Satu nota kejujuran yang kelihatan dalam kod di atas: menaikkan min_resource mengurangkan pempercepatan. Memangkas pada 3 fold dan bukannya 1 bermakna setiap konfigurasi — termasuk yang akan anda buang — perlu membayar untuk tiga fold. Itulah harga bagi ketepatan, dan itu adalah pertukaran yang betul: pempercepatan 2× yang lebih kecil pada satu carian yang menemui pemenang sebenar mengatasi pempercepatan 6× pada satu carian yang membuangnya. Pintu gerbang membuat pertukaran itu secara eksplisit dan bukannya menyembunyikannya.

Paksi murah yang salah: sejarah yang lebih pendek adalah satu perangkap

Terdapat satu fideliti murah yang menggoda, jelas, dan berat sebelah (biased), dan ia patut disebut namanya secara khusus kerana semua orang akan mencapainya dahulu: sejarah yang lebih pendek. Saring konfigurasi pada bulan lepas, naikkan taraf konfigurasi yang terselamat kepada dua tahun penuh. Ia murah secara remeh dan terasa seperti idea yang sama dengan fold yang lebih sedikit. Ia bukan begitu.

Fold yang lebih sedikit dan sejarah yang lebih pendek berbeza dalam satu cara yang menentukan. Fideliti berasaskan bilangan-fold, jika dilakukan dengan betul, tetap merentasi keseluruhan kalendar — ia hanya mensampel secara lebih kasar. Fideliti sejarah-lebih-pendek mensampel satu sub-selang kalendar secara padat. Dan sub-selang sejarah pasaran adalah satu rejim tertentu. Apabila anda menyusun kedudukan konfigurasi pada bulan lepas, anda bukan mendapat satu anggaran yang berhingar-tetapi-tidak-berat-sebelah bagi kedudukan tempoh-penuhnya; anda mendapat satu anggaran berat sebelah yang secara sistematik memihak kepada konfigurasi yang disetel untuk rejim bulan lepas. Naikkan saiz sampel sesuka hati anda — purata merentasi lebih banyak konfigurasi, lebih banyak percubaan — dan bias itu tidak akan mengecil, kerana ia bukan varians. Anda akan menaikkan taraf konfigurasi yang paling sesuai dengan tetingkap saringan, dan itulah tepatnya konfigurasi yang paling berkemungkinan overfit kepada rejim sementara.

Inilah sebabnya fideliti kami menelusuri fold dalam susunan berselang-seli dan bukannya secara kronologi. Dengan K fold tersebar merentasi keseluruhan sejarah, "1 fold" adalah satu hirisan tunggal berhampiran pertengahan, "2 fold" adalah satu hirisan awal dan satu hirisan akhir, "3 fold" tersebar awal/pertengahan/akhir — setiap tahap fideliti, walaupun yang paling murah, mensampel merentasi keseluruhan kalendar. Proksi murah itu adalah pandangan kasar bagi tempoh keseluruhan, tidak pernah pandangan tajam bagi satu hirisan daripadanya. Susunan berselang-seli itulah yang menjadikan fideliti berasaskan bilangan-fold hanya sekadar berhingar (boleh dipulihkan oleh pintu gerbang) dan bukannya berat sebelah (yang tidak dapat dibetulkan oleh mana-mana pintu gerbang — ρ yang tinggi terhadap sasaran yang berat sebelah hanya mengesahkan bahawa anda akan sentiasa memilih konfigurasi yang sesuai-dengan-rejim). Jika satu-satunya cara anda menjadikan sesuatu fideliti lebih murah ialah dengan menjadikannya lebih terkini, anda tidak mempunyai fideliti yang sah. Jadikan ia lebih kasar sebaliknya.

Resolusi sebagai paksi murah yang jujur

Paksi murah yang lain mengelakkan bias sepenuhnya, dan ia adalah rakan semula jadi kepada drill-down adaptif yang kami terangkan bagi simulasi pengisian: resolusi lilin. Saring keseluruhan ruang pada bar 1 jam, naikkan taraf konfigurasi yang terselamat kepada 1 minit, dan drill down ke 1 saat atau dagangan mentah hanya untuk segelintir finalis. Lilin yang lebih kasar merentasi sejarah penuh yang sama lebih murah untuk dinilai — lebih sedikit bar, laluan penunjuk yang lebih pantas, simulasi yang lebih pantas — dan, tidak seperti tetingkap yang lebih pendek, pandangan kasar bagi keseluruhan kalendar adalah tidak berat sebelah: ia melihat setiap rejim, hanya dengan kurang perincian intrabar.

Resolusi dan fold adalah paksi fideliti yang saling melengkapi, dan pintu gerbang fideliti terpakai kepada kedua-duanya. Sebelum anda mempercayai satu saringan 1 jam, jalankan ujian yang sama: ambil ~200 konfigurasi, beri skor pada 1j dan pada 1m, dan ukur korelasi kedudukan. Jika ρ(1j, 1m) tinggi, saringan pada jam adalah selamat dan anda telah membeli pempercepatan yang besar secara jujur. Jika ia rendah — yang berlaku apabila kelebihan (edge) strategi itu wujud dalam struktur intrabar yang dikaburkan oleh lilin sejam — maka saringan sejam adalah penapis rawak bagi strategi itu, dan pintu gerbang memberitahu anda untuk mula dengan lebih halus. Peraturan itu tidak pernah berubah: anda dibenarkan memangkas pada sesuatu fideliti hanya selepas anda mengukur bahawa kedudukannya sepadan dengan kebenaran.

Kedua-dua paksi ini juga gagal dengan cara yang bertentangan, dan ini berguna. Resolusi yang kasar kehilangan maklumat intrabar; fold yang lebih sedikit kehilangan maklumat merentas-rejim. Satu strategi momentum pada horizon harian mungkin menyusun kedudukan dengan sempurna pada lilin sejam tetapi memerlukan banyak fold untuk purata-ratakan nasib rejim; satu strategi scalping mungkin menyusun kedudukan dengan baik pada fold yang sedikit tetapi runtuh di atas resolusi 1 saat. Pintu gerbang, dijalankan mengikut setiap paksi, memberitahu anda fideliti mana yang anda mampu untuk murah bagi strategi ini — dan bukannya mengandaikan satu jawapan yang kebetulan mudah.

Dari mana penjimatan itu sebenarnya datang

Satu amaran yang mengekalkan kejujuran drill-down: satu fideliti hanya menjimatkan pengkomputan di tempat kos itu sebenarnya berada. Dalam enjin multi-timeframe kami, bahagian yang mahal ialah pra-pengiraan penunjuk — HMA multi-timeframe dan isyarat pemisahan — yang dibayar sekali sahaja bagi setiap konfigurasi, sebelum mana-mana fold dijalankan. Simulasi per-fold pada isyarat yang dicache adalah agak murah berbanding itu. Jadi pemangkasan berdasarkan bilangan fold hanya menjimatkan kos simulasi, bukan kos penunjuk yang mendominasi; fideliti berasaskan bilangan-fold adalah nyata tetapi siling penjimatannya lebih rendah daripada yang disarankan oleh nisbah fold mentah.

Paksi resolusi pula, sebaliknya, menyerang kos dominan itu secara langsung: lilin yang lebih kasar bermakna lebih sedikit bar untuk mengira penunjuk padanya, jadi kedua-dua pra-pengiraan yang mahal dan simulasi yang murah mengecil bersama-sama. Ini bukan sekadar perincian kecil — ia menentukan drill-down mana yang berbaloi untuk dibina. Sebelum anda melabur dalam satu carian multi-fideliti, tanya ke mana saat-saat anda pergi. Jika 90% adalah pra-pengiraan penunjuk yang dikongsi merentasi fold, fideliti berasaskan bilangan-fold hanya membeli sedikit untuk anda dan fideliti resolusi membeli banyak untuk anda. Profil dahulu; paksi murah yang betul ialah yang menghapuskan kos yang sebenarnya anda ada, dan ia masih perlu melepasi pintu gerbang.

Ke mana ini berkait

Pintu gerbang fideliti berada pada satu titik tertentu dalam rantaian kebersihan backtest siri ini:

  • Ia berada di hulu kawalan overfitting. Satu drill-down yang memangkas berdasarkan proksi yang buruk adalah satu cara baharu untuk overfit — anda membenarkan tahap awal yang berhingar memilih finalis anda. Juara itu masih perlu terselamat daripada Deflated Sharpe dan PBO, dan bilangan percubaan yang memberi makan kepada pintu gerbang tersebut mesti merangkumi setiap percubaan yang dipangkas, bukan hanya yang terselamat — pemangkasan tidak menjadikan sesuatu percubaan itu bebas daripada buku lejar ujian-berbilang (multiple-testing).
  • Ia berkongsi musuh yang sama dengan analisis plateau: satu konfigurasi yang menang pada satu fold atau satu tetingkap saringan dan tiada di tempat lain adalah artifak sesuai-dengan-rejim yang sama yang kedua-dua alat ini wujud untuk menolaknya. Pintu gerbang enggan memilih berdasarkan fold sebegitu; analisis plateau enggan mempercayai seorang juara yang berdiri atas satu fold sahaja.
  • Ia mengandaikan pembahagian walk-forward yang jujur di bawahnya — fold merentasi keseluruhan kalendar, out-of-sample disisihkan — dan ia adalah pelengkap masa-carian kepada drill-down yang kami bina untuk simulasi pengisian: prinsip kasar-ke-halus yang sama, diterapkan kepada konfigurasi mana yang dinilai dan bukannya betapa tepatnya ia diisi.
  • Dan ia bergantung sepenuhnya kepada fideliti itu bebas-kebocoran pada setiap tahap. Jika tahap murah mempunyai bias look-ahead yang tiada pada tahap mahal, ρ mengukur persetujuan dengan sasaran yang tercemar dan pintu gerbang mengesahkan satu kebocoran. Ukur korelasi kedudukan, ya — tetapi pada satu objektif yang jujur.

Idea penyatu, sekali lagi, ialah yang tidak akan berhenti diulang oleh siri ini: satu backtest adalah satu eksperimen statistik, dan setiap jalan pintas di dalamnya adalah satu hipotesis yang anda wajib menguji. Hipotesis drill-down ialah "kedudukan murah ≈ kedudukan mahal." Ia boleh diuji dalam ~200 konfigurasi. Ujilah ia.

Rumusan

  1. Carian kasar-ke-halus bersandar pada satu andaian: proksi murah menyusun kedudukan konfigurasi seperti yang mahal. Bukan nilai yang sama — kedudukan yang sama. Jika korelasi kedudukan rendah, pemangkasan agresif membuang pemenang masa depan anda dan menaikkan taraf hingar. Anda mencari dengan lebih pantas ke arah jawapan yang lebih teruk.
  2. Ukur dahulu sebelum mempercayainya. Ambil ~200 konfigurasi rawak, beri skor pada setiap tahap fideliti, dan kira Spearman ρ antara setiap tahap murah dengan kedudukan fideliti-penuh. Ia hanya beberapa puluh baris kod dan satu ujian yang murah.
  3. Satu fold menyusun kedudukan hampir secara rawak. Kami mengukur ρ@1 daripada 0.03 (lambungan syiling) hingga 0.43 (masih di bawah tahap boleh dipercayai) bergantung kepada rejim; ia meningkat kepada 0.67, 0.78, 0.82, dan 0.91 apabila fold bertambah. Lalai min_resource = 1 bagi setiap ASHA sedia ada, bagi sesuatu backtest, biasanya salah.
  4. Naikkan fideliti minimum secara automatik kepada tahap pertama di mana ρ ≥ 0.5, dan jika tiada satu pun yang melepasi, jangan pangkas langsung. Pintu gerbang bertukar menjadi min_resource = 2 bagi satu persediaan dan 3 bagi yang lebih sukar; fallback itu merosot secara anggun kepada carian fideliti-penuh. Ketepatan mengambil kos sedikit pempercepatan — bayarlah ia.
  5. Pilih paksi murah berdasarkan sama ada ia berat sebelah, bukan berdasarkan sama ada ia murah. Sejarah yang lebih pendek adalah berat sebelah — ia memilih parameter sesuai-dengan-rejim dan tiada saiz sampel yang dapat membetulkan itu. Gunakan fold yang lebih sedikit yang merentasi keseluruhan kalendar (berselang-seli, bukan bersambung) atau resolusi yang lebih kasar merentasi keseluruhan tempoh. Dan belanjakan paksi murah itu di tempat kos anda sebenarnya berada.

Drill-down adalah salah satu pempercepatan terbaik dalam backtesting, dan salah satu yang paling mudah bertukar menjadi satu cara yang lebih pantas untuk menipu diri sendiri. Perbezaan antara kedua-duanya ialah satu nombor tunggal yang boleh anda ukur sebelum carian bermula. Jika proksi anda tidak dapat membuktikan bahawa ia menyusun kedudukan seperti kebenaran, ia bukanlah satu proksi — ia adalah satu penjana nombor rawak dengan profil kos yang munasabah.

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.