Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

bot grid perdagangan ulasan jujur

Bot grid perdagangan beli setiap langkah turun dan jual setiap langkah naik dalam julat tetap. Lihat bentuk pasaran yang menguntungkan mekanisme ini dan yang memusnahkannya.

Bot grid perdagangan meletakkan tangga pesanan pada selang harga tetap: beli pada setiap anak tangga di bawah harga semasa, jual pada setiap anak tangga di atasnya. Setiap kali pasaran menurun, bot membeli. Setiap kali ia kembali naik, bot menjual apa yang dibeli lebih rendah. Mekanisme ini menuai ayunan, dan ia mengumpul kedudukan terbuka apabila pasaran menjauhi tangga dalam satu arah dan terus bergerak.

Halaman ini membedah jentera tersebut, kemudian mengukur dua bentuk pasaran yang menentukan hasilnya. Setiap panel di bawah adalah pertanyaan tersimpan ke atas harga ekuiti AS sebenar, ditetapkan pada tarikh tetap supaya angka-angka kekal boleh dihasilkan semula.

Cara bot grid perdagangan berfungsi

Tiga tetapan mentakrifkan grid: sempadan atas dan bawah julat, bilangan garisan di dalamnya, dan saiz pesanan pada setiap garisan. Jarak antara garisan diperoleh daripada dua tetapan pertama.

Berikut adalah aritmetiknya, menggunakan nombor bulat yang dipilih untuk kejelasan dan bukannya daripada sebut harga sebenar. Katakan saham didagangkan berhampiran $100 dan pengendali menetapkan grid dari $95 hingga $105 dengan sebelas garisan berjarak satu dolar dan 100 saham setiap garisan. Harga jatuh ke $99 dan pesanan beli yang menunggu dipenuhi. Harga kembali ke $100 dan pesanan jual yang sepadan dipenuhi, menutup pasangan untuk keuntungan kasar $100. Kedua-dua pesanan diaktifkan semula. Tiada apa-apa tentang syarikat yang berubah dalam sejam itu. Kedudukan itu hanya melengkapkan perjalanan pergi balik antara dua anak tangga bersebelahan.

Dua varian muncul dalam projek sumber terbuka yang beredar secara umum. Grid aritmetik menjarakkan garisan dengan jumlah dolar tetap. Grid geometri menjarakkan garisan dengan peratusan tetap, yang mengekalkan keuntungan peratusan setiap perjalanan pergi balik stabil merentas julat yang luas. Dokumentasi juga memisahkan grid neutral, yang bermula kosong dan berfungsi dalam kedua-dua arah, daripada grid panjang, yang mula memegang inventori dan menjual semasa kekuatan.

Bentuk ganjaran patut mendapat satu ayat yang jelas. Keuntungan pada perjalanan pergi balik yang lengkap dihadkan pada satu langkah grid tolak kos. Kedudukan terbuka yang terkumpul apabila harga meninggalkan julat tidak membawa had yang sepadan.

Bentuk pasaran yang diperlukan oleh grid

Grid dibayar oleh perjalanan, bukan oleh arah. Dua saham boleh menamatkan tempoh pada harga yang sama selepas meliputi jarak yang sangat berbeza. Menjumlahkan saiz mutlak setiap pergerakan harian memberikan jumlah jarak yang dilalui. Membahagikan pergerakan bersih dengan jarak itu memberikan nisbah kecekapan, ukuran piawai tentang sejauh mana arah sesuatu laluan itu. Nisbah rendah menerangkan laluan yang bersiar-siar. Nisbah tinggi menerangkan perarakan lurus.

PertanyaanJarak pergerakan berbanding pergerakan bersih: dua belas saham biasa, Jan 2024 hingga Jun 2026
SQL tepat di sebalik setiap nombor
WITH daily AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
           argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS c
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY','KO','PG','JNJ','VZ','MO','XOM','JPM','WMT','NVDA','TSLA','NFLX')
      AND toDate(toTimeZone(window_start, 'America/New_York')) BETWEEN toDate('2024-01-02') AND toDate('2026-06-30')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, dt
),
steps AS (
    SELECT ticker, dt, c,
           c / lagInFrame(c) OVER (PARTITION BY ticker ORDER BY dt) - 1 AS ret
    FROM daily
)
SELECT ticker,
       round(sum(abs(ret)) * 100, 0) AS travel_pct,
       round(abs(argMax(c, dt) / argMin(c, dt) - 1) * 100, 1) AS net_move_pct,
       round(100 * abs(argMax(c, dt) / argMin(c, dt) - 1) / sum(abs(ret)), 1) AS efficiency_pct
FROM steps
WHERE ret > -0.5 AND ret < 0.5
GROUP BY ticker
ORDER BY efficiency_pct
Run this yourself

Baca baris pertama dan terakhir bersama-sama. PG meliputi 527% daripada pergerakan harian kumulatif dan berakhir 0.9% dari tempat ia bermula, kecekapan 0.2%. SPY berada di hujung bertentangan pada 14.3%, menukar 415% perjalanan menjadi pergerakan bersih 59.2%. Tangga grid yang diletakkan pada laluan pertama menemui anak tangganya sendiri berulang kali. Tangga yang sama diletakkan pada laluan kedua akan ditinggalkan.

Tenang dan terikat julat adalah sifat yang berkaitan tetapi berbeza. Saham boleh hanyut ke atas dalam kenaikan harian yang sangat kecil dan masih meninggalkan grid terdampar, yang merupakan salah satu sebab nama yang dikaji dalam literatur anomali turun naik rendah tidak secara automatik menjadi bahan grid.

Mengira perjalanan pergi balik

Kecekapan adalah satu lensa. Pendapatan grid bergantung pada sesuatu yang lebih konkrit: berapa kali harga benar-benar melawat semula suatu tahap. Berlabuh pada penutup pertama setiap tahun kalendar dan mengira sesi yang penutupnya mendarat di sebelah bertentangan sauh itu memberikan bilangan lintasan yang akan ditangkap oleh satu garisan grid. Coca-Cola (KO) adalah subjek di sini, nama pengguna yang besar dan cair seperti yang sering ditampilkan dalam dokumentasi grid.

PertanyaanKO: lintasan paras pembukaan tahun, mengikut tahun kalendar, 2019 hingga 2025
SQL tepat di sebalik setiap nombor
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
           argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS c
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'KO'
      AND toDate(toTimeZone(window_start, 'America/New_York')) BETWEEN toDate('2019-01-01') AND toDate('2025-12-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY dt
),
anchored AS (
    SELECT toYear(dt) AS year, dt, c,
           first_value(c) OVER (PARTITION BY toYear(dt) ORDER BY dt) AS anchor
    FROM daily
),
sided AS (
    SELECT year, dt, c, anchor,
           if(c >= anchor, 1, 0) AS side,
           row_number() OVER (PARTITION BY year ORDER BY dt) AS rn,
           lagInFrame(if(c >= anchor, 1, 0)) OVER (PARTITION BY year ORDER BY dt) AS prev_side
    FROM anchored
)
SELECT year,
       countIf(rn > 1 AND side != prev_side) AS crossing_count,
       count() AS sessions,
       round((argMax(c, dt) / any(anchor) - 1) * 100, 1) AS net_change_pct
FROM sided
GROUP BY year
ORDER BY year
Run this yourself

Dalam 2019 penutup melintasi tahap pembukaannya sendiri 8 kali merentas 252 sesi, menamatkan tahun 17.9% dari tahap itu. Dalam 2025 kiraan adalah 6 lebih 250 sesi, dengan perubahan bersih 13%. Satu garisan, satu saham, dan bahan mentah untuk grid berbeza beberapa kali ganda dari tahun ke tahun tanpa cara untuk mengetahui kiraan tahun yang akan datang terlebih dahulu.

Kebolehubahan itu adalah masalah yang senyap. Pulangan yang diiklankan grid biasanya disebut setiap perjalanan pergi balik yang lengkap, dan bilangan perjalanan pergi balik ditetapkan oleh pasaran dan bukannya oleh tetapan.

Di mana grid rosak

Mod kegagalan mempunyai bentuk yang khusus. Tetapkan grid pada julat, kemudian biarkan pasaran meninggalkannya. Di bawah, siling dan lantai adalah penutup tertinggi dan terendah bagi dua puluh sesi pertama 2024, dipegang rata merentas tiga puluh bulan berikutnya, dengan penutup bulanan penjejak S&P 500 dilukis terhadapnya.

PertanyaanGrid yang ditetapkan pada awal 2024, dan ke mana penjejak S&P 500 bergerak selepas itu
SQL tepat di sebalik setiap nombor
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
           argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS c
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND toDate(toTimeZone(window_start, 'America/New_York')) BETWEEN toDate('2024-01-02') AND toDate('2026-06-30')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY dt
),
opening_20 AS (
    SELECT c FROM daily ORDER BY dt LIMIT 20
),
band AS (
    SELECT min(c) AS grid_low, max(c) AS grid_high FROM opening_20
),
monthly AS (
    SELECT toStartOfMonth(dt) AS month_start, argMax(c, dt) AS close_px
    FROM daily
    GROUP BY month_start
)
SELECT formatDateTime(monthly.month_start, '%Y-%m') AS month,
       round(monthly.close_px, 2) AS spy_close,
       round(band.grid_high, 2) AS grid_top,
       round(band.grid_low, 2) AS grid_bottom
FROM monthly, band
ORDER BY monthly.month_start
Run this yourself

Jalur berjalan dari $467.27 hingga $491.26. Bulan pertama dalam siri ditutup pada $482.92, di dalamnya. Bulan terakhir daripada 30 bulan ditutup pada $746.32, jauh di atas siling, dan carta menunjukkan garisan meninggalkan jalur dan tidak pernah kembali.

Telusuri apa yang dilakukan tangga di sepanjang laluan itu. Meningkat melalui julat, bot menjual inventori anak tangga demi anak tangga, memperoleh satu langkah keuntungan setiap kali. Di atas siling ia memegang tunai dan menonton. Setiap titik kenaikan selanjutnya adalah keuntungan yang tidak lagi disertai oleh pengendali, yang merupakan versi ringan kegagalan.

Versi teruk adalah imej cermin. Harga jatuh melalui lantai dan bot telah membeli pada setiap anak tangga dalam perjalanan ke bawah, jadi ia kini memegang tangga penuh inventori pada kos purata di atas pasaran, dengan setiap langkah tambahan melebarkan kerugian belum realisasi. Julat yang pernah menghasilkan dagangan yang stabil, kecil, dan kelihatan berjaya bertukar menjadi satu kedudukan tertumpu. Pemasaran grid menerangkan ini sebagai bot "tersekat"; pada penyata broker ia adalah pengeluaran terbuka tanpa jalan keluar terbina dalam.

Kos meningkat dengan kiraan dagangan

Grid melengkapkan banyak dagangan kecil, dan setiap satu membayar kos penuh perjalanan pergi balik: spread, ditambah komisen atau yuran pertukaran jika berkenaan. Spread bida-tawaran adalah bahagian yang paling kerap ditinggalkan daripada matematik grid, kerana ia tidak pernah muncul pada penyata sebagai item baris.

Aritmetik ilustrasi adalah cepat. Pada saham $100 dengan spread satu sen, perjalanan pergi balik yang merentasi spread pada kedua-dua belah memberikan kira-kira dua sen, atau 0.02% daripada nosional. Berbanding langkah grid satu dolar, itu kira-kira 2% daripada keuntungan kasar setiap perjalanan. Lebarkan spread kepada lima sen, angka rutin pada nama yang lebih nipis, dan perjalanan yang sama memberikan sepuluh sen berbanding satu dolar kasar, atau 10%. Mengecilkan grid kepada langkah sepuluh sen untuk menangkap lebih banyak ayunan mengurangkan kasar setiap perjalanan kepada sepuluh sen sambil meninggalkan kos tidak berubah, dan spread lima sen kini menggunakan keseluruhan dagangan.

Hubungan itu menetapkan lantai di bawah jarak grid yang berguna: langkah mesti kekal besar berbanding kos perjalanan pergi balik, dan semakin ketat grid, semakin banyak pendapatannya menjadi milik venue dan bukannya pengendali.

Mengapa ujian belakang memuji bot grid

Strategi grid menghasilkan ujian belakang yang luar biasa menarik, dan empat sebab struktur menjelaskan sebahagian besarnya.

  1. Pemilihan julat dengan pengetahuan kemudian. Sempadan yang dipilih selepas melihat data akan mengandungi data. Grid yang dipasang pada tempoh yang terikat julat akan menunjukkan kadar kejayaan yang tinggi pada tempoh itu.
  2. Tangga yang tidak ditutup. Ujian yang berhenti pada tarikh akhir yang dipilih sering mengira perjalanan pergi balik yang direalisasikan sambil melayan inventori baki dengan murah hati. Perakaunan yang jujur menandakan kedudukan terbuka kepada pasaran pada hari terakhir dan memasukkan kerugian itu dalam keputusan.
  3. Andaian pengisian. Pesanan menunggu yang disimulasikan diisi apabila harga menyentuhnya. Baris gilir sebenar tidak selalu diisi pada sentuhan, dan perjalanan yang gagal diisi adalah secara tidak seimbang yang menguntungkan dalam pasaran pantas.
  4. Ketumpatan parameter. Sempadan, kiraan garisan, jarak, dan saiz pesanan memberikan empat tombol ke atas satu siri harga, yang cukup untuk memuatkan hampir mana-mana tetingkap sejarah.

Kiraan lintasan di atas adalah pengimbang kepada keempat-empatnya. Ia datang daripada sejarah harga sahaja, tanpa tetapan dilampirkan, dan ia berbeza dari tahun ke tahun dengan cara yang tidak dikawal oleh pilihan parameter. Sesiapa yang menilai tuntutan grid boleh bertanya satu soalan mengenainya: berapa banyak perjalanan pergi balik yang lengkap bergantung pada ini, dan dari mana datangnya kiraan itu? Tempoh amalan pada simulator, dengan tangga terbuka ditandakan kepada pasaran pada akhir, menjawabnya dengan lebih jujur daripada carta perjalanan yang direalisasikan.

FAQ

Adakah bot grid perdagangan benar-benar menjana wang?

Grid memperoleh keuntungan terhad pada setiap perjalanan pergi balik yang lengkap dan membawa kedudukan terbuka tanpa had apabila harga meninggalkan julatnya. Sama ada perjalanan yang direalisasikan melebihi kedudukan terbuka dalam mana-mana tempoh bergantung pada berapa banyak pasaran berayun dalam julat itu, yang merupakan sifat pasaran dan bukannya perisian.

Apakah keadaan pasaran yang sesuai untuk bot grid?

Mekanisme ini dibina untuk harga yang berulang kali melawat semula tahap yang sama: jumlah jarak yang dilalui tinggi berbanding pergerakan bersih. Dalam panel dua belas nama di atas, nisbah kecekapan berjalan dari 0.2% pada hujung bersiar-siar hingga 14.3% pada hujung arah, dan mekanisme tangga menemui anak tangganya sendiri hanya pada hujung pertama.

Apa yang berlaku apabila harga menembusi julat grid?

Di atas julat bot telah menjual inventori dan duduk dalam tunai manakala pasaran terus tanpa ia. Di bawah julat ia memegang setiap anak tangga yang dibeli dalam perjalanan ke bawah, pada kos purata di atas harga semasa, dan setiap penurunan selanjutnya melebarkan kerugian belum realisasi itu.

Bagaimanakah perdagangan grid berbeza daripada purata kos dolar?

Kedua-duanya membeli lebih banyak apabila harga jatuh, dan di situlah persamaan berakhir. Purata kos dolar menambah jumlah tetap pada jadual tetap tanpa peraturan keluar dan tanpa sempadan atas. Grid membeli dan menjual pada pencetus harga dalam julat yang dipilih terlebih dahulu, dan kelakuannya berubah sepenuhnya sebaik harga meninggalkan julat itu.

Adakah jarak grid yang lebih ketat menghasilkan lebih banyak pendapatan?

Jarak yang lebih ketat meningkatkan bilangan perjalanan pergi balik dan mengurangkan keuntungan kasar pada setiap satu, manakala kos perjalanan pergi balik kekal sama. Melepasi titik yang ditetapkan oleh spread, perjalanan tambahan menolak daripada jumlah keseluruhan dan bukannya menambah kepadanya.


Setiap angka di atas datang daripada pertanyaan tersimpan dan berversi ke atas harga ekuiti sebenar; buka SQL di bawah mana-mana panel untuk menyemaknya, atau ukur perjalanan berbanding pergerakan bersih pada senarai nama anda sendiri di terminal Strasmore.

#grid trading#trading bots#automation#mean reversion#market data