Langsung ke konten
Semua strategi

Strategi

BTC Cross-Session Momentum Carryover — Long-Short, Instrumen Tunggal OHLCV: Arah Pergerakan Sesi ASIA Memprediksi Pergerakan Sesi US; Perdagangkan Sesi US dalam Arah Tersebut ONLY Ketika Pergerakan Asia Besar, Flat Semalam (BINANCE BTCUSDT USD-M, Bar 1H, Intraday, 2-Parameter)

Hasil: Ditinggalkan

BtcAsiaToUsSessionCarryoverLS

Terukur dengan baik: 594 trade sepanjang riwayat penuh 2020-2026 1H, long/short seimbang (293/301), eksekusi bersih (594 diberi sinyal, 594 dikirim, tanpa drop)

Hipotesis

Strategi INTRADAY OHLCV murni LONG-SHORT, SINGLE-INSTRUMENT pada BTCUSDT.BINANCE USD-M perpetual dalam keluarga yang benar-benar berbeda dari semua yang tertunda atau mati di sini — ini NOT strategi tren/breakout (momentum dual-TF, SuperTrend, Donchian, ORB), NOT strategi mean-reversion/fade (keduanya mati), dan NOT sinyal feed tambahan (semua rugi bersih). Ini mengeksploitasi SESSION LEAD-LAG intraday: nada direksional yang ditetapkan selama sesi partisipasi rendah ASIA (00:00-08:00 UTC) cenderung PERSIST ke……Tampilkan lebih banyakTampilkan lebih sedikit

Strategi INTRADAY OHLCV murni LONG-SHORT, SINGLE-INSTRUMENT pada BTCUSDT.BINANCE USD-M perpetual dalam keluarga yang benar-benar berbeda dari semua yang tertunda atau mati di sini — ini NOT strategi tren/breakout (momentum dual-TF, SuperTrend, Donchian, ORB), NOT strategi mean-reversion/fade (keduanya mati), dan NOT sinyal feed tambahan (semua rugi bersih). Ini mengeksploitasi SESSION LEAD-LAG intraday: nada direksional yang ditetapkan selama sesi partisipasi rendah ASIA (00:00-08:00 UTC) cenderung PERSIST ke sesi likuiditas lebih tinggi US (13:00-21:00 UTC), karena aliran US/institusional melanjutkan pergerakan tersebut alih-alih membalikkan-nya. Setiap hari UTC, tanda dan ukuran imbal hasil sesi Asia diukur; ketika pergerakan Asia LARGE (sinyal direksional nyata, bukan noise), strategi memasuki sesi US dalam arah SAME dan hanya menahan untuk sesi tersebut, menjadi FLAT semalam (tanpa eksposur pendanaan, tanpa gap semalam, tanpa risiko tren multi-hari). Ini berbeda dari BTC opening-range breakout yang tertunda (yang memperdagangkan rentang BREAKOUT jam-jam pertama) — di sini tidak ada breakout; ini adalah CARRYOVER direksional dari pergerakan sesi yang sudah mapan ke sesi yang terpisah dan lebih akhir. Ini mempertahankan invarian yang dapat bertahan hidup (instrumen tunggal, OHLCV murni dengan riwayat penuh 2020-2026 1H, long-short, tanpa feed tambahan sesuai pelajaran rugi-bersih, tanpa kaki kedua sesuai L69) dan dibangun untuk gerbang statistik: kadansa hampir harian menghasilkan jumlah perdagangan LARGE (>100/thn) yang membersihkan tripwire keterukuran dan memperketat estimasi Sharpe deflasi, dan hanya 2 FREE parameter (ambang batas entri pergerakan Asia, kelipatan stop ATR) meminimalkan penalti deflasi best-of-225-trial. Ini juga mengisi bucket horizon pendek yang kurang terwakili (8.6% vs 10%).

Iterasi 2 memperbaiki kegagalan Layer-2 secara verbatim: keenam skenario sintetis memunculkan 'TypeError: _day_of() takes 1 positional argument but 2 were given'. Harness Layer-2 mengikat ulang setiap atribut callable pada proxy sebagai metode BOUND, sehingga helper @staticmethod _day_of/_hour_of menerima instance sebagai argumen pertama dan bar sebagai argumen kedua. Perbaikan: keduanya kini menjadi metode instance biasa (self, bar) — call site sudah menggunakan self._day_of(bar)/self._hour_of(bar), jadi tidak……Tampilkan lebih banyakTampilkan lebih sedikit

