Type/to search
8
Follow
1365
Followers
Prinsip Berlapis Vibe Trading: Mana yang Diserahkan ke Moving Average, Mana yang ke AI
Discussions
Created 2026-04-02 10:40:28  Updated 2026-04-02 13:41:43
 0
 351

img

Pemikiran Vibe Trading: kapan harus menggunakan AI, dan kapan tidak.


Belakangan ini ada konsep yang disebut Vibe Trading—mendeskripsikan niat trading dengan bahasa alami, dan membiarkan AI mengeksekusinya. Ucapkan "strategi konservatif, prioritaskan aset dengan volatilitas rendah", dan AI akan mengonfigurasinya secara otomatis. Kedengarannya indah.

Tapi sebelum membahas Vibe Trading, saya ingin menceritakan sebuah kejadian baru-baru ini yang lebih jelas daripada teori apa pun tentang "di mana AI harus digunakan."

Pada 31 Maret, Claude Code dari Anthropic secara tidak sengaja mengekspos kode sumbernya dalam pembaruan npm—sekitar 512.000 baris TypeScript (catatan: ini adalah total kode setelah dibundel, termasuk dependensi dan kode yang dihasilkan). Analisis balik dari komunitas segera menyebar, dan pengembang di seluruh dunia membuka kode untuk mencari fitur baru.

Tapi penemuan yang paling mengejutkan saya, tidak ada hubungannya dengan AI. Penemuan itu sendiri juga tidak ada hubungannya dengan trading, tetapi filosofi teknik di baliknya seharusnya bisa dipahami oleh para pelaku kuantitatif.

Di dalam sebuah modul yang dianotasi oleh analis sebagai userPromptKeywords, ada sebuah regex yang digunakan untuk mencocokkan kata-kata kasar seperti shit, wtf, fucking broken—untuk dengan cepat menilai apakah pengguna sedang mengumpat.

Perusahaan model bahasa besar paling canggih di dunia menggunakan ekspresi reguler untuk mendeteksi emosi.

Bukan memanggil Claude untuk melakukan analisis sentimen. Bukan melatih pengklasifikasi. Ini adalah pencocokan string yang berjalan dalam hitungan mikrodetik.

Mengapa?


1. Mengapa Anthropic Tidak Menggunakan AI-nya Sendiri

Ini bukan karena malas. Ini adalah keputusan rekayasa yang dipertimbangkan dengan matang.

Claude Code memproses ratusan ribu interaksi pengguna setiap hari. Setiap interaksi perlu menilai "apakah pengguna menunjukkan frustrasi," agar dapat menyesuaikan strategi respons. Jika setiap kali LLM dipanggil untuk menilai:

  • Latensi: Inferensi LLM membutuhkan setidaknya beberapa ratus milidetik; pencocokan regex hanya beberapa mikrodetik.
  • Biaya: Panggilan LLM dihitung per token; pencocokan regex hampir gratis.
  • Determinisme: Regex cocok atau tidak cocok; hasilnya 100% pasti; output LLM tidak deterministik, input yang sama dapat menghasilkan penilaian yang berbeda.

Jadi pilihan Anthropic adalah: menggunakan regex untuk penyaringan cepat (ambang batas rendah, cepat, deterministik), dan mengalokasikan daya komputasi LLM hanya untuk keputusan yang benar-benar membutuhkan pemahaman semantik.

Ini bukan detail teknis. Ini adalah filosofi arsitektur: tidak semua masalah layak diselesaikan dengan AI.

Orang yang berkecimpung di kuantitatif seharusnya sangat merasakan hal ini.


2. Pilihan yang Sama dalam Trading Kuantitatif

Ada dua jenis keputusan dalam strategi Anda:

Keputusan Deterministik—gunakan "Aturan"

Siapa pun yang pernah menulis strategi di FMZ tahu bahwa logika trading inti seringkali hanya beberapa baris kode deterministik:

javascript
// Sinyal cross moving average — Contoh JavaScript FMZ var records = exchange.GetRecords(PERIOD_D1) var ma5 = TA.MA(records, 5) var ma20 = TA.MA(records, 20) var idx = records.length - 1 // Golden cross buka long if (ma5[idx] > ma20[idx] && ma5[idx-1] <= ma20[idx-1]) { exchange.SetDirection("buy") exchange.Buy(records[idx].Close, 1) Log("Golden cross MA, buka long") }

Kondisi jelas, hasil pasti, tidak perlu "memahami" semantik. Tulis dengan if-else, keandalan 100%, eksekusi milidetik.

Ini mirip dengan pendekatan Anthropic menggunakan regex untuk mendeteksi emosi—masalah deterministik, gunakan alat deterministik. Tentu saja, regex adalah pencocokan string, moving average adalah perhitungan matematis, alatnya berbeda, tetapi peran mereka dalam sistem masing-masing serupa: sama-sama penilaian deterministik yang tidak memerlukan AI.

Untuk stop loss, keandalan if-else adalah 100%, sedangkan keandalan AI adalah "kemungkinan besar". Akun Anda tidak mampu menanggung probabilitas kecil itu.

Keputusan Evaluasi Kabur—gunakan AI

Tapi beberapa keputusan tidak bisa ditulis dengan if-else:

  • Analisis sentimen berita: Pernyataan The Fed keluar, apakah hawkish atau dovish? "Mempertahankan suku bunga saat ini tidak berubah, tetapi komite akan memantau perubahan data dengan saksama"—apakah pernyataan ini positif atau negatif? Moving average tidak bisa memberi tahu Anda, regex juga tidak bisa.
  • Deteksi anomali: Volume diskusi di media sosial untuk altcoin tertentu naik 800% dalam 3 jam, tetapi harga belum bergerak. Apakah ini "smart money sedang akumulasi" atau "seseorang membuat hype sebelum pump"? Perlu penilaian kabur berdasarkan informasi multidimensi.
  • Generasi strategi: Anda memiliki intuisi—"seringkali setelah pola seperti ini terjadi lonjakan." Tapi Anda tidak bisa menjelaskan kondisi pastinya. Anda bisa mendeskripsikan intuisi ini ke LLM dan biarkan ia membantu Anda mengonversinya menjadi faktor kuantitatif yang bisa di-backtest.

Karakteristik umum dari skenario-skenario ini: input tidak terstruktur, standar penilaian kabur, perlu "pemahaman" bukan hanya "pencocokan".


3. Pendekatan Berlapis yang Bisa Ditiru

Kembali ke arsitektur Claude Code. Analisis komunitas mengungkapkan pelapisan yang jelas:

LayerMekanisme di Claude CodePadanan dalam Trading Kuantitatif
Layer Penyaringan CepatRegex, pencocokan kata kunciPersilangan MA, stop loss threshold, batasan posisi
Layer Infrastruktur TeknikManajemen proses, pengiriman pesan, kontrol izinAPI exchange, manajemen order, engine risk control
Layer Keputusan SemantikPrompt LLMAnalisis sentimen berita, pengenalan pola abnormal, eksplorasi strategi

Tentu saja, Claude Code dan trading kuantitatif adalah dua domain yang sangat berbeda, pemetaan di sini tidak sepenuhnya presisi. Tapi resonansi filosofi desainnya nyata—pilih alat yang paling cocok di setiap layer, jangan gunakan satu palu untuk semua paku.

Komunitas open source juga mempraktikkan pendekatan serupa. TradingAgents adalah kerangka kerja multi-Agent trading kuantitatif yang patut diperhatikan (dibangun di atas LangGraph, dengan makalah akademis pendamping). Ini mensimulasikan struktur tim perusahaan trading nyata: analis teknis bertanggung jawab untuk perhitungan candlestick dan indikator, analis sentimen untuk menginterpretasi berita dan opini publik, dan trader dengan gaya berbeda menggabungkan pendapat dari berbagai pihak untuk membuat keputusan akhir. Bukan satu AI serba bisa yang mengerjakan semuanya, melainkan peran berbeda yang menjalankan fungsinya masing-masing.

Perlu dicatat bahwa TradingAgents adalah kerangka kerja penelitian, yang menjawab pertanyaan "bagaimana AI membuat keputusan trading." Tapi dalam live trading, Anda masih membutuhkan separuh lainnya: koneksi ke exchange, manajemen order, eksekusi risk control, log audit—semua urusan infrastruktur teknik ini justru sudah disediakan oleh platform kuantitatif seperti FMZ.


