4 poin oleh GN⁺ 2023-07-01 | 1 komentar | Bagikan ke WhatsApp
  • Contoh proyek pribadi membangun bot trading ritel dengan bahasa Go yang memantau lebih dari 5.500 saham yang tercatat di NYSE dan NASDAQ secara real-time serta melakukan jual-beli otomatis
  • Awalnya hanya mampu menghasilkan kerugian dengan cepat, tetapi setelah bertahun-tahun trial and error, berkembang hingga mencapai titik impas, dan sesekali bahkan menghasilkan profit
  • Terdiri dari tiga komponen inti: penyedia data, aplikasi Go, dan broker; memproses lebih dari 60 ribu event per detik di memori saat pasar dibuka dan ditutup
  • Pelajaran dari praktik nyata seperti pengujian sistem lewat pembelian acak, pembuatan candlestick mandiri berbasis tick bar, dan peralihan ke in-memory menjadi inti utama
  • Menunjukkan kompleksitas dan kemungkinan nyata dalam membangun platform trading pribadi di area pertemuan antara keuangan, pemrograman, dan analisis data

Latar Belakang dan Motivasi Proyek

  • Berawal dari ide trend-following untuk mengeksekusi dan mengelola sekitar 500 trading jangka pendek secara otomatis di seluruh pasar saham, sambil mengambil profit kecil dari tiap transaksi
  • Otomatisasi dimulai karena keterbatasan trading manual
    • Risiko menginvestasikan seluruh dana pada satu saham sangat tinggi, tetapi memantau puluhan taruhan jangka pendek secara bersamaan berada di luar kemampuan manusia
    • Masuk dan keluar posisi dengan cepat hanya memungkinkan pada saham dengan likuiditas tinggi, dan pembelian dalam jumlah kecil diperlukan agar eksekusi cepat
  • Manajemen posisi juga menjadi tantangan besar; mencocokkan timing masuk dan keluar pada lebih dari 25 taruhan simultan sangat kompleks
  • Ada masalah skalabilitas: semakin besar modal, semakin banyak pula jumlah taruhan yang harus dilakukan
  • Perlu menghitung biaya transaksi seperti spread, komisi, slippage, biaya API, dan pajak dengan cepat untuk menilai kelayakan sebuah transaksi

Struktur Solusi

  • Mengembangkan alat otomatis selama bertahun-tahun untuk memantau lebih dari 5.500 saham di NYSE dan NASDAQ secara real-time serta mengambil keputusan trading cepat
  • Berjalan di sistem gaming berkinerja tinggi berbasis Linux: 16 core, RAM 128GB, storage NVMe 8TB, internet 1Gbps
  • Tiga Komponen Inti

    • Data Provider (Massive.com): mencakup data historis dan real-time untuk seluruh pasar, serta menyediakan API dan dokumentasi yang ramah pengembang dan intuitif. Model harga sederhana yang memungkinkan akses ke seluruh data pasar tanpa batasan artifisial
    • Aplikasi Go: mesin inti yang mengumpulkan dan menafsirkan feed data, mengambil keputusan trading yang telah dihitung, lalu mengirim order beli dan jual ke API broker
    • Broker (Interactive Brokers): bertanggung jawab atas eksekusi order dengan menyediakan API sederhana
  • Alasan Memilih Bahasa Go

    • Industri hedge fund mengandalkan C++ dan Python, tetapi karena telah menggunakan Go selama bertahun-tahun dan bahasa ini menunjukkan kecocokan sangat baik untuk pemrosesan data stream dan integrasi API, Go dipilih