Iterasi 2 memperbaiki kegagalan Layer-2 secara verbatim: keenam skenario sintetis memunculkan 'TypeError: _day_of() takes 1 positional argument but 2 were given'. Harness Layer-2 mengikat ulang setiap atribut callable pada proxy sebagai metode BOUND, sehingga helper @staticmethod _day_of/_hour_of menerima instance sebagai argumen pertama dan bar sebagai argumen kedua. Perbaikan: keduanya kini menjadi metode instance biasa (self, bar) — call site sudah menggunakan self._day_of(bar)/self._hour_of(bar), jadi tidak ada hal lain yang berubah dan perilakunya di bawah engine identik. Kedua, perubahan defensif pada jalur helper yang sama: timestamp yang dilaporkan harness (1735690980000) berada dalam MILLISECONDS, sedangkan engine memasok nanodetik; kode lama tanpa syarat membaginya dengan 1e9, yang di bawah harness akan meruntuhkan setiap bar sintetis ke jam/hari yang sama dan membekukan logika sesi (kegagalan Layer-2 laten kedua setelah TypeError teratasi). _epoch_secs() baru menormalisasi berdasarkan besaran (ns/us/ms/s) dan menjadi no-op untuk bar nanodetik nyata, sehingga Layer-3 dan backtest nyata tidak terpengaruh. Bentuk sinyal, aturan entry/exit, ATR, sizing, import, dan struktur kelas selain itu tidak berubah dari kode yang sudah lolos Layer 1.

Premis ekspektasi negatif pada sampel riwayat penuh yang terukur dengan baik. Dari 594 trade sepanjang 2020-2026, session-carryover Asia->US merugi: profit_factor 0.937 (<1), total_return -9.81%, ekspektasi -$17.34/trade, Sharpe -0.15 dengan CI [-0.760, 0.458] melintasi nol, information_ratio -0.76. Satu-satunya tahun positif adalah 2020 (+15.3%); setiap tahun setelahnya negatif atau datar (2021 -8.1, 2022 -5.8, 2025 -10.8) dengan Sharpe bergulir cenderung ke -8.3 pada 2026 — hipotesis “pergerakan besar Asia memprediksi pergerakan US” sama sekali tidak terbukti. Strategi ini juga marginal terhadap biaya: avg_trade_return_pct 0.110% berada di bawah batas bawah 0.15% Binance USD-M (L22). Dengan hanya 2 parameter bebas dan keunggulan arah yang negatif secara neto, tuning tidak dapat membalik tanda keunggulan yang tidak ada. Ini adalah ciri net-loser fee_edge/no_edge — tidak layak menghabiskan 2 jam untuk optimisasi.

Implementasi

BTCUSDT.BINANCE USD-M perpetual, bar 1H, sesi long-short intraday lead-lag. Setiap hari UTC imbal hasil sesi Asia (00:00-08:00 UTC buka-ke-tutup) diakumulasikan secara bertahap dan dinormalisasi oleh standar deviasi dari 30 imbal hasil Asia terakhir (fallback dispersi berbasis ATR saat riwayat tersebut menghangat), menghasilkan z-score invarian skala kontinu yang dikembalikan setiap bar. Pada jam buka sesi US (13:00 UTC) strategi memasuki arah SAME sebagai pergerakan Asia ketika |z| >= entry_z, paling banyak satu entri per hari kalender. Strategi keluar pada jam tutup sesi US (20:00 UTC) sehingga buku bersifat FLAT semalam (tanpa pendanaan, tanpa risiko gap), atau lebih awal pada stop berbasis ATR (stop_atr_mult x ATR, dibatasi minimum di min_stop_pct). Ukuran mempertaruhkan risk_frac ekuitas di seluruh jarak stop, dibatasi maksimum di max_notional_frac x bruto ekuitas. Semua state (ATR, imbal hasil sesi, deque dispersi) adalah O(1) per bar; perputaran hari ditambatkan pada timestamp bar itu sendiri, bukan penghitung bar.

Hasil Verifikasi

CLEAN RESTART 2026-09-04 — riwayat verdict dan catatan pembelajaran dari run ini telah dihapus dan dimulai ulang dari verifikasi. Penghentian sebelumnya berasal dari pipeline, bukan dari pasar: harness Layer-2 salah mengikat helper @staticmethod (telah diperbaiki), QA menerbitkan verdict performa terminal pada smoke test yang belum dioptimalkan (dihapus — QA kini hanya menilai kebenaran), dan timeout sandbox disebabkan oleh kelangkaan slot backtest (telah diperbaiki). Hipotesis dan kode strategi tidak berubah. Verifikasi kode berdasarkan kualitasnya; performa ditentukan kemudian oleh backtest penuh dan optimizer.

Tambahkan _param_bounds = {entry_z: [...], stop_atr_mult: [...]} yang sesuai dengan clamp kode; pertahankan semua konstanta jam sesi/ATR/risiko di luar parameter tersebut.

Konfigurasi mendeklarasikan NO _param_bounds meskipun hipotesis bertumpu pada 'hanya 2 FREE parameter' untuk meminimalkan penalti deflasi best-of-225-trial. Tanpanya, pengoptimal tidak memiliki permukaan eksplisit yang mengikatnya ke {entry_z, stop_atr_mult}, mengikis disiplin 2-parameter. Bukan cacat kebenaran.

Atur us_exit_hour=21 untuk seluruh jendela, atau dokumentasikan 20:00 sebagai sesuatu yang disengaja.

Hipotesis menamai sesi US 13:00-21:00 UTC namun us_exit_hour adalah 20, memaksa flat satu jam lebih awal. Kecil, tidak mengubah mekanisme atau invarian flat-semalam.

Tinjauan Backtest

Sharpe
-0.15
Total Return
-9.81%
Max Drawdown
23.40%
Total Trade
594
Rasio Menang
44.8%
Faktor Profit
0.94

Terukur dengan baik: 594 trade sepanjang riwayat penuh 2020-2026 1H, long/short seimbang (293/301), eksekusi bersih (594 diberi sinyal, 594 dikirim, tanpa drop)

Keluarga lead-lag sesi intraday yang benar-benar berbeda; flat semalam, korelasi benchmark rendah (0.025), tanpa ketergantungan feed tambahan

Net loser: profit_factor 0.937 (<1), total_return -9.81%, ekspektasi -$17.34/trade, Sharpe -0.15 (CI melintasi nol), information_ratio -0.76

avg_trade_return_pct 0.110% berada di bawah batas bawah biaya 0.15% Binance USD-M — marginal terhadap biaya bahkan tanpa memperhitungkan ekspektasi negatif

Hanya 2020 (+15.3%) yang secara bermakna positif; setiap tahun berikutnya negatif atau datar (2025 -10.8%), Sharpe bergulir cenderung ke -8.3 pada 2026 — premis session-carryover tidak memiliki keunggulan yang persisten

return_kurtosis 78.6 — pergerakan yang tersendat (misalnya hari -6.07% pada 2023-08-29), bukan keunggulan yang mulus

Riwayat Iterasi

Verifikasi gagal (Layer 2 — skenario sintetis): Parameter yang digunakan: ['entry_z', 'min_bars', 'risk_frac', 'atr_period', 'min_notional', 'min_stop_pct', 'min_vol_days', 'us_exit_hour', 'asia_end_hour', 'stop_atr_mult', 'us_entry_hour', 'asia_start_hour', 'max_notional_frac', 'vol_lookback_days'] Periksa bahwa __init__ menetapkan semua atribut dari self.parameters.get(). - steady_uptrend: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (timestamp bar:……Tampilkan lebih banyakTampilkan lebih sedikit

Verifikasi gagal (Layer 2 — skenario sintetis): Parameter yang digunakan: ['entry_z', 'min_bars', 'risk_frac', 'atr_period', 'min_notional', 'min_stop_pct', 'min_vol_days', 'us_exit_hour', 'asia_end_hour', 'stop_atr_mult', 'us_entry_hour', 'asia_start_hour', 'max_notional_frac', 'vol_lookback_days'] Periksa bahwa __init__ menetapkan semua atribut dari self.parameters.get(). - steady_uptrend: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (timestamp bar: 1735690980000) - steady_downtrend: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (timestamp bar: 1735690980000) - flat_ranging: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (timestamp bar: 1735690980000) - volatility_spike: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (timestamp bar: 1735690980000) - zero_volume: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (timestamp bar: 1735690980000) - price_gap: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (timestamp bar: 1735690980000)

Stratmill adalah alat riset dan paper trading, bukan nasihat keuangan atau broker. Hasil backtest dan paper trading bersifat hipotetis. Trading mengandung risiko kerugian.