Pemikiran Vibe Trading: Bila perlu guna AI, bila tidak.
Kebelakangan ini ada satu konsep dipanggil Vibe Trading — gunakan bahasa semula jadi untuk huraikan niat dagangan, biar AI laksanakan untuk anda. Sebut "strategi konservatif, utamakan aset turun naik rendah", AI akan konfigurasikan secara automatik. Kedengaran menarik.
Tetapi sebelum bincang Vibe Trading, saya nak cerita satu kejadian baru-baru ini, yang lebih jelas menunjukkan "di mana AI patut digunakan" berbanding mana-mana teori.
Pada 31 Mac, Claude Code oleh Anthropic secara tidak sengaja mendedahkan kod sumber dalam satu kemas kini npm — kira-kira 512,000 baris TypeScript (nota: ini adalah jumlah kod selepas dibungkus, termasuk kebergantungan dan kod dijana). Analisis balik oleh komuniti cepat merebak, pemaju di seluruh dunia menyelongkar kod untuk cari ciri baharu.
Tetapi penemuan yang paling mengejutkan saya, tiada kaitan dengan AI. Penemuan ini sendiri juga tiada kaitan dengan perdagangan, tetapi falsafah kejuruteraan di sebaliknya – mereka yang terlibat dalam kuantitatif sepatutnya boleh hubungkait.
Dalam satu modul yang dilabel sebagai userPromptKeywords oleh penganalisis, terdapat satu ungkapan biasa (regex) untuk memadankan kata-kata kasar seperti shit, wtf, fucking broken — digunakan untuk cepat menilai sama ada pengguna sedang marah.
Syarikat model bahasa besar terkemuka di dunia menggunakan ungkapan biasa untuk mengesan emosi.
Bukan panggil Claude untuk analisis sentimen. Bukan latih pengelas. Ia padanan rentetan pada peringkat mikrosaat.
Kenapa?
1. Kenapa Anthropic tidak guna AI sendiri
Ini bukan malas. Ini keputusan kejuruteraan yang teliti.
Claude Code memproses ratusan ribu interaksi pengguna setiap hari. Setiap interaksi perlu menilai "adakah pengguna menunjukkan kekecewaan" untuk laraskan strategi respons. Jika setiap kali guna LLM untuk penilaian ini:
- Latensi: Satu inferens LLM sekurang-kurangnya beberapa ratus milisaat, padanan regex beberapa mikrosaat
- Kos: Panggilan LLM dibil mengikut token, padanan regex hampir percuma
- Kepastian: Regex sama ada padan atau tidak, keputusan 100% pasti; output LLM tidak mempunyai kepastian, input yang sama boleh dapat penilaian berbeza
Jadi pilihan Anthropic: Guna regex untuk saringan pantas (ambang rendah, laju, kepastian tinggi), tinggalkan kuasa kira LLM untuk keputusan yang benar-benar memerlukan pemahaman semantik.
Ini bukan butiran teknikal. Ini falsafah seni bina: Tidak semua masalah berbaloi diselesaikan dengan AI.
Mereka yang buat kuantitatif sepatutnya amat faham kenyataan ini.
2. Pilihan yang sama dalam perdagangan kuantitatif
Strategi anda ada dua jenis keputusan:
Keputusan muktamad — patut guna "peraturan"
Mereka yang pernah tulis strategi di FMZ tahu, logik dagangan paling teras selalunya hanya beberapa baris kod muktamad:
javascript
// Isyarat persilangan MA — 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("Persilangan MA, buka long")
}
Syarat jelas, keputusan pasti, tidak perlu "fahami" semantik. Guna if-else, 100% boleh percaya, laksana dalam milisaat.
Sama seperti Anthropic guna regex untuk kesan emosi — masalah muktamad, guna alat muktamad. Sudah tentu, regex adalah padanan rentetan, MA adalah pengiraan matematik, alat berbeza, tetapi peranan mereka dalam sistem masing-masing adalah serupa: kedua-duanya adalah penilaian muktamad yang tidak perlukan campur tangan AI.
Perkara stop loss, serahkan kepada if-else kebolehpercayaannya 100%, serahkan kepada AI kebolehpercayaannya "kemungkinan besar". Akaun anda tidak mampu tanggung kebarangkalian kecil itu.
Keputusan pertimbangan kabur — patut guna AI
Tetapi ada keputusan yang if-else tidak boleh tulis:
- Analisis sentimen berita: Kenyataan Rizab Persekutuan keluar, adakah ia hawkish atau dovish? "Kekalkan kadar faedah semasa tidak berubah, tetapi jawatankuasa akan memantau perubahan data dengan teliti" — ayat ini positif atau negatif? MA tidak boleh beritahu, regex juga tidak boleh buat penilaian ini.
- Pengesanan anomali: Jumlah perbincangan media sosial untuk satu syiling altcoin naik 800% dalam 3 jam, tetapi harga belum bergerak. Ini "wang pintar sedang membina kedudukan" atau "seseorang mewujudkan momentum sebelum pump"? Perlu buat penilaian kabur dengan maklumat pelbagai dimensi.
- Penjanaan strategi: Anda ada gerak hati — "selepas corak ni selalunya ada lonjakan." Tetapi anda tak boleh huraikan syarat tepat. Anda boleh huraikan gerak hati ini kepada LLM, biarkan ia tolong terjemah ke faktor kuantitatif yang boleh diuji balik.
Ciri umum semua senario ini: Input tidak berstruktur, kriteria penilaian kabur, perlu "faham" bukan hanya "padan".
3. Satu pendekatan berlapis yang boleh dicontohi
Kembali kepada seni bina Claude Code. Analisis komuniti mendedahkan satu lapisan yang jelas:
| Lapisan | Mekanisme dalam Claude Code | Padanan dalam perdagangan kuantitatif |
|---|---|---|
| Lapisan saringan pantas | Ungkapan biasa, padanan kata kunci | Persilangan MA, stop loss ambang, had kedudukan |
| Lapisan infrastruktur kejuruteraan | Pengurusan proses, penghantaran mesej, kawalan kebenaran | API bursa, pengurusan pesanan, enjin kawalan risiko |
| Lapisan keputusan semantik | Prompt LLM | Analisis sentimen berita, pengecaman corak anomali, penerokaan strategi |
Sudah tentu, Claude Code dan perdagangan kuantitatif adalah dua bidang berbeza, padanan di sini bukan pemetaan tepat. Tetapi resonans falsafah reka bentuk adalah nyata — pilih alat yang paling sesuai untuk setiap lapisan, bukan satu tukul untuk semua paku.
Komuniti sumber terbuka juga mempraktikkan pendekatan serupa. TradingAgents adalah satu rangka kerja perdagangan kuantitatif multi-agen yang patut diberi perhatian baru-baru ini (dibina atas LangGraph, ada kertas akademik yang sepadan). Ia mensimulasikan struktur pasukan syarikat dagangan sebenar: penganalisis teknikal bertanggungjawab untuk lilin dan pengiraan indikator, penganalisis sentimen mentafsir berita dan pendapat umum, pedagang dengan gaya berbeza menggabungkan pendapat semua pihak untuk keputusan akhir. Bukan satu AI serba boleh mengurus semuanya, tetapi peranan berbeza menjalankan tugas masing-masing.
Perlu diingat, TradingAgents adalah rangka kerja penyelidikan, ia menyelesaikan masalah "macam mana AI buat keputusan dagangan". Tetapi dalam dagangan sebenar, anda perlukan separuh lagi: integrasi bursa, pengurusan pesanan, pelaksanaan kawalan risiko, audit log — urusan infrastruktur kejuruteraan ini, kebetulan telah disediakan oleh platform kuantitatif seperti FMZ.
4. Bagaimana Vibe Trading dilaksanakan: satu contoh seni bina berlapis
Kembali kepada Vibe Trading di awal. Arahnya betul, tetapi prasyaratnya adalah lapisan mesti jelas.
Andaikan hari ini BTC persilangan MA kenari, tetapi berita semua negatif dari segi regulasi. Apa yang anda buat? Lihat MA sahaja, patut buka long; dengar berita sahaja, tak berani bergerak. Ini adalah senario tipikal di mana lapisan diperlukan.
Di FMZ, satu seni bina berlapis yang ringkas boleh dilaksanakan seperti ini (nota: contoh ringkas di bawah, untuk dagangan sebenar sila sempurnakan sendiri tetapan kontrak dan kawalan risiko):
javascript
/*
Parameter strategi (ditambah dalam tab "Parameter" pada halaman penyuntingan strategi FMZ):
OPENROUTER_API_KEY : jenis string, isi API Key OpenRouter anda
AI_MODEL : jenis string, nilai lalai "google/gemini-2.5-flash", boleh ditukar kepada model lain
*/
// Lapisan keputusan semantik: Panggil AI melalui OpenRouter untuk mendapatkan sentimen pasaran
function getAISentiment() {
var prompt = "Analisis berita pasaran mata wang kripto semasa, beri skor sentimen (-1 hingga 1, -1 sangat panik, 1 sangat tamak), hanya kembalikan satu nombor"
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)
// Apabila AI mengembalikan format tidak normal, guna semula kepada nilai neutral – kebolehpercayaan sistem tidak bergantung pada setiap output AI yang betul
if (isNaN(score) || score < -1 || score > 1) {
Log("Format kembalian AI tidak normal, guna nilai lalai 0")
score = 0
}
Log("Skor sentimen AI:", score)
return score
}
function main() {
var lastSignalTime = 0 // Catat masa K-line bagi isyarat terakhir untuk mengelakkan pencetus 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]
// Semak status pegangan
var pos = exchange.GetPosition()
var hasPosition = pos && pos.length > 0
// Lapisan pertama: Isyarat pasti sebagai "ambang", lintasan emas + tiada pegangan + belum diproses pada K-line ini, baru tanya AI
if (isBullCross && !hasPosition && curTime !== lastSignalTime) {
lastSignalTime = curTime
var sentiment = getAISentiment()
// Lapisan kedua: Sentimen AI sebagai "rujukan", mempengaruhi saiz posisi tetapi tidak mencetuskan dagangan secara bebas
if (sentiment > 0.2) {
exchange.SetDirection("buy")
exchange.Buy(records[idx].Close, 1)
Log("Lintasan emas + AI bullish, buka penuh")
} else if (sentiment > -0.3) {
exchange.SetDirection("buy")
exchange.Buy(records[idx].Close, 0.5)
Log("Lintasan emas + AI neutral, buka separuh")
} else {
Log("Lintasan emas tetapi AI bearish, langkau isyarat ini")
}
}
// Lintasan maut tutup posisi: Peraturan pasti, tidak melalui AI
if (isBearCross && hasPosition) {
exchange.SetDirection("closebuy")
exchange.Sell(records[idx].Close, pos[0].Amount)
Log("Lintasan maut purata bergerak, tutup posisi")
}
// Lapisan ketiga: Stop loss adalah "undang-undang besi", tidak melalui AI
if (hasPosition) {
var curPrice = records[idx].Close
var entryPrice = pos[0].Price
if (curPrice < entryPrice * 0.97) { // Turun bawah 3% daripada harga buka
exchange.SetDirection("closebuy")
exchange.Sell(curPrice, pos[0].Amount)
Log("Stop loss dicetus, tutup posisi tanpa syarat, rugi", ((curPrice/entryPrice - 1)*100).toFixed(2), "%")
}
}
Sleep(60 * 1000)
}
}
Logik teras kod ini wajar diulas:
1. Lintasan emas purata bergerak adalah "ambang". Hanya apabila isyarat pasti dicetuskan, AI akan dipanggil. Tidak setiap K-line perlu bertanya model besar – menjimatkan wang (API model besar dikenakan bayaran mengikut token) dan mengelakkan bunyi. Ini selari dengan pendekatan Anthropic: penapis biasa dahulu, baru proses yang lebih berat apabila dipadankan.
2. Sentimen AI adalah "rujukan". Ia mempengaruhi saiz posisi dan sama ada isyarat dilangkau, tetapi tidak mencetuskan dagangan secara bebas. Perhatikan kod mengendalikan pengecualian pada nilai kembalian AI – jika model besar mengembalikan kandungan yang tidak boleh dihuraikan, ia terus guna semula kepada nilai neutral 0. Kebolehpercayaan sistem tidak harus bergantung pada setiap output AI yang betul.
3. Stop loss adalah "undang-undang besi". Turun bawah 3% daripada harga buka, tutup posisi tanpa syarat, tidak tanya AI. AI mungkin kata "bullish jangka panjang", tetapi akaun anda mungkin tidak tahan sehingga jangka panjang. Di sini, peratusan harga digunakan sebagai stop loss keras, tanpa melalui sebarang pertimbangan kabur.
Inilah cara yang betul untuk Vibe Trading: Gunakan bahasa semula jadi untuk bantu AI "merasai" suasana pasaran, gunakan kod pasti untuk "melaksanakan" tindakan dagangan. Sempadan antara keduanya tidak boleh kabur.
Cadangan praktikal: Dalam sistem backtest FMZ, jalankan dahulu strategi purata bergerak tulen sebagai garis dasar, kemudian tambah lapisan sentimen AI, bandingkan pulangan dan pengeluaran. Jika AI menjadikannya lebih teruk – ini bermakna pelapisan ada masalah, mungkin AI campur tangan di tempat yang sepatutnya tidak. Setiap kali AI mengembalikan hasil, gunakan Log() untuk merekod, memudahkan semakan semula setiap keputusan.
五、Bawa Satu Kalimat
Syarikat AI termaju menggunakan ungkapan biasa untuk mengesan sentimen, bukan kerana mereka tidak boleh membina AI yang lebih baik.
Ia kerana mereka tahu: Memilih alat yang tepat lebih penting daripada memilih alat yang kuat.
Strategi purata bergerak tidak seksi, ungkapan biasa tidak canggih. Tetapi dalam domain mereka sendiri, ia lebih boleh dipercayai daripada mana-mana AI.
Sebaliknya, apabila anda perlu mengekstrak daripada laporan makro 5000 patah perkataan sama ada "laporan ini bullish atau bearish terhadap BTC" – purata bergerak tidak boleh membantu, ungkapan biasa juga tidak boleh membantu. Di sinilah AI patut dimainkan.
Bukan persoalan "guna AI atau tidak", tetapi persoalan "guna di lapisan mana".
Fail ungkapan biasa yang tidak menonjol dalam kod sumber Claude Code telah menjawab soalan yang sering diabaikan. Dan FMZ memberi anda infrastruktur pelapisan siap sedia – antara muka pertukaran, pengiraan indikator, pengurusan dagangan langsung, audit log semuanya telah disediakan, anda hanya perlu fikirkan: Keputusan mana serahkan kepada TA.MA(), keputusan mana serahkan kepada AI.
Sumber Rujukan:
- Alex Kim - The Claude Code Source Leak — Analisis Pengesanan Frustasi Ungkapan Biasa
- FMZ - Building an AI-Powered Automated Trading System — Seni Bina Otak AI + Tangan FMZ
- TradingAgents - Multi-Agents LLM Financial Trading Framework — Rangka Kerja Sumber Terbuka Perdagangan Kuantitatif Berbilang Ejen
- Kertas Kerja TradingAgents — Penyelidikan Akademik Rangka Kerja Perdagangan Kewangan Berbilang Ejen
- VentureBeat - Claude Code Source Code Leak
- 1


