Workbench Quant A-Share Self-Hosted, Dijelaskan
Workbench quant A-share self-hosted menjalankan screening dan backtest di mesin Anda. Pahami ketergantungannya dan empat hal yang perlu diperiksa lebih dulu.
Workbench quant A-share yang di-host sendiri adalah satu halaman web untuk menyaring pasar, memantau daftar saham, menjalankan backtest, dan menulis ulasan setelah pasar tutup. Semua proses berjalan di mesin yang Anda kendalikan, bukan di terminal broker. Salah satu proyek berlisensi MIT, tickflow-stock-panel, mengemas seluruh fungsi tersebut di balik satu port. Hingga Agustus 2026, proyek ini telah mengumpulkan sekitar 2.800 GitHub stars. Daftar fiturnya mudah dibaca. Namun, lapisan di bawahnya menentukan apakah semua fungsi tersebut masih akan berjalan pada kuartal berikutnya.
Komponen workbench kuantitatif A-share yang di-hosting sendiri
Arsitekturnya cukup ringkas untuk dipahami secara menyeluruh. Berdasarkan kode dan dokumentasi pada commit Agustus 2026, komponennya adalah:
- Halaman web yang dibangun dengan React dan TypeScript.
- Layanan Python berbasis FastAPI, dengan scheduler yang memperbarui data secara berkala.
- Penyimpanan lokal: file Parquet di disk, yang dikueri dengan DuckDB dan digunakan untuk komputasi dengan Polars.
- Mesin backtesting, vectorbt, yang diarahkan ke file-file tersebut.
- SDK vendor yang mengambil setiap harga yang ditampilkan panel.
Perhatikan komponen yang tidak ada. Tidak satu pun bagian dalam stack tersebut terhubung ke bursa. Panel melakukan komputasi; vendor memasok data. “Self-hosted” menjelaskan lokasi kode dijalankan, bukan sumber angka yang digunakan. Menyimpan raw bars sendiri merupakan tugas lapisan di bawahnya, yaitu data lake pasar A-share lokal, dan hal inilah yang membuat seluruh lapisan di atasnya dapat diganti.
Cakupan tier gratis dari sumber data
Satu variabel lingkungan menentukan data yang dapat dilihat panel. Biarkan vendor key kosong, dan proyek berjalan dalam mode yang disebut None oleh dokumentasinya: historical daily bars dari endpoint gratis, dengan sesi berjalan tersedia satu hingga dua jam setelah penutupan. Isi vendor key, dan akses terbuka sesuai paid tier. Ini merupakan free tier yang dapat digunakan untuk pekerjaan end-of-day, tetapi tidak memadai untuk aktivitas intraday, dengan ketentuan yang dapat diubah vendor pada setiap perpanjangan.
Maintainer menjelaskan pengaturan ini secara langsung:
Proyek ini hanya untuk pembelajaran dan riset kuantitatif, bukan merupakan saran investasi. Hasil backtest tidak mencerminkan imbal hasil di masa depan.
Proyek open-source pribadi, berbasis sumber data TickFlow, dan bukan proyek resmi TickFlow.
README, shy3130/tickflow-stock-panel, dibaca pada 13 Agustus 2026
Artinya, proyek ini ditujukan untuk pembelajaran dan riset kuantitatif, “bukan merupakan saran investasi”, dan hasil backtest tidak mencerminkan imbal hasil di masa depan. Proyek ini juga merupakan “proyek open-source pribadi, bukan produk resmi TickFlow”. Itulah pelajaran yang berlaku umum dari seluruh kategori ini. Zero-ops menghilangkan pekerjaan operasional dari meja Anda. Namun, dependensinya tetap sama: Anda menyewa data dari perusahaan yang tidak pernah menyetujui untuk mendukung panel ini. README juga membatasi penggunaan untuk pembelajaran dan riset, sedangkan berkas lisensinya menggunakan MIT.
Mengapa harus menyematkan commit SHA, bukan nomor versi
Commit SHA adalah fingerprint 40 karakter yang diberikan git untuk setiap perubahan yang disimpan. SHA tersebut mengidentifikasi satu kondisi kode secara persis dan permanen.
Pada 13 Agustus 2026, repositori ini tidak memiliki apa pun di halaman GitHub Releases. Repositori tersebut memiliki 31 version tag, mulai dari v0.1.31 hingga v0.1.88, dengan beberapa nomor yang tidak ada dan tanpa catatan. Tag terbaru menunjuk ke commit bertanggal 31 Juli 2026, sedangkan default branch telah berisi pekerjaan bertanggal 6 Agustus 2026. Tag yang tertinggal dari branch dan tidak memiliki catatan tidak dapat memberi tahu Anda apa yang akan diperoleh.
Karena itu, catat SHA tersebut. Head default branch pada 6 Agustus 2026 adalah ecfddb451e97f6fc9a7e43ac33e4ef0e69933b33. Checkout commit tersebut dan catat di samping setiap kesimpulan yang Anda tarik dari backtest. Enam minggu kemudian, pernyataan “saya menjalankan versi terbaru” tidak menjelaskan apa pun.
Dokumentasi untuk memulai hanya terdiri dari dua baris: salin file environment contoh ke .env, lalu jalankan docker compose up --build, yang menyajikan panel pada port 3018. Itulah instruksi maintainer pada commit tersebut, bukan jalur yang telah diuji; proses build mengunduh image dan memerlukan akses jaringan yang belum diuji oleh halaman ini. Jalur pengembangan (./dev.sh, atau .\dev.ps1 di Windows) memerlukan Python 3.11 atau yang lebih baru, Node 20 atau yang lebih baru, serta package manager uv dan pnpm.
Data yang dikirim fitur strategi LLM, dan ke mana arahnya
Pembuatan strategi, komentar atas saham individual, dan tulisan ulasan bersifat opsional. Biarkan AI_API_KEY kosong dan seluruh fitur tetap tidak aktif. Jika diisi, Anda juga menetapkan AI_PROVIDER (endpoint yang kompatibel dengan OpenAI atau Ollama), AI_BASE_URL, AI_MODEL, dan AI_DAILY_TOKEN_BUDGET. Pengaturan terakhir menghentikan panggilan setelah kuota token harian terpakai.
Arah pengiriman data penting. Prompt Anda dan konteks apa pun yang dilampirkan panel ke dalamnya akan meninggalkan mesin Anda menuju endpoint yang dikonfigurasi. Jika base URL diarahkan ke API hosted, permintaan dikirim ke perusahaan tersebut. Jika diarahkan ke runtime di jaringan Anda sendiri, permintaan tetap berada di jaringan internal. Self-hosting panel tidak berarti model juga di-self-host. Key disimpan dalam file teks biasa .env di root proyek dan juga dapat diedit dari halaman pengaturan, yang dilindungi password dashboard dengan panjang minimum enam karakter. Catatan kami tentang faktor alpha yang dihasilkan LLM membahas titik-titik kegagalan strategi yang ditulis mesin.
Apakah backtester memodelkan biaya perdagangan?
Backtester tersebut mengklaim mendukung penanganan T+1, komisi, slippage, dan stop-loss. Namun, keberadaan opsi tersebut tidak berarti opsi itu telah diatur. Backtest yang mengeksekusi transaksi pada harga penutupan yang tercetak dengan biaya nol pada dasarnya mengasumsikan bahwa perdagangan tidak memiliki biaya. Asumsi itu keliru. Satu basis point adalah seperseratus persen. Panel di bawah ini mengukur rata-rata selisih antara best bid dan best offer, dalam basis point, pada enam listing AS selama satu jam di tengah hari pada 17 Juni 2026.
SQL tepat di balik setiap angka
SELECT
ticker AS symbol,
round(avg(toFloat64(ask_price) - toFloat64(bid_price))
/ avg((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, 2) AS spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'F')
AND sip_timestamp >= toDateTime('2026-06-17 15:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-17 16:00:00', 'UTC')
AND bid_price > 0
AND ask_price > bid_price
GROUP BY ticker
ORDER BY spread_bpsListing dengan spread paling ketat dalam panel, SPY, mencatat rata-rata 0.29 bps selama satu jam tersebut. Listing dengan spread paling lebar, F, mencatat 6.98 bps. Jika spread itu dilintasi dua kali, sekali saat masuk dan sekali saat keluar, biaya round trip kira-kira dua kali angka yang ditampilkan, sebelum komisi.
Waktu transaksi sama pentingnya dengan instrumen yang dipilih. Panel berikutnya mengambil salah satu listing tersebut dan mengukur seberapa jauh harganya bergerak dalam satu menit, lalu merata-ratakannya ke dalam bucket setengah jam pada hari yang sama.
SQL tepat di balik setiap angka
SELECT
formatDateTime(
toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE),
'%H:%i') AS et_time,
round(avg((toFloat64(high) - toFloat64(low)) / toFloat64(close)) * 10000, 1) AS range_bps
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'KO'
AND window_start >= toDateTime('2026-06-17 12:00:00', 'UTC')
AND window_start < toDateTime('2026-06-17 21:00:00', 'UTC')
AND volume > 0
AND close > 0
GROUP BY et_time
ORDER BY et_timePanel dimulai pada 08:00, sebelum sesi reguler, ketika bar satu menit rata-rata menunjukkan pergerakan sebesar 0 bps. Menit yang mencatat transaksi sama sekali hanya berada pada satu harga. Bucket terakhir, 16:30, berada setelah penutupan dan mencatat rata-rata 4.2 bps. Backtest memilih satu titik dari setiap rentang tersebut dan menyebutnya sebagai harga eksekusi. Perhatikan kurvanya, bukan hanya titik awal dan akhirnya. Asumsi yang sama dapat terlalu menguntungkan pada jam tertentu dan terlalu membebani pada jam lainnya. Aturan A-share menambah kendala tersendiri. T+1 membuat saham yang dibeli hari ini tidak dapat dijual hingga sesi berikutnya, sementara batas harga harian dapat menghilangkan peluang exit yang dimodelkan sepenuhnya. Panduan kami tentang backtest yang dapat direproduksi menunjukkan hal-hal yang perlu dicatat dalam setup yang dapat dipertanggungjawabkan. Look-ahead bias membahas cara lain yang dapat membuat kurva yang tampak rapi menjadi keliru.
Adjusted atau unadjusted: menelusuri sumber data
Corporate action adalah area ketika screener dapat menyesatkan secara diam-diam. Saham yang melakukan stock split ten-for-one akan mencatat penurunan 90% pada hari pelaksanaan, meski tidak ada investor yang kehilangan satu sen pun. Panel di bawah ini mencantumkan dua belas forward split terbesar pada saham yang tercatat di bursa AS antara 1 Januari dan 13 Agustus 2026.
SQL tepat di balik setiap angka
SELECT
ticker AS symbol,
formatDateTime(execution_date, '%b %e, %Y') AS effective_on,
round(any(toFloat64(split_to)) / any(toFloat64(split_from)), 2) AS shares_after_per_share
FROM global_markets.stocks_splits
WHERE execution_date >= toDate('2026-01-01')
AND execution_date <= toDate('2026-08-13')
AND split_from > 0
AND split_to > split_from
AND ticker NOT IN ('SPCX')
GROUP BY ticker, execution_date
ORDER BY shares_after_per_share DESC, execution_date DESC
LIMIT 12Stock split terbesar mengubah satu saham menjadi 10000, efektif Feb 10, 2026. Rasio sebesar itu bukan four-for-one yang umum; feed corporate action memuat seluruh rentang rasio dalam satu kolom. Rasio terkecil dari dua belas corporate action tersebut tetap mengubah satu saham menjadi 20, cukup besar untuk membuat grafik unadjusted terlihat seperti keruntuhan. Screener momentum yang membaca harga mentah akan menandai semuanya sebagai crash. Feed dari China menghadapi masalah yang sama dengan istilahnya sendiri dan menyediakan tiga varian untuk setiap seri: unadjusted, forward-adjusted, dan back-adjusted. Pastikan Anda mengetahui varian yang dimuat panel Anda. Riwayat harga yang disesuaikan dengan stock split menjelaskan perhitungannya.
Hal yang perlu diperiksa sebelum melakukan self-hosting atas layanan semacam ini
- Asal data. Periksa vendor penyedia, lisensi yang berlaku, dan apakah free tier mencakup penggunaan yang Anda rencanakan.
- Pengelolaan key. Periksa lokasi penyimpanan API key di disk, pihak yang dapat mengakses halaman pengaturan, dan apakah mesin tersebut dapat diakses dari luar jaringan Anda.
- Pemodelan biaya. Pastikan backtester memperhitungkan komisi, slippage, dan aturan pasar yang berlaku. Periksa pula nilai yang digunakan untuk setiap parameter jika Anda membiarkannya pada pengaturan default.
- Jalur pembaruan. Catat commit yang tepat saat deployment di samping hasil Anda agar dapat direproduksi beberapa bulan kemudian.
FAQ
Apakah quant workbench A-share yang di-host sendiri gratis untuk dijalankan?
Kodenya berlisensi MIT dan gratis. Data merupakan persoalan terpisah: jika vendor key dibiarkan kosong, proyek ini menggunakan data historis gratis berupa daily bars, sementara data sesi berjalan tersedia satu hingga two hours setelah penutupan. Data yang lebih cepat atau lebih mendalam tersedia melalui tier berbayar vendor.
Apa sebenarnya arti self-hosted di sini?
Halaman web, scheduler, file tersimpan, dan backtester semuanya berjalan di mesin atau server Anda sendiri, tanpa akun pada platform pihak lain. Ini bukan berarti datanya menjadi milik Anda. Fitur AI opsional juga tetap berjalan secara remote, kecuali Anda mengarahkannya ke model di jaringan Anda sendiri.
Apakah fitur LLM mengirimkan data saya kepada pihak ketiga?
Jika diaktifkan, ya, ke endpoint yang kompatibel dengan OpenAI yang Anda konfigurasikan. Fitur ini dinonaktifkan secara default. Jika AI key dibiarkan kosong, tidak ada data yang keluar dari mesin.
Mengapa menggunakan commit SHA, bukan version tag?
Per 13 August 2026, repository ini belum memiliki published releases atau release notes. Tag terbarunya juga menunjuk ke kode yang lebih lama daripada default branch. Dalam kondisi tersebut, “Latest” berarti apa pun yang ada di branch pada hari Anda melakukan clone, sedangkan commit SHA bersifat pasti. Prinsip yang sama berlaku pada materi open-source quant trading secara umum: pin versi yang Anda jalankan.
Catatan verifikasi
Setiap detail arsitektur dan konfigurasi di atas dibaca dari public repository pada 13 August 2026, di commit ecfddb451e97f6fc9a7e43ac33e4ef0e69933b33, yaitu head dari default branch yang bertanggal 6 August 2026. Halaman Releases tidak mencantumkan apa pun. Daftar tag berisi 31 version tags, dari v0.1.31 hingga v0.1.88, dengan tag terbaru menunjuk ke commit bertanggal 31 July 2026. Baris yang dikutip merupakan tulisan maintainer sendiri, yang disalin dari README, bukan diparafrasekan. Perintah untuk memulai container juga dikutip dari README dan tidak dijalankan di sini.
Panel pasar tersebut menampilkan US listings, dengan tanggal lampau yang ditetapkan agar angkanya tetap. Panel itu dimaksudkan untuk menunjukkan dua pemeriksaan yang berlaku di pasar mana pun, yaitu biaya eksekusi dan penyesuaian corporate action, bukan untuk menjelaskan pasar China.
Setiap panel di sini dilengkapi SQL yang menghasilkan data tersebut dan dapat diperluas di bawahnya. Untuk menjalankan pemeriksaan spread yang sama pada daftar saham Anda sendiri sebelum memasukkan salah satunya ke screener, minta dalam bahasa Inggris sederhana melalui terminal Strasmore.