Fitur Utama Aplikasi Go

  • Data Ingestion Loop

    • Terus-menerus mengumpulkan data real-time untuk lebih dari 5.500 saham melalui Massive.com
    • Awalnya mencoba menyimpan data ke database, tetapi saat pembukaan dan penutupan pasar tidak mampu menangani lebih dari 60 ribu event per detik, sehingga sepenuhnya beralih ke pendekatan in-memory
  • Build Our View Of The Stock Market

    • Membangun tampilan in-memory real-time untuk seluruh pasar dari data yang dikumpulkan (melacak harga, spread, aktivitas trading, dll.)
    • Dapat menangkap dan memperdagangkan peluang lebih dulu daripada berita arus utama
    • Dapat mengakses aktivitas trading premarket, pasar reguler, dan after-hours
  • BUY Signal Loop

    • Saat peluang terdeteksi, mengirim permintaan order beli ke API broker
    • Bukan sekadar trigger sederhana; melakukan perhitungan awal seperti estimasi profit berbasis spread, penentuan jumlah saham yang diperlukan, serta memasukkan komisi dan pajak
    • Mencakup logika untuk situasi seperti perubahan harga, partial fill, dan pembatalan order
  • Position Tracking System

    • Loop yang terus memantau posisi yang dimiliki, melacak untung-rugi dengan membandingkan tabel posisi dan harga saat ini secara real-time
    • Melalui GUI, alasan trigger trading, status saat ini, dan titik jual dapat diperiksa
    • Berperan penting dalam menyempurnakan logika BUY dan SELL
  • SELL Signal Loop

    • Saat profit yang baik atau kerugian berlebihan terdeteksi, mengeksekusi order jual melalui API broker
    • Mencakup logika kompleks seperti update harga untuk saham yang bergerak cepat dan penanganan partial fill

Antarmuka Web dan Screenshot

  • Melalui antarmuka web bawaan, semua struktur data dapat dijelajahi, data divisualisasikan, serta alasan trigger trading dan status saat ini dapat diperiksa
  • Layar gambaran seluruh pasar yang menampilkan harga, spread, dan lainnya untuk lebih dari 5.500 ticker
  • Pada halaman simbol individual (misalnya Tesla TSLA), menampilkan tick bar dan informasi terkait
  • Antarmuka yang menunjukkan rasio menang/kalah dan posisi terbuka saat ini (pada sesi contoh mencatat kerugian sekitar -$900)
  • Layar yang menampilkan metadata dan chart trading real-time (titik beli ditandai dengan garis oranye)
  • Layar log konsol yang mencatat event real-time (order beli dan jual)

Pengembangan Strategi dan Backtesting

  • Menganggap aplikasi Go, strategi, dan backtesting sebagai tiga elemen inti yang terpisah
  • Sebagian besar diskusi berfokus pada strategi (mean reversion, trend following, regresi linear, dll.) dan backtesting, tetapi praktik implementasi strategi dan logistik dalam trading intraday real-time cenderung diabaikan
  • Melakukan eksplorasi strategi dan backtesting dengan Python menggunakan data historis transaksi dan quote yang luas dari Massive.com (alasan penggunaan storage NVMe 8TB)
  • Backtesting diibaratkan seperti "mengemudi maju sambil melihat kaca spion", tetapi merupakan sarana validasi yang bernilai sebagai dasar penilaian untuk spread, pajak, komisi, serta titik masuk dan keluar
  • Insight dari pengembangan strategi dan backtesting diubah menjadi logika BUY Signal Loop

Contoh Kode

  • Mencakup pseudocode tingkat tinggi dan sampel kode Go nyata (aplikasi sebenarnya berukuran sekitar 7.000 baris)
  • Struktur data utama: TrackedSymbols (map seluruh simbol, flag aktivasi trading, global lock), Symbol (data transaksi dan quote mentah, Aggregate, Position, dll.), TradeEvent, QuoteEvent, Aggregate, Position
  • Struktur main loop
    • Mengumpulkan data transaksi dan quote melalui koneksi WebSocket serta mem-parsing event
    • Menyimpan ke map simbol lalu menggabungkan data transaksi + quote menjadi Aggregate
    • Mengirim sinyal ke logika beli dan jual melalui channel Go
    • Menyediakan fungsi untuk melihat seluruh simbol, posisi, dan custom watchlist lewat server HTTP

