Isi artikel
- Bukti dan cakupan
- Ilustrasi
- Proses
- Volume memilih saham; harga memberikan arah.
- Pisahkan konfigurasi makalah dari pilihan implementasi.
- Mesin keadaan mencegah entri retroaktif.
- Modal yang dialokasikan berbeda dengan total ekuitas akun.
- Keberhasilan dan kegagalan sintetis serta bar yang ambigu
- Baca hasil publik dalam lingkup sebenarnya.
- Kesalahan umum
- Daftar periksa praktis
- Pertanyaan umum
- Sumber riset
Bukti dan cakupan
Untuk 2016–2023, penulis melaporkan +1,637% total return, 41.6% IRR, 2.81 Sharpe dan 12% maximum drawdown, dengan $0.0035 komisi per saham dan tanpa model slippage terpisah. Ini adalah hasil riset yang dilaporkan, bukan replikasi baru atau akun yang diaudit. [1]
Alur kerja praktis
- Siapkan sejarahGunakan semesta saham dan input historis yang tersedia sebelum sesi.
- Tunggu sampai jendela pembukaan selesaiTunggu hingga jendela waktu lima menit penuh dan catat ketersediaannya.
- Bekukan peringkat RVOLTetapkan saham terpilih, arah transaksi, dan anggaran modal.
- Kirim order stop untuk masuk posisiAktifkan pesanan setelah diproses; pertahankan entri yang ditolak dan tidak terjawab.
- Lindungi dan likuidasiLindungi eksekusi order aktual dan tutup posisi sesuai jadwal sesi.
Volume memilih saham; harga memberikan arah.
Banyak saham mengalami pergerakan tajam selama menit-menit pembukaan. Proposisi yang dapat diuji adalah bahwa breakout memiliki perilaku kondisional yang berbeda ketika aktivitas perdagangan luar biasa tinggi relatif terhadap aktivitas pembukaan normal saham tersebut. Volume relatif tidak mengidentifikasi pembeli atau penjual: setiap transaksi yang selesai melibatkan keduanya. Arah pergerakan harus berasal dari aturan harga yang terpisah, sementara volume mengukur intensitas partisipasi.
Definisikan volume relatif pembukaan sebagai RVOL(d) = V(d, opening window) / mean(V(d−j, same window), j=1…14). Penyebut harus tersedia dari sesi sebelumnya. Membandingkan lima menit pertama dengan volume rata-rata seharian penuh menjawab pertanyaan yang berbeda dan memperkenalkan satuan waktu yang tidak kompatibel. TradingView membedakan volume kumulatif dari volume pada waktu yang sesuai; implementasi harus memilih satu definisi secara konsisten. [3]
Rasio RVOL sebesar empat tidak berarti empat kali lipat pengembalian yang diharapkan dari rasio RVOL sebesar satu. Aktivitas tinggi dapat menyertai berita, spread yang lebih lebar, penghentian perdagangan, atau koreksi pelaporan. Saham dengan volume pembukaan yang biasanya kecil juga dapat menerima rasio yang spektakuler dengan aktivitas absolut yang sederhana. Oleh karena itu, filter kelayakan dan penilaian eksekusi harus dilakukan sebelum keputusan perdagangan akhir.
Kontribusi ekonomi dari filter volume adalah pertanyaan empiris. Uji aturan harga yang sama dengan dan tanpa RVOL sambil menjaga risiko dan eksposur tetap sebanding. Jika tidak, kurva ekuitas yang lebih baik mungkin hanya mencerminkan lebih sedikit transaksi atau posisi yang lebih besar dalam kelompok yang dipilih.
Pisahkan konfigurasi makalah dari pilihan implementasi.
Konfigurasi acuan memakai harga pembukaan di atas $5, rata-rata volume 14 hari sebelumnya minimal satu juta saham, ATR14 di atas $0.50, serta 20 saham berperingkat tertinggi dengan RVOL lima menit minimal satu. Candle awal hijau menentukan breakout beli, candle merah breakout short, dan doji dilewati. Stop berjarak 0.1 ATR dari harga fill aktual, posisi ditutup intraday, risiko 1% dari modal alokasi, dan leverage dibatasi empat kali. [1]
Konvensi teknik berikut ini adalah spesifikasi yang diusulkan, bukan klaim tambahan dari makalah ini. Gunakan kalender bursa di America/New_York, termasuk perubahan waktu musim panas dan sesi yang dipersingkat. Jendela historis yang hilang adalah pengamatan yang tidak tersedia, bukan hari dengan volume nol. Bar pembukaan yang tertunda hanya dapat digunakan jika datanya benar-benar telah tiba.
Bekukan cuplikan seleksi yang berisi semesta, pembukaan OHLC, ATR harian, 14 pengamatan volume historis, dan peringkat akhir. Pisahkan peringkat yang sama menggunakan pengidentifikasi instrumen yang stabil. Jangan menambahkan saham ke set yang dipilih setelah mengamati breakout-nya. Jika hanya 12 saham yang memenuhi syarat, mempertahankan alokasi yang tidak terpakai atau mendistribusikannya kembali harus diputuskan sebelum mengevaluasi pengembalian.
Snapshot harus mempertahankan waktu kejadian dan waktu ketersediaan. Vendor dapat memberi cap waktu pada bar di 09:35 sambil memberikan koreksi di kemudian hari. Merekonstruksi semua keputusan dari riwayat yang telah dikoreksi akan menggambarkan kumpulan informasi yang berbeda dari yang tersedia untuk proses pemesanan awal.
Mesin keadaan mencegah entri retroaktif.
Order masuk hanya ada setelah seleksi, pemrosesan, dan pengiriman. Persilangan harga yang terjadi sebelum urutan ini tidak dapat memenuhi order baru. Jika pasar sudah melewati pemicu ketika order stop-market menjadi aktif, order tersebut dapat dieksekusi segera di dekat pasar saat ini; menetapkan harga pemicu sebelumnya akan menciptakan eksekusi yang menguntungkan.
Bangun stop loss proteksi dari pengisian entri aktual. Pengisian sebagian memerlukan perlindungan untuk kuantitas yang sudah terisi, ditambah kebijakan untuk sisa yang belum terisi. Penolakan penjualan pendek, pinjaman yang tidak tersedia, atau penolakan risiko broker adalah hasil sistem yang tercatat. Menghapus kasus-kasus tersebut secara diam-diam dapat membuat sampel perdagangan yang tersisa tampak lebih mudah dieksekusi daripada peluang sebenarnya.
Pertahankan status eksplisit seperti terpilih, dikirim, terisi sebagian, dilindungi, ditutup, dan ditolak. Setiap transisi memerlukan cap waktu dan kuantitas. Hal ini memungkinkan untuk memeriksa apakah perintah perlindungan dapat diterapkan selama pembalikan cepat segera setelah entri.
on_opening_range_ready(session):
snapshot = freeze_available_data(session)
candidates = rank_eligible_by_rvol(snapshot)
selected = candidates[:20]
for asset in selected:
side = sign(asset.or_close - asset.or_open)
if side == 0: continue
trigger = asset.or_high if side > 0 else asset.or_low
submit_stop_after_processing_delay(asset, side, trigger)
on_entry_fill(fill):
stop_distance = 0.1 * frozen_daily_atr[fill.asset]
protective_stop = fill.price - fill.side * stop_distance
protect_filled_quantity(fill, protective_stop)
on_session_liquidation_deadline():
cancel_pending_entries()
close_remaining_positions()
Modal yang dialokasikan berbeda dengan total ekuitas akun.
Misalkan akun sintetis $100,000 dibagi menjadi 20 alokasi modal masing-masing $5,000. Risiko 1% dari satu alokasi berarti $50 untuk seluruh posisi pada satu saham. Salah mengartikan sebagai 1% dari seluruh akun menghasilkan $1,000 per posisi: dua puluh kali lebih besar sebelum membahas leverage. Bedakan keduanya saat membandingkan implementasi bernama serupa.
Dengan jarak stop $0.20 dan tanpa biaya yang disertakan, anggaran kerugian $50 memungkinkan 250 saham. Pada harga saham $50, nilai nominalnya adalah $12,500, melebihi alokasi kas $5,000. Oleh karena itu, ukuran aktual harus memenuhi minimum dari batas risiko, batas nominal, ketersediaan pinjaman, dan kapasitas portofolio yang tersisa.
Batasan leverage portofolio bukan berarti izin untuk memperbesar ukuran setiap transaksi simultan pada batasan tersebut. Cadangkan eksposur untuk pesanan yang diajukan dan lepaskan setelah pembatalan atau penolakan. Jika tidak, pesanan yang valid secara individual dapat secara kolektif melanggar batasan ketika beberapa pesanan dieksekusi sekaligus.
Bedakan kerugian pada stop yang direncanakan dari kerugian ekstrem yang benar-benar terjadi. Saham berkorelasi bisa mengalami gap menembus stop secara bersamaan. Laporkan risiko portofolio jika semua stop terisi sesuai rencana, lalu uji stres dengan spread lebih lebar, proteksi terlambat, dan gap merugikan. Dua puluh ticker bukan jaminan dua puluh risiko independen.
Keberhasilan dan kegagalan sintetis serta bar yang ambigu
Misalkan rentang pembukaan adalah O=50, H=50.30, L=49.90, dan C=50.20. Volume pembukaan adalah 600,000 saham dibandingkan dengan rata-rata historis 200,000 saham, sehingga RVOL=3. ATR harian sebelumnya adalah 2. Setelah seleksi siap, buy-stop di 50.30 terisi di 50.34. Stop loss protektif adalah 50.14. Penjualan akhir hari di 51.14 menghasilkan $0.80 per saham, atau 4R sebelum biaya ketika R=$0.20 per saham.
Dengan pengaturan awal yang sama, pembalikan justru dapat mengisi stop loss di 50.10. Kerugiannya adalah $0.24 per saham, atau 1.2R sebelum komisi. Kerugian tidak boleh dicatat ulang secara paksa menjadi −1R karena level stop loss yang dimaksud adalah 50.14. Perbedaannya persis sama dengan eksposur eksekusi yang dapat diperbesar oleh stop loss yang sempit.
Jika vendor kemudian merevisi volume pembukaan dari 600,000 menjadi 150,000, simpan nilai asli yang diterima dan revisinya secara terpisah. Keputusan langsung yang didasarkan pada nilai asli tidak dapat dievaluasi seolah-olah nilai revisi telah diketahui pada saat pemilihan.
Satu bar OHLC dapat berisi harga masuk dan harga stop tanpa mengungkapkan urutan kejadiannya. Gunakan data yang lebih detail atau laporkan batasan konservatif dan optimis. Memilih urutan intrabar yang menang bukanlah penyederhanaan yang netral. Sebuah uji unit yang berguna membangun dua jalur tick dengan OHLC yang identik dan memeriksa bahwa simulator mengenali hasil yang berbeda.
Baca hasil publik dalam lingkup sebenarnya.
Implementasi QuantConnect publik melaporkan pengujian 2016 dengan semesta saham 1,000 dan Sharpe 2.396. Diskusi tersebut mengidentifikasi perbedaan antara versi Python awal dan implementasi C#. [2] Ini merupakan titik awal replikasi yang berguna, tetapi tidak secara independen memverifikasi seluruh studi delapan tahun tersebut.
Pertahankan label IRR pada makalah ini. Alpha regresi bukanlah CAGR, dan rasio keberhasilan portofolio tidak dapat diberi label ulang sebagai tingkat kemenangan per perdagangan tanpa menetapkan penyebutnya. Perbedaan dalam konvensi pengembalian dapat menghasilkan angka tahunan yang berbeda meskipun total pengembalian utama serupa.
Usulan ablasi menggunakan A: ORB hanya harga; B: ORB ditambah ambang batas RVOL; C: ambang batas ditambah peringkat top-20. Bandingkan jumlah peluang, pesanan yang diterima, pengisian aktual, perputaran, dan hasil bersih pada kalender evaluasi terkunci yang sama. Laporkan biaya relatif terhadap R setiap perdagangan, bukan hanya sebagai persentase kecil dari nilai nominal.
Sebelum membandingkan kurva ekuitas akhir, bandingkan semesta yang memenuhi syarat harian, simbol yang dipilih, waktu pemicu, dan kuantitas. Ketidaksesuaian di sini adalah masalah aturan atau data; menyesuaikan slippage untuk membuat pengembalian akhir sesuai akan menyembunyikannya. Reproduksi yang kredibel mendokumentasikan perbedaan yang tersisa dan kemudian mengevaluasi periode yang benar-benar tidak tersentuh.
Kesalahan umum
Peringkat pembukaan pasar berdasarkan informasi akhir hari.
Volume sesi penuh tidak tersedia di 09:35. Menggunakannya untuk memilih perdagangan pembukaan akan menciptakan bias pandangan ke depan.
Menggabungkan pemberhentian yang sempit dengan biaya yang terlalu kecil dan tidak realistis.
Spread atau slippage beberapa sen dapat menghabiskan sebagian besar R. Laporkan distribusi biaya dalam satuan risiko.
Menunda perlindungan dengan satu batang
Membuat stop satu bar setelah entry dapat melewatkan pembalikan langsung tanpa proteksi. Modelkan urutan entry sampai proteksi dengan asumsi pemrosesan aktual.
Daftar periksa sebelum menggunakan metode ini
Centang setiap butir setelah memverifikasinya pada data Anda. Kemajuan disimpan di browser ini; bukan sertifikasi bahwa strategi menghasilkan laba.
Pertanyaan umum
Apakah nilai RVOL yang tinggi berarti investor yang berpengetahuan sedang membeli?
Tidak. Ini mengukur aktivitas perdagangan yang telah selesai secara tidak biasa. Arah dan identitas peserta memerlukan bukti yang berbeda.
Bisakah rentang pembukaan diubah menjadi 15 menit?
Ya, sebagai varian yang diuji secara terpisah. Cocokkan jendela volume historis dengan 15 menit dan perhitungkan entri selanjutnya, pemberhentian yang berbeda, biaya, dan uji coba penelitian tambahan.
Sumber riset
Setiap sumber mendukung definisi atau bukti yang dijelaskan di sampingnya. Pseudocode, contoh sintetis, dan parameter usulan perlu divalidasi secara terpisah.
- A Profitable Day Trading Strategy For The U.S. Equity MarketZarattini, Barbon, Aziz — 16/02/2024. PDF lengkap telah dibaca; Tabel 2 terdapat pada halaman PDF fisik 17, halaman cetak 16. Hasil menggunakan asumsi penulis; tidak ada pengujian balik baru yang dijalankan. Diperiksa: .
- Opening Range Breakout for Stocks in PlayDerek Melchin — QuantConnect. Artikel, contoh kode, dan diskusi implementasi telah dibaca. Kode tersebut tidak dieksekusi. Diperiksa: .
- Relative Volume at TimeTradingView. Dokumen utama yang mendefinisikan volume relatif pada waktu yang sama. Dokumen ini tidak menetapkan profitabilitas ORB. Diperiksa: .
Metode terkait
Catatan risiko
Konten ini mendukung pembelajaran dan perancangan riset, bukan nasihat keuangan. Backtest adalah simulasi historis, tidak menjamin kinerja mendatang, dan tidak menempatkan order sungguhan. Metode dalam pustaka ini tidak otomatis tersedia sebagai fitur aplikasi. Lihat metodologi dan pusat pembelajaran.
Validasi aturan sebelum mempertaruhkan modal nyata
Periksa dukungan aplikasi, data, dan setiap transaksi simulasi; detektor tingkat lanjut mungkin perlu implementasi tersendiri.
Unduh Backtest di App Store