Backtest boleh melaporkan isian pada harga yang tidak pernah dipaparkan oleh pasaran. Biasanya simulator membuat inferens tentang pelaksanaan yang nampak munasabah berdasarkan data yang tidak lengkap: paras tertinggi dan terendah bar, titik tengah, atau harga had yang disentuh oleh satu dagangan. Ini boleh membuat log dagangan kelihatan tepat sambil menyembunyikan apa yang sebenarnya ditawarkan oleh pasaran.
Mulakan dengan bertanya harga yang boleh menjadi padanan bagi pesanan anda. Bar dagangan terakhir menunjukkan harga yang didagangkan dalam sesuatu selang. Bar itu tidak memberitahu harga bida dan tanya ketika pesanan anda tiba, jumlah yang tersedia pada harga tersebut, atau sama ada pesanan anda boleh sampai ke hadapan barisan.
Mengapa backtest saya menunjukkan isian di luar harga pasaran?
Pertama, jelaskan maksud “di luar”. Isian beli di bawah paras terendah bar atau isian jual di atas paras tertingginya ialah kesilapan perakaunan atau pemasaan yang jelas. Isian dalam julat tertinggi-terendah pun mungkin rekaan: harga itu mungkin didagangkan sebelum pesanan wujud, di sebelah lain spread, atau dalam kuantiti yang terlalu kecil untuk mengisi pesanan anda.
Bayangkan bar satu minit dengan harga buka 100.00, paras terendah 99.80 dan harga tutup 100.10. Strategi anda melihat bar yang telah lengkap, menghantar pesanan beli, lalu simulator mengisinya pada 99.80. Paras terendah itu mungkin berlaku hampir pada awal minit, lima puluh saat sebelum isyarat muncul. Bar itu tidak membuktikan bahawa 99.80 tersedia selepas keputusan dibuat.
| Data yang anda ada | Perkara yang dapat dipastikan | Perkara yang tidak dapat dipastikan |
|---|---|---|
| Bar OHLCV | Julat harga dagangan yang diperhatikan dan volum sepanjang sesuatu selang | Turutan harga, bida dan tanya, atau ketersediaan ketika pesanan tiba |
| Rekod dagangan | Pelaksanaan yang dilaporkan berserta cap masa dan harga | Kecairan pesanan sedia ada atau kedudukan anda dalam barisan |
| Sebut harga buku teratas | Bida dan tanya terbaik yang dipaparkan pada masa pensampelan | Kedalaman melebihi paras terbaik atau sama ada sebut harga kekal antara masa pensampelan |
| Peristiwa buku pesanan | Perubahan kedalaman yang dipaparkan dan peristiwa barisan, tertakluk pada liputan suapan | Kecairan tersembunyi, akses ke platform dagangan, atau keutamaan terjamin |
Satu lagi punca lazim ialah kekeliruan antara harga titik tengah dengan harga yang boleh dilaksanakan. Jika sebut harga ialah bida 99.99 dan tanya 100.01, pembelian pada titik tengah 100.00 nampak kemas dalam laporan. Pembelian yang boleh dipadankan serta-merta biasanya membayar harga tanya, ditambah sebarang kesan pasaran daripada saiz pesanan. Menganggap titik tengah sebagai harga isian secara senyap menghapuskan separuh spread.
Bolehkah pesanan had diisi hanya kerana pasaran menyentuh harganya?
Sentuhan harga membuktikan bahawa dagangan direkodkan pada harga had itu. Namun, itu bukan bukti bahawa pesanan anda yang menunggu akan terlaksana. Jika pesanan lain berada di hadapan, volum dagangan pada harga itu mungkin terlalu kecil untuk sampai ke kedudukan anda dalam barisan. Rekod dagangan itu juga mungkin datang daripada platform dagangan lain, sedangkan pesanan anda menunggu di tempat lain.
Katakan had beli anda ialah 50.00, dan pasaran memperdagangkan 200 saham pada harga itu selepas anda membuat pesanan. Simulator berasaskan sentuhan harga mengisi kesemua 500 saham. Model yang lebih berhati-hati menilai jumlah dagangan pada atau melebihi 50.00 selepas pesanan tiba, kemudian mengambil kira anggaran pesanan di hadapan dalam barisan. Tanpa data buku pada peringkat pesanan, kedudukan barisan itu hanyalah andaian. Andaian itu patut kelihatan dalam hasil, bukannya diselitkan seolah-olah pasti.
Untuk sistem penyelidikan kecil, saya lebih suka menyatakan andaian itu dengan jelas dan menguji julatnya daripada berpura-pura bahawa data lilin menunjukkan keutamaan dalam barisan. Julat yang sesuai bergantung pada platform dagangan, saiz pesanan dan kekerapan strategi berdagang. Saham yang tenang pada waktu pembukaan pasaran dan kontrak kripto yang kurang cair pada 03:00 UTC memerlukan pertimbangan pelaksanaan yang berbeza.
Bagaimanakah saya patut memilih model isian untuk data bar?
Sesuaikan model dengan data dan dakwaan strategi. Backtest berasaskan bar masih berguna untuk strategi yang bergerak perlahan, tetapi isian yang digunakan perlu mematuhi apa yang benar-benar ditunjukkan oleh bar.
- Tetapkan masa keputusan dan masa ketibaan. Jika isyarat menggunakan harga tutup bar, hantar pesanan selepas bar itu tutup. Modelkan pelaksanaan berdasarkan selang atau sebut harga tersedia yang berikutnya, bukannya paras terendah terdahulu dalam bar yang telah lengkap.
- Gunakan sisi spread yang betul. Untuk pembelian yang boleh dipadankan serta-merta, mulakan pada harga tanya; untuk jualan, gunakan harga bida. Jika anda hanya mempunyai bar dagangan, anggarkan spread daripada sumber berasingan atau nyatakan bahawa model tidak mengambil kira spread.
- Hadkan isian mengikut kecairan yang munasabah. Tetapkan had penyertaan berdasarkan volum yang diperhatikan, dan masukkan fi serta kesan pasaran. Jumlah volum bar tidak bermakna semuanya tersedia pada harga yang anda pilih.
- Uji andaian dalam keadaan mencabar. Bandingkan isian pada harga buka berikutnya dengan gelinciran konservatif, dan uji sama ada hasilnya kekal dengan pelaksanaan yang lebih buruk. Jangan laraskan model isian sehingga strategi menang.
Ini ialah pilihan pemodelan, bukannya resipi untuk mendapatkan semula satu-satunya isian sebenar daripada data yang tidak lengkap. Jika strategi bergantung pada usaha meraih beberapa mata asas, data bar mungkin bukan bukti yang mencukupi untuk menyokong dakwaan itu.
Bagaimanakah saya boleh mencari punca isian mustahil dalam backtest?
Jejaki satu dagangan yang mencurigakan dari isyarat hingga lejar. Asingkan cap masa keputusan, cap masa penghantaran pesanan, masa ketibaan simulasi, pemerhatian pasaran yang dipilih, harga isian, kuantiti isian dan fi sebagai medan berasingan. Kemudian semak perkara berikut mengikut turutan:
- Adakah ciri dikira menggunakan data daripada bar yang belum selesai ketika keputusan dibuat?
- Adakah isian menggunakan paras tertinggi, terendah atau harga tutup bar walaupun harga itu berlaku sebelum pesanan tiba?
- Adakah pesanan beli dipadankan dengan bida, atau pesanan jual dengan tanya?
- Adakah kuantiti simulasi melebihi saiz sebut harga yang tersedia atau had penyertaan model?
- Adakah pembundaran harga, saiz tick kontrak dan fi dikenakan selepas isian dipilih?
Jika anda tidak dapat menjawab soalan-soalan itu berdasarkan rekod dagangan, backtest anda kekurangan bukti pelaksanaan. Tambahkan medan tersebut, ulang main beberapa dagangan secara manual menggunakan data mentah, dan pastikan isian yang dilaporkan boleh berlaku di bawah model yang anda maksudkan. Lengkung ekuiti yang kemas tidak akan mengesan harga yang hanya wujud dalam simulator.
← Semua catatan