Pelajaran Utama (Lessons Learned)

  • Memahami Abstraksi

    • NYSE dan NASDAQ bukan satu sistem tunggal, melainkan sistem terdistribusi besar yang terdiri dari lebih dari 19 bursa
    • Data candlestick adalah abstraksi besar yang dibuat dari data transaksi mentah (tick), dan pemahaman mendalam atasnya sangat penting
    • Aturan berbeda berlaku untuk setiap sesi waktu trading pasar seperti premarket, pasar reguler, dan after-hours
  • Manajemen Order

    • Keberhasilan trading tidak hanya berasal dari pengiriman order beli dan jual sederhana, tetapi juga dari position sizing awal, kemampuan jual-beli cepat, pengelolaan lebih dari 25 posisi secara bersamaan, perhitungan pajak dan komisi, manajemen slippage, pemantauan status order, dan lainnya
  • Edge Case

    • Ada banyak edge case seperti eksekusi, pelacakan, modifikasi, pembatalan, partial fill, dan penghentian trading pasar; jika terlewat, dapat menyebabkan kerugian finansial
    • Pengujian dengan paper trading (simulasi) alih-alih dana sungguhan sangat penting
    • Pernah mengalami membeli saham yang melonjak 40% di premarket pada puncaknya lalu anjlok, dan karena gagal menyesuaikan order jual, mengalami kerugian 40% dalam beberapa menit. Premarket dan after-hours memiliki aturan berbeda dari pasar reguler, sehingga volatilitas ekstrem dapat terjadi dengan cepat
  • Menggunakan Pembelian Acak

    • Yang lebih penting daripada menemukan strategi rahasia adalah menguji fungsi inti sistem
    • Menjalankan 1.000 pembelian saham acak per hari selama 1 minggu dapat memvalidasi logika beli dan jual, manajemen partial fill, logika pembatalan, serta sistem pelacakan posisi secara efektif
    • Mengintegrasikan pembelian acak sebagai proses pengujian di akun paper trading merupakan cara efisien untuk memvalidasi berbagai aspek sistem sekaligus
  • Tick Bar vs Time Bar

    • Bar candlestick yang disediakan broker mencakup frame waktu tetap (misalnya 30 detik), tetapi saat pasar bergerak tajam, muncul masalah karena dalam waktu yang sama 100 transaksi dan ribuan transaksi bercampur
    • Dengan data tick dan quote mentah, membangun bar sendiri berbasis jumlah transaksi, memberikan resolusi jauh lebih tinggi pada periode aktivitas tinggi seperti pembukaan dan penutupan pasar, serta memungkinkan penambahan metrik kustom seperti spread
  • Peralihan ke In-Memory

    • Pendekatan database awal tidak mampu menangani lonjakan aktivitas besar saat pembukaan dan penutupan pasar
    • Beralih sepenuhnya ke pendekatan in-memory menggunakan map besar dengan mutex lock, sehingga menyelesaikan masalah skalabilitas
    • Menyimpan struktur yang berisi seluruh data dengan melakukan dump ke file gob terkompresi, sehingga dapat dimuat ulang saat restart. Ukurannya tumbuh menjadi lebih dari 40GB dalam sehari, dan patch build Go diperlukan untuk mendukung dump gob sebesar ini
    • Setelah pernah kehilangan seluruh data status saat live karena pemadaman listrik, penggunaan uninterruptible power supply (UPS) menjadi wajib
  • Kompleksitas dan Rasa Kesepian

    • Proyek ini jauh lebih menantang dan memakan waktu daripada perkiraan, berkembang dari hobi kecil menjadi obsesi serius
    • Karena yang terpenting hanyalah meningkatkan saldo akun, prosesnya bisa terasa sepi dan disertai roller coaster emosional yang ekstrem
  • Menggabungkan Go dan Python

    • Sistem trading ditulis dengan Go, sementara eksplorasi data menggunakan pendekatan hybrid yang memanfaatkan luasnya library data science Python
  • Menggunakan PC Pribadi

    • PC desktop modern, jika dioptimalkan dengan cukup, cukup kuat untuk menangani pemantauan real-time seluruh pasar saham
  • Menggunakan ChatGPT

    • Beralih dari cara lama yang bergantung pada pencarian dan membaca ketika tidak tahu cara menyelesaikan masalah, menjadi menjelaskan masalah kepada ChatGPT, menanyakan solusi, bahkan meminta pembuatan kode; terasa menghasilkan peningkatan produktivitas 3 kali lipat

