Saluran Donchian 20 hari kelihatan tidak berbahaya dalam spesifikasi. Ejen menulis rolling max 20 bar, backtest bermula pada baris pertama fail parquet, dan sepanjang dua minggu pertama "paras tertinggi 20 hari" hanyalah running max bagi bar yang wujud. Pada hari keempat ia adalah paras tertinggi empat hari. Strategi yang anda sangka sedang diuji bukanlah yang menghasilkan sedozen fills pertama.
Saya mempunyai notebook pada bar harian ETHUSDT di mana Sharpe sampel penuh ialah 1.4. Potong 20 sesi pertama dan ia jatuh kepada 0.6. Kekalkan 20 itu dan buang baki tahun satu, dan ia mencetak 3.1. Tiada siapa yang membocorkan esok. Strategi itu menggunakan masa lalu, cuma tidak cukup banyak, dan laporan itu menganggap dagangan separuh terbentuk itu sebagai bukti.
Biarkan tetingkap berdagang semasa ia masih mengisi
Kerosakan biasa ialah min_periods=1. Pandas akan mengira rolling mean pada satu bar sahaja jika anda biarkan. Ejen melakukan ini sentiasa, kerana NaN di bahagian atas frame terasa seperti pepijat, dan mengisinya menjadikan unit test hijau.
Sasaran realized-vol 20 hari dengan dua pemerhatian pulangan ialah letupan saiz. Varians dua nombor ialah lemparan syiling, anda songsangkannya, dan posisi pertama beberapa kali ganda risiko yang dimaksudkan. Z-score terhadap sisihan piawai hampir sifar melakukan helah yang sama dengan tanda: strategi kelihatan mempunyai kemasukan setajam pisau cukur yang tidak pernah muncul semula apabila tetingkap sudah jujur.
Breakout lebih teruk, kerana ia kelihatan seperti peraturan sebenar. Saluran 20 bar pada bar enam ialah saluran enam bar. Anda mendapat kelompok dagangan tepat di permulaan, sering dalam tempoh senyap yang tidak akan mencetuskan penunjuk yang sudah siap. Pasaran senyap hanyut sedikit. Saluran ketat tercetus. Lengkung ekuiti mendapat kelebihan permulaan yang tidak diulang pada tahun kemudian.
Zero-fill dan forward-fill mencipta pembohongan yang berbeza. RSI pada 0 dibaca sebagai oversold. ATR yang hilang bernilai 0 meletupkan saiz unit, dan backtest dengan patuh membeli gudang. Saya lebih rela NaN membunuh order daripada 0 mencipta satu.
Saya masih mendapati diri saya mengplot dari baris 0 kerana sebulan kosong di kiri carta kelihatan belum siap. Bulan kosong itu bahagian yang jujur.
Potong lengkung ekuiti, kekalkan posisi
Yang ini lolos semakan kod. Anda mengira ciri 20 hari dengan betul, buang 20 baris pertama dari lengkung yang diplot, dan terbitkan dari 21 Januari. Posisi pada 21 Januari dibuka pada 14 Januari. Paras tertinggi trailing stop, kiraan piramid, tunai selepas burn itu: semuanya terbawa masuk ke dalam sampel "bersih".
Kerosakannya ialah strategi paper yang tidak dapat dimulakan pada tarikh dalam laporan. Mulakan semula dari flat pada permulaan yang dilaporkan dan order minggu pertama tidak sepadan. Kadang-kadang backtest sudah dalam dagangan yang sistem paper tiada sebab untuk masuk. Kadang-kadang sistem paper masuk kerana lookbacknya masih sejuk, dan backtest duduk tepi kerana bulan tersembunyinya sudah mengambil breakout. Dua buku pembukaan, satu tarikh mula yang diterbitkan.
Fold walk-forward melakukan ini secara senyap. Setiap tetingkap ujian mempunyai ekor lookback yang anda tidak plot. Langkau simulasi ekor itu dan dagangan ujian pertama adalah dagangan tetingkap belum siap semula. Simulasikannya dan laporkan hanya hari ujian, dan posisi hari ujian bergantung pada fills yang anda tidak tunjukkan. Versi kedua itu boleh menjadi pilihan penyelidikan yang sah. Memanggil pagi pertama fold sebagai permulaan sejuk, sementara trailing stop sudah hidup dari ekor, ialah cara dua penyelidik mendapat dua Sharpe daripada satu konfigurasi.
Memanaskan dalam hari kalendar apabila ciri bukan hari
"Beri ia 30 hari" meninggalkan ciri tidak cukup dinyatakan. Tiga puluh hari kalendar pada Donchian 5 minit ialah ribuan bar melepasi lookback 20 tempoh. Tiga puluh hari pada ciri harian yang memerlukan 20 sesi sama ada gemuk atau kurus, bergantung pada hujung minggu dan lubang.
Z-score kadar funding pada salah satu venue perp kami mendapat warmup 30 hari kerana spesifikasi menyatakan 30 tempoh dan seseorang menterjemah tempoh kepada kalendar. Funding di situ dicetak setiap lapan jam. Tiga puluh hari ialah kira-kira 90 penyelesaian. Tiga puluh tempoh ialah sepuluh hari. Tambahan dua bulan burn-in kebetulan merangkumi minggu depeg. Membuangnya menjadikan tetingkap live kelihatan lebih tenang daripada sejarah sebenar strategi. Orang menyalahkan kepekaan tarikh mula. Warmup telah memakan rejim itu.
Dan kripto berbanding ekuiti menjadikan nombor yang sama menukar erti tanpa sesiapa mengedit parameter. Dua puluh "hari" ETH merangkumi hari Sabtu. Dua puluh sesi ekuiti hampir sebulan kalendar. Salin lookback 20 hari dari notebook saham ke lilin perpetual setiap jam dan anda mempunyai saluran 20 jam dengan nama 20 hari. Bar sah pertama kemudiannya sama ada 20 jam masuk, atau 20 hari masuk jika sesuatu fungsi kemudiannya mensampel semula, dan saya pernah melihat kedua-duanya dalam diff ejen yang sama.
Kunci cap masa boleh dagang pertama
Warmup ialah keperluan data, bukan sampel bonus. Setiap ciri menamakan bilangan pemerhatian siap yang diperlukan, dalam unit pengiraannya. Cap masa boleh dagang pertama ialah bar pertama di mana semua itu benar dan akaun flat sepatutnya dibenarkan menghantar order.
| Ciri | Apa yang biasanya dinyatakan spesifikasi | Apa yang sebenarnya mesti wujud | Pengganti senyap |
|---|---|---|---|
| Donchian 20 hari | 20 paras tertinggi harian | 20 sesi lengkap | Running max dengan min_periods=1 |
| Vol terealisasi 30 hari | Tetingkap 30 hari | 30 pulangan close-to-close | Varians dua hari, disongsangkan menjadi saiz |
| Z-score funding 20 cetakan | 20 hari | 20 penyelesaian funding | 20 hari kalendar (~90 cetakan), atau 20 bar pada timeframe yang salah |
| RSI 14 tempoh pada 5m | 14 tempoh | 14 bar lima minit yang tertutup | 14 hari, atau 14 bar dengan jurang di-forward-fill |
P&L sebelum cap masa itu kekal di luar rekod prestasi. Keadaan sebelum cap masa itu mungkin masih perlu disimulasikan, jadi trailing stop atau cooldown adalah nyata apabila jam mencecah bar boleh dagang pertama, tetapi fills itu tidak masuk ke dalam Sharpe, kiraan dagangan, atau matematik kapasiti. Kemudian jalankan semakan yang hodoh: mulakan semula dari flat pada cap masa itu, dengan lookback tersedia sebagai data sahaja. Jika order berubah, anda sedang menghantar dagangan tersembunyi.
Paper trading bermula pada kontrak yang sama. Begitu juga setiap tetingkap ujian walk-forward. Jika carta kelihatan seperti kehilangan sebulan, biarkan ia hilang.
← Semua catatan