4. Bagaimana Vibe Trading Diimplementasikan: Contoh Arsitektur Berlapis

Kembali ke Vibe Trading di awal. Arahnya benar, tapi prasyaratnya adalah pelapisan yang jelas.

Anggap saja hari ini terjadi golden cross MA pada BTC, tapi beritanya semua tentang tekanan regulasi. Apa yang Anda lakukan? Jika hanya melihat MA, seharusnya buka long; jika hanya mendengar berita, Anda tidak berani bergerak. Inilah skenario khas yang membutuhkan pelapisan.

Di FMZ, arsitektur berlapis yang disederhanakan bisa diimplementasikan seperti ini (catatan: ini adalah contoh sederhana, untuk live trading harap lengkapi pengaturan kontrak dan risk control sendiri):

javascript
/* Parameter strategi (ditambahkan di kolom "Parameter" pada halaman edit strategi FMZ): OPENROUTER_API_KEY : tipe string, isi dengan API Key OpenRouter Anda AI_MODEL : tipe string, nilai default "google/gemini-2.5-flash", bisa diganti dengan model lain */ // Lapisan pengambilan keputusan semantik: Memanggil AI melalui OpenRouter untuk mendapatkan sentimen pasar function getAISentiment() { var prompt = "Analisis berita pasar cryptocurrency saat ini, berikan skor sentimen (-1 hingga 1, -1 sangat panik, 1 sangat serakah), hanya kembalikan satu angka" var response = HttpQuery("https://openrouter.ai/api/v1/chat/completions", { method: "POST", body: JSON.stringify({ model: AI_MODEL, messages: [{role: "user", content: prompt}], temperature: 0 }), headers: { "Content-Type": "application/json", "Authorization": "Bearer " + OPENROUTER_API_KEY }, timeout: 15000 }) var score = parseFloat(JSON.parse(response).choices[0].message.content) // Saat AI mengembalikan format abnormal, fallback ke nilai netral – keandalan sistem tidak bergantung pada setiap output AI yang benar if (isNaN(score) || score < -1 || score > 1) { Log("Format kembalian AI tidak normal, menggunakan nilai default 0") score = 0 } Log("Skor sentimen AI:", score) return score } function main() { var lastSignalTime = 0 // Mencatat waktu K-line saat sinyal terakhir dipicu, untuk mencegah pemicuan berulang pada K-line yang sama while (true) { var records = exchange.GetRecords(PERIOD_D1) if (!records || records.length < 20) { Sleep(1000); continue } var ma5 = TA.MA(records, 5) var ma20 = TA.MA(records, 20) var idx = records.length - 1 var curTime = records[idx].Time var isBullCross = ma5[idx] > ma20[idx] && ma5[idx-1] <= ma20[idx-1] var isBearCross = ma5[idx] < ma20[idx] && ma5[idx-1] >= ma20[idx-1] // Cek status posisi var pos = exchange.GetPosition() var hasPosition = pos && pos.length > 0 // Lapisan pertama: Sinyal deterministik sebagai "pintu gerbang", golden cross terpicu + tidak ada posisi + belum diproses di K-line ini, baru bertanya ke AI if (isBullCross && !hasPosition && curTime !== lastSignalTime) { lastSignalTime = curTime var sentiment = getAISentiment() // Lapisan kedua: Sentimen AI sebagai "referensi", mempengaruhi ukuran posisi tetapi tidak memicu trading secara independen if (sentiment > 0.2) { exchange.SetDirection("buy") exchange.Buy(records[idx].Close, 1) Log("Golden cross + AI bullish, buka posisi penuh") } else if (sentiment > -0.3) { exchange.SetDirection("buy") exchange.Buy(records[idx].Close, 0.5) Log("Golden cross + AI netral, buka setengah posisi") } else { Log("Golden cross tetapi AI bearish, lewati sinyal ini") } } // Death cross tutup posisi: Aturan deterministik, tidak melalui AI if (isBearCross && hasPosition) { exchange.SetDirection("closebuy") exchange.Sell(records[idx].Close, pos[0].Amount) Log("Death cross rata-rata bergerak, tutup posisi") } // Lapisan ketiga: Stop loss adalah "aturan besi", tidak melalui AI if (hasPosition) { var curPrice = records[idx].Close var entryPrice = pos[0].Price if (curPrice < entryPrice * 0.97) { // Turun 3% dari harga buka exchange.SetDirection("closebuy") exchange.Sell(curPrice, pos[0].Amount) Log("Stop loss terpicu, tutup posisi tanpa syarat, rugi", ((curPrice/entryPrice - 1)*100).toFixed(2), "%") } } Sleep(60 * 1000) } }

img

Logika inti dari kode ini layak untuk dijelaskan lebih lanjut:

1. Golden cross MA adalah "pintu gerbang". Hanya ketika sinyal deterministik pertama kali terpicu, AI akan dipanggil. Tidak bertanya ke model besar setiap K-line – ini menghemat biaya (API model besar dihitung per token) dan juga menghindari noise. Ini sejalan dengan pemikiran Anthropic: regex difilter terlebih dahulu, baru ketika cocok, proses yang lebih berat dijalankan.

2. Sentimen AI adalah "referensi". Ini mempengaruhi ukuran posisi dan apakah akan melewati sinyal, tetapi tidak memicu trading secara independen. Perhatikan penanganan异常 pada nilai kembalian AI dalam kode – jika model besar mengembalikan konten yang tidak dapat diuraikan, langsung fallback ke nilai netral 0. Keandalan sistem tidak boleh bergantung pada setiap output AI yang benar.

3. Stop loss adalah "aturan besi". Turun 3% dari harga buka, tutup posisi tanpa syarat, tidak menanyakan pendapat AI. AI mungkin berkata "optimis jangka panjang", tetapi akun Anda mungkin tidak bisa menunggu hingga jangka panjang. Di sini menggunakan persentase harga sebagai hard stop loss, tanpa melalui penilaian yang ambigu.

Inilah cara yang benar untuk membuka Vibe Trading: Gunakan bahasa alami untuk membantu AI "merasakan" suasana pasar, gunakan kode deterministik untuk "mengeksekusi" aksi trading. Batas keduanya tidak boleh kabur.

Saran praktis: Di sistem backtest FMZ, jalankan dulu strategi MA murni sebagai garis dasar, kemudian tambahkan lapisan sentimen AI, bandingkan imbal hasil dan drawdown. Jika setelah menambahkan AI malah menjadi lebih buruk – berarti ada masalah dengan分层, mungkin AI ikut campur di tempat yang seharusnya tidak. Setiap hasil kembalian AI, catat dengan Log() untuk memudahkan evaluasi setiap keputusan nanti.


V、Satu Kalimat untuk Dibawa Pulang

Perusahaan AI paling canggih menggunakan ekspresi reguler untuk mendeteksi sentimen, bukan karena mereka tidak bisa membuat AI yang lebih baik.

Itu karena mereka tahu: Memilih alat yang tepat lebih penting daripada memilih alat yang kuat.

Strategi moving average tidak seksi, ekspresi reguler tidak canggih. Tapi di bidangnya masing-masing, mereka lebih andal daripada AI mana pun.

Sebaliknya, ketika Anda perlu mengekstrak dari laporan makro sepanjang 5000 kata sebuah penilaian "apakah ini bullish atau bearish untuk BTC" – moving average tidak bisa membantu Anda, regex juga tidak bisa membantu Anda. Di sinilah AI seharusnya turun tangan.

Ini bukan masalah "pakai AI atau tidak", tapi masalah "di lapisan mana menggunakannya".

File ekspresi reguler yang tidak mencolok dalam kode sumber Claude Code telah menjawab pertanyaan yang sering diabaikan. Dan FMZ memberi Anda infrastruktur分层 yang sudah jadi – antarmuka exchange, perhitungan indikator, manajemen trading langsung, audit log semuanya sudah disiapkan, Anda hanya perlu memikirkan: Keputusan mana yang diserahkan ke TA.MA(), keputusan mana yang diserahkan ke AI.

Sumber referensi:

Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)