Pengalaman Event Pasar

  • Dengan sistem sendiri, dapat mendeteksi berbagai anomali pasar seperti fenomena meme stock, event IPO besar, booming dan crash pasar, berita The Fed, serta kenaikan suku bunga, dan melihatnya sebelum berita muncul
  • Pengalaman seperti memiliki kursi barisan depan untuk menyaksikan event pasar berlangsung di depan mata

1 komentar

 
GN⁺ 2023-07-01
Komentar Hacker News
  • Saya pernah bekerja di HFT cukup lama, dan seluruh bidang ini benar-benar menarik; senang juga melihat penulis asli merasakan keseruan yang serupa
    Alasan platform itu sendiri sering terlewat dalam diskusi adalah karena trading merupakan ranah tempat teknologi tingkat tinggi, kompleksitas, regulasi ketat, dan persaingan ekstrem bertumpuk sekaligus
    Membangun sistem input order, sistem manajemen risiko, dan sistem pelacakan posisi saja sudah merupakan pencapaian besar, tetapi bagi perusahaan trading itu sudah mendekati biaya untuk ikut bermain
    Karena itu orang-orang membicarakan strategi. Platform dasarnya sudah dimiliki semua orang, dan sekarang tahapnya mencari cara menghasilkan uang darinya
    Selain itu, para pelaku pasar juga tidak memainkan permainan yang sama. Di HFT, kami bersaing memangkas nanodetik di FPGA dan mengurangi mikrodetik di jaringan nirkabel New Jersey demi alpha yang bertahan beberapa detik, tetapi bank lebih memedulikan pemilu dan geopolitik daripada cuaca di Carteret. Kalau hujan, hari itu jaringan microwave tidak jalan
    Di tengah-tengahnya ada banyak strategi yang membidik alpha yang bertahan dari beberapa jam hingga beberapa minggu, sehingga sulit juga membicarakannya dengan bahasa yang sama di forum publik. Meski begitu, ini dunia yang menarik dan kadang saya merindukannya

    • Platform bukan hanya biaya untuk ikut bermain; justru bagian itu lebih lurus jalurnya untuk dibangun. Bahkan di garis depan latensi, biasanya yang dilakukan adalah mendorong sampai batas anggaran, bukan harus menemukan sesuatu yang sama sekali baru
      Sebaliknya, strategi adalah wilayah yang membutuhkan penemuan. Ada beberapa strategi yang sudah dikenal luas dan masih menguntungkan, tetapi umumnya sudah diambil oleh perusahaan-perusahaan terbesar, sedangkan sisanya adalah proses eksplorasi. Beberapa strategi hanya menghasilkan untung pada fase pasar yang sangat singkat
      Saya juga kadang merindukannya, tetapi bidang ini sudah terlalu banyak terkonsolidasi sehingga sekarang sebagian besar menjadi dunianya perusahaan besar
    • Jujur saja, ini terlihat lebih tidak bermakna daripada cryptocurrency
    • Sampelnya memang cuma satu, tetapi setelah bekerja dengan kontrak 2 tahun di perusahaan trading, menjalankan bisnisnya ternyata bukan hanya soal kemampuan teknis
    • Saya benar-benar setuju 100%. Saya sudah membaca hampir semua buku yang bisa saya dapatkan, tetapi tidak ada yang membicarakan platform, dan sudut pandang ini sangat masuk akal
      Sebagian besar hal seperti ini sepertinya tersilo di dalam masing-masing perusahaan dan tidak dibicarakan di luar
      HFT memainkan permainan yang sepenuhnya berbeda. Saya pernah membaca tentang arsitektur bursa dan struktur kabel fisiknya; sementara saya menerima data dari SIP, HFT terhubung langsung ke bursa [1]
      Saya trading dalam hitungan detik, sedangkan HFT, seperti yang Anda katakan, trading dalam hitungan mikrodetik, jadi tidak bisa dibandingkan. Dalam beberapa hal, mungkin justru bagus saya tidak bersaing langsung dengan mereka. Atau mungkin saya memang sedang bersaing, tetapi masih bisa menghasilkan sedikit uang
      [1] https://www.researchgate.net/figure/Latencies-in-the-Electro...
    • Saya berada di sisi trading frekuensi menengah. Polanya menghitung banyak kondisi pasar dan mengirim order paling banyak beberapa per menit. Saya ingin lebih memahami dunia HFT
      Pada dasarnya, saya penasaran apakah itu membuat trading frekuensi menengah menjadi lebih cepat, atau ada keuntungan spesifik seperti mendapatkan prioritas dalam antrean order
  • Kalau ada pertanyaan tentang proyek ini, saya bisa menjawab. Awalnya sebagai side project, lalu saya menjadi benar-benar terobsesi
    Sistemnya sendiri tidak banyak yang rahasia; intinya adalah memiliki platform yang kokoh tempat strategi bisa ditancapkan
    Mungkin saja saya akan merilisnya sebagai open source, tetapi untuk itu saya harus merapikan dulu berbagai macam hack yang saya masukkan

    • Ini mungkin menarik untuk dilihat: https://www.techtrader.ai/#wall
      Tech Trader diperkenalkan sebagai sistem trading sepenuhnya otonom yang berjalan dalam trading nyata selama lebih dari 10 tahun tanpa campur tangan manusia atau pembaruan
      Penjelasannya, berbeda dari sistem algoritmik tradisional, sistem ini bukan berbasis kuantitatif, arbitrase statistik, atau frekuensi tinggi, melainkan terlihat seperti cara manusia melihat saham sambil memanfaatkan disiplin dingin mesin dan konsentrasi tanpa batas
      Sejak diluncurkan pada Desember 2012, sistem ini disebut telah melakukan trading otomatis penuh dengan modal nyata, dan pembuatnya adalah seorang developer otodidak yang memakai nickname game pftq
    • Tulisan yang bagus. Saya juga mengerjakan proyek serupa dengan Go, tetapi hanya menggunakan data candle per menit, bukan tick real-time
      Saya penasaran apakah Anda bisa berbagi pendekatan untuk menancapkan berbagai strategi. Sistem strategi bergaya plugin bisa mencakup banyak lapisan sehingga cepat menjadi rumit
      Untuk backtest, apakah Anda menyimpan dan memutar ulang semua data bid/ask dan tick, atau hanya memakai data agregat historis?
    • Saya sudah beberapa tahun menjadikan algorithmic trading sebagai side project, tetapi semuanya saya lakukan melalui TD Ameritrade. Quote dan data lain saya dapatkan gratis berkat akun tersebut, dan saya juga memakai data gratis lain secara terpisah
      Setelah membaca tulisan ini, saya sempat ingin mencoba konfigurasi WebSocket dengan Polygon, tetapi saya melihat paket pertama yang memiliki fitur WebSocket adalah 29 dolar, dan paket Advanced dengan data real-time biayanya 200 dolar per bulan
      Data real-time dengan panggilan API tanpa batas terlihat cukup bagus, tetapi strategi saya pada ukuran dana umum tingkat menangnya maksimal sekitar 78%, jadi sulit membenarkan biaya 200 dolar per bulan
      Saya ingin tahu paket mana yang Anda pakai, serta apa kelebihan dan kekurangan paket itu. Kalau ingin menjawab lewat email, ada di profil saya
    • Saya penasaran apakah Anda punya email. Saya sudah cukup lama membuat sistem serupa dengan F#, jadi ingin terhubung
    • Jika terhubung ke TWS API milik IB, dan eksekusi trading juga hanya dilakukan di sana, rasanya ada juga opsi mengambil harga real-time dari IB API dan tidak memakai polygon.io sama sekali
      Saya tidak tahu apakah IB mengirim feed harga secara real-time. Layar TWS terus diperbarui, jadi sepertinya datanya dikirim secara real-time, tetapi saya penasaran apakah order book juga disediakan lewat API
      Saya tahu tulisan ini dimuat di blog polygon.io, tetapi saya penasaran apakah arsitekturnya bisa berjalan hanya dengan IB/TWS API
  • Salah satu konsep yang paling sering disalahpahami dalam algorithmic trading adalah bahwa, pada sebagian besar sistem, kecepatan bukanlah faktor penentu
    Model seperti sistem saya, https://grizzlybulls.com/models/vix-ta-macro-mp-extreme, selama lebih dari 3 tahun dalam perdagangan nyata berhasil jauh mengungguli pasar, tetapi rata-rata hanya bertransaksi kira-kira sekali setiap 18 hari perdagangan dan sinyalnya pun hanya dihasilkan di sekitar titik pergantian berbasis jam
    Dalam 18 bulan terakhir performanya lebih lemah dibanding awalnya karena perubahan struktural besar berupa inflasi tinggi dan kenaikan suku bunga cepat, tetapi sejak peluncuran situs pada Januari 2022 menghasilkan imbal hasil +14,11%, sementara SPX -7,83%
    Itu dicapai tanpa leverage, dan drawdown maksimumnya pada periode yang sama juga -16,48%, lebih rendah daripada SPX yang -27,57%

    • Memasukkan sesuatu yang tampak seperti data backtest mulai dari 2009 ke dalam grafik terasa agak kurang jujur. Titik mulainya sepenuhnya arbitrer, dan karena disebutkan baru dimulai 3 tahun lalu, itu bukan kinerja aktual
      Susunannya membuat model terlihat seolah benar-benar jauh mengungguli pasar. Kalau memang punya tambang emas yang belum tergarap, itu luar biasa, tetapi secara pribadi sulit bagi saya untuk percaya karena ada beberapa sinyal bahaya
    • Saya penasaran seberapa banyak model-model ini memakai data eksternal, atau seberapa sering ada input manusia atau fine-tuning secara berkala
  • Jika tertarik pada algorithmic trading, Collective2 layak dilihat. Itu tempat para engineer menyediakan sinyal beli/jual dengan biaya berlangganan
    Rasanya seperti liga minor untuk algorithmic trading dan cukup menarik
    Karena sistemnya melacak untung-rugi, sulit untuk memalsukan laporan kinerja, dan jika Anda mengizinkan Collective2 mengakses akun Interactive Brokers, mereka bisa mengeksekusi sinyal trading atas nama Anda
    Layanannya sudah ada setidaknya 10 tahun, jadi kinerja jangka panjang juga bisa dilihat, tetapi sebagian besar sistem tidak bertahan selama itu
    https://collective2.com/leader-board
    Bahkan yang saat ini berada di peringkat atas pun jarang bertahan lama, biasanya sekitar 1–2 tahun. Ini menunjukkan bahwa alpha dari sebagian besar sistem menghilang cukup cepat
    Kurva imbal hasilnya juga naik-turun tidak menentu, dan strukturnya sering kali beberapa transaksi saja menyumbang sebagian besar keuntungan

  • Saat mengembangkan sistem trading otomatis, pilar pentingnya adalah feed dan pengumpulan data, pembuatan fitur, pembuatan sinyal, trading aktual, manajemen order, serta orkestrasi keseluruhan
    Data mentah jarang digunakan begitu saja untuk pengambilan keputusan, dan pembuatan fitur yang baik sering menjadi faktor utama keberhasilan. Moving average adalah salah satu contohnya, tetapi belakangan ini hal sebatas itu hampir tidak mempan
    Tulisan ini menunjukkan sisi teknis pemrosesan data, pengelolaan order, dan keseluruhan pipeline, tetapi akan lebih baik jika ada lebih banyak detail tentang penskalaan solusi dan implementasi asinkron
    Terutama karena menggunakan Go, saya jadi lebih penasaran sebab ada struktur channel yang cocok untuk tujuan itu
    Saya paham itu bukan fokus tulisannya, tetapi informasi umum tentang logika trading, cara memasang strategi baru, dan cara memparameterisasi strategi yang ada juga akan membantu
    Tautan di bagian akhir menarik, dan karena saya sedang mengembangkan bot trading cerdas berbasis machine learning dan feature engineering (https://github.com/asavinov/intelligent-trading-bot), tulisan seperti ini bisa penting

    • Setuju. Bagian itu memang terlewat oleh saya
      Strukturnya sederhana: goroutine dan channel saling berkomunikasi, lalu dikunci dengan satu mutex besar
      Ketika data baru masuk, sistem membuat nilai agregat yang diperlukan, yaitu candlestick berbasis tick, dan data itu memicu loop logika BUY. Jika sesuatu terdeteksi, sistem membuat order IB API
      Sangat sederhana dan tidak ada yang rumit. Saya pernah melacak lebih dari 100 posisi sekaligus, dan karena berjalan baik-baik saja, saya tidak banyak mengutak-atik logika asinkron yang kompleks
      Parameter sebenarnya saya hardcode di dalam loop BUY. Mungkin terdengar aneh, tetapi pada konfigurasi kecil hal seperti itu tidak sering berubah
      Caranya menjalankan beberapa transaksi, menyesuaikan nilai, lalu restart dan menguji lagi. Di lingkungan enterprise mungkin ada bahasa formal atau hot loading, tetapi untuk kasus saya hardcoding sudah bekerja dengan cukup baik
  • Go sendiri, atau bahasa apa pun, tidak memberi keuntungan besar. Yang memberi keuntungan adalah algoritma trading, dan itu selalu sulit ditemukan
    Selama berbulan-bulan saya mencari parameter optimal, tetapi pada akhirnya hanya berfungsi pada data historis, sementara di dunia nyata hasilnya benar-benar berbeda
    Jika algoritma dan strateginya sempurna, memakai Visual Basic pun bisa lebih baik daripada Go, Rust, atau bahasa apa pun lainnya. Bahasa hanyalah alat
    Memakai Go memang bagus, tetapi judulnya bisa sedikit menyesatkan. Orang bisa menganggapnya sebagai semacam keunggulan, padahal bukan begitu
    Dan untuk HFT, menurut saya bahasa dengan garbage collector bukan pilihan yang baik

    • Pada akhirnya kita harus memutuskan apakah akan membeli atau menjual, dan seberapa banyak, lalu keputusan itu akan bersaing dengan keputusan lain yang berbasis logika tertentu
      Karena mengembangkan logika semacam itu, yaitu strategi, secara manual tentu sulit, saya membuat bot trading cerdas yang menurunkan strategi trading dari data historis
      https://github.com/asavinov/intelligent-trading-bot
      Saat ini bot ini berjalan untuk kripto, tetapi bisa diterapkan ke pasar lain
      https://t.me/intelligent_trading_signals
      Situasi ketika sesuatu hanya bagus pada data historis tetapi berbeda di dunia nyata itu sangat umum. Kuncinya adalah membuat strategi yang juga berfungsi pada data masa depan yang belum pernah dilihat
      Algoritma backtest juga harus dirancang agar data masa depan tidak bocor ke masa lalu
    • Saya penulis artikel ini, dan memang benar saya membuatnya dengan Go. Alasannya karena Go adalah bahasa pemrograman utama yang saya pakai
      Di industri, C++ dan Python banyak dipakai, jadi penggunaan Go justru bisa menjadi kekurangan, tetapi itulah bahasa yang saya kuasai
      Saya tidak bermaksud menimbulkan salah paham. Go cukup cocok untuk menerima dan memproses data serta memanggil API jarak jauh, jadi dalam praktiknya berjalan dengan baik
      Namun jika ingin menjadikannya dasar untuk mencari pekerjaan, ini mungkin tidak akan banyak membantu
    • Jika kodenya ditulis tanpa melakukan alokasi sama sekali, bahasa dengan garbage collector pun bisa dipakai untuk HFT
      Ada tempat-tempat yang memakai Java dan mengalokasikan terlebih dahulu seluruh memori yang dibutuhkan saat startup. Jane Street juga terkenal memakai OCaml
    • Tergantung kasusnya. Saya pernah mendengar ada tempat-tempat yang memakai Java dengan membuat heap besar, menekan alokasi hingga hampir nol, lalu me-restart aplikasi secara berkala sebelum heap penuh
      Dengan cara ini performanya cukup bagus, dan tidak perlu khawatir soal bug memori
    • Itu adalah overfitting. Bukan hanya optimasi komputer, optimasi manual oleh manusia pun bisa menyebabkannya
      Setelah bereksperimen cukup lama dengan data historis, kegunaan data itu akan berkurang
  • Saya membuat bot dengan TypeScript karena itu bahasa yang saya kenal, dan dengan Python karena ekosistem alatnya banyak
    Pekerjaan ini sangat membebani dan kesepian. Proyek-proyek lain selalu saya kerjakan dalam tim, dan meskipun timnya sangat kecil serta pekerjaannya otonom, tetap ada rapat dan standup sesekali
    Ini sudah 6 bulan saya kerjakan sendirian, jadi saya sempat berpikir mengajak seorang teman bergabung hanya supaya tidak sendirian

    • Saya juga termasuk orang yang mengembangkan algorithmic trading sendirian. Akan menarik kalau kita bisa saling terhubung dan mengobrol
    • Artikel ini datang di waktu yang tepat. Saya memang sedang mencari alasan untuk belajar teknologi lain lewat pemantauan opsi
      Karena ini proyek sampingan, mungkin tidak akan banyak kemajuan, tetapi saya selalu terbuka untuk berdiskusi
    • Saya penasaran bagaimana Anda berharap bisa bersaing dengan para profesional. Sulit untuk lebih cepat dari mereka, dan jika tidak punya beberapa orang setingkat PhD matematika, kecil kemungkinan bisa membuat algoritma yang lebih baik
      Satu-satunya cara yang bisa saya pikirkan adalah mendapatkan data yang tidak mereka miliki
  • Menurut saya artikel ini benar-benar tidak berarti dan bersifat clickbait. Ringkasnya kira-kira, “data pasar bisa memakai polygon.io, tetapi algorithmic trading tetap sulit, jadi belum banyak yang bisa dibagikan”

    • Saya penulis artikel ini, dan saya menyesal Anda merasakannya begitu
      Secara pribadi, saya ingin membagikan struktur tingkat tinggi saat membangun sistem sendiri. Saat saya masuk ke lubang kelinci ini, saya berharap ada tulisan seperti ini
      Kalau Anda memberi tahu apa yang sebaiknya ditambahkan agar lebih baik, saya akan dengan senang hati mempertimbangkannya
  • Sebaiknya cari orang-orang yang menikmati feedback loop murni antara kode, strategi, dan uang yang ditawarkan trading
    Saya telah meneliti timing dan korelasi antara saham dan indeks sebagai sumber alpha, dan hasilnya cukup ada
    Sekarang saya sedang mencoba mengotomatiskan proses itu, dan saya benar-benar menikmati pekerjaannya
    Saya tidak berniat menjadi market maker atau terus berpindah-pindah saham. Saya fokus menyempurnakan model yang akurat untuk memonetisasi beberapa saham dengan sangat baik
    Alat yang berguna antara lain TradingView dan indikator/strategi Pinescript, model Excel yang memakai data ekspor untuk backtest, Python dan Go untuk machine learning backend, serta ChatGPT untuk mempercepat iterasi kode baru
    Jika tertarik, saya ingin berdiskusi di trading @ dianazink.com

  • Artikel yang bagus, dan saya menyukai penjelasan yang konkret serta terutama screenshot-nya
    Saya paham jika tidak menjelaskan strateginya secara detail, tetapi saya penasaran apakah Anda bisa menjelaskan apakah trading-nya sepenuhnya berbasis analisis teknikal, atau memakai data eksternal maupun feed data alternatif
    Dengan kata lain, apakah ini sistem yang hampir tertutup dengan input Polygon dan output IB API saja, atau konfigurasi yang lebih luas yang juga mencakup feed data khusus seperti situs berita, Twitter, dan Reddit
    Jika yang terakhir, saya juga penasaran bagaimana Anda menyeimbangkannya dengan backtest historis ketika cakupan historis sebagian sumber data hanya parsial

    • Semua data saya berasal dari polygon.io dan tidak ada data eksternal
      Belakangan ini saya sedang melihat cara memakai tabel lookup berisi nilai historis yang sudah dihitung sebelumnya untuk deteksi anomali, misalnya menilai “apakah aktivitas ini normal untuk saham ini”
      BXRX hari ini adalah contoh yang bagus [1]
      Saya juga sedang melihat aktivitas trading opsi dan mencoba apakah itu bisa dipakai sebagai sinyal
      [1] https://www.google.com/search?q=BXRX