Type/to search
2
Follow
484
Followers
Mendistilasi pengalaman 99 trader menjadi satu strategi: Ide implementasi distilasi konsensus KOL di FMZ
Discussions
Created 2026-04-30 14:07:08  Updated 2026-05-09 10:24:15
 0
 300

img

Belakangan ini, kata "distilasi" semakin sering digunakan. Di bidang AI, ini biasanya berarti menyuling kemampuan kompleks menjadi struktur yang lebih ringkas dan dapat digunakan kembali; dalam riset strategi, pemikiran yang sama juga berlaku. Lebih langsungnya, ini tentang mengatur pengetahuan yang awalnya tersebar, kabur, dan bergantung pada pengalaman subjektif menjadi sebuah sistem yang dapat dihitung, diverifikasi, dan terus diperbaiki.

Proyek crypto-kol-quant ini sedang populer belakangan. Yang benar-benar menarik bukanlah berapa banyak KOL yang diambilnya, atau bahwa ia menggunakan LLM, melainkan ia mencoba melakukan sesuatu yang jarang terjadi dalam riset kuantitatif: menyuling pengalaman trader menjadi sekumpulan faktor kemampuan yang dapat dihitung, kemudian mengagregasikannya lebih lanjut menjadi sinyal konsensus. Masalah ini sendiri layak ditanggapi dengan serius. Karena jika sekelompok trader yang aktif dalam jangka panjang dengan gaya yang stabil benar-benar telah membentuk kerangka kognitif mereka sendiri di pasar, maka secara teori kerangka-kerangka ini seharusnya tidak hanya ada dalam tweet, grafik, dan potongan-potongan kata; mereka juga harus memiliki kesempatan untuk diekstraksi, diatur, dan dimasukkan ke dalam jalur strategi yang dapat dijalankan.

img

Berdasarkan pemikiran ini, kami membuat implementasi awal di lingkungan kuantitatif penemu. Fokusnya bukan sekadar "memindahkan" proyek, tetapi benar-benar menghubungkan logika intinya: pertama ambil data pasar, lalu terjemahkan pasar ke dalam status terstruktur; kemudian berdasarkan status-status ini, nilai kemampuan trading mana yang sedang dipicu; lalu petakan kembali kemampuan-kemampuan ini ke profil trader; dan akhirnya agregasikan penilaian individu dari berbagai trader menjadi sinyal konsensus berbobot. Ini jelas belum menjadi sistem trading yang matang, tetapi setidaknya menyelesaikan satu hal penting: membuktikan bahwa pengalaman trader memang dapat dikompresi, distrukturisasi, dan benar-benar dimasukkan ke dalam proses penilaian strategi.

Objek distilasi bukanlah opini, melainkan kemampuan trading

Banyak orang saat pertama kali mengenal proyek semacam ini mudah memahaminya sebagai "strategi sentimen KOL". Namun, ini sebenarnya tidak akurat. Apa yang benar-benar dilakukan proyek asli bukanlah sekadar menilai siapa yang lebih optimis hari ini, atau menghitung siapa yang berseru beli, siapa yang berseru jual, melainkan melangkah lebih jauh untuk bertanya: Bagaimana sebenarnya trader ini memahami pasar? Dalam struktur apa dia cenderung bullish? Apakah dia lebih memperhatikan tren, posisi, pola, volatilitas, atau lingkungan makro? Bisakah cara penilaian ini diatur menjadi serangkaian label kemampuan yang stabil?

Begitu pertanyaan diajukan seperti ini, fokus strategi berubah. Sistem tidak lagi peduli pada satu kalimat tertentu, tetapi pada metodologi di balik kalimat itu. Dengan kata lain, apa yang benar-benar disuling oleh strategi ini bukanlah teks, melainkan pengetahuan trading itu sendiri. Ini mencoba menerjemahkan pengalaman subjektif yang awalnya bergantung pada pemahaman manusia menjadi kemampuan terstruktur yang dapat dikenali dan dipanggil oleh program. Inilah perbedaan terbesarnya dengan model sentimen biasa: ini bukan untuk menilai seberapa panas sentimen pasar, tetapi untuk merekonstruksi bagaimana kerangka trading yang berbeda bereaksi di pasar saat ini.

Langkah Pertama: Terjemahkan Pasar ke dalam Variabel Status

Agar distilasi benar-benar dapat diimplementasikan, langkah pertama pasti bukan prediksi, melainkan rekayasa fitur. Alasannya sederhana: bahasa trader ditujukan untuk manusia, bukan untuk program. Misalnya, kalimat "harga memantul dari rata-rata bergerak kunci, ini adalah titik masuk kedua yang bagus" mudah dipahami oleh trader, tetapi bagi program, ini harus dipecah terlebih dahulu: rata-rata bergerak kuncinya apa, apakah 50 hari atau 200 hari; apakah harga saat ini mendekati rata-rata bergerak ini; apakah tren telah rusak; apakah ada sinyal penerimaan.

Jadi, yang pertama harus dilakukan sistem bukanlah memberikan kesimpulan bullish/bearish, tetapi mengubah data harga mentah menjadi sekumpulan status terstruktur. Lapisan paling dasar di sini adalah menggunakan harga untuk membangun fitur tren dan momentum. Variabel seperti rata-rata bergerak, rata-rata bergerak eksponensial, RSI, MACD, bukan untuk menumpuk indikator, tetapi untuk menjawab pertanyaan sederhana: Dalam keadaan apa pasar saat ini secara kasar?

img

Kode kuncinya adalah sebagai berikut:

python
# Gunakan rata-rata bergerak dari berbagai periode untuk menggambarkan posisi tren harga f['ma20'] = _sma(c,20) f['ma50'] = _sma(c,50) f['ma100'] = _sma(c,100) f['ma200'] = _sma(c,200) # Rata-rata bergerak eksponensial lebih sensitif terhadap perubahan harga terkini f['ema20'] = _ema(c,20) f['ema50'] = _ema(c,50) # RSI digunakan untuk menggambarkan apakah pasar memasuki kondisi overbought/oversold, atau momentum melemah f['rsi14'] = _rsi(c,14) # MACD beserta garis sinyal dan histogramnya, digunakan untuk mengamati perubahan tren dan momentum ml, ms, mh = _macd(c) f['macd'] = ml f['macd_sig'] = ms f['macd_hist'] = mh

Apa yang dilakukan kode ini tidaklah rumit. Rata-rata bergerak membantu sistem menilai posisi harga saat ini relatif terhadap tren jangka panjang, RSI dan MACD digunakan untuk menggambarkan apakah momentum menguat atau melemah. Ini belum memasuki penilaian trading, hanya membangun lapisan "deskripsi status pasar".

Selanjutnya, sistem juga perlu menambahkan volatilitas dan hubungan posisi, karena banyak penilaian trading tidak hanya bergantung pada tren, tetapi juga pada "apakah saat ini periode kontraksi volatilitas" dan "apakah harga mendekati titik tertinggi atau terendah kisaran".

Kode yang sesuai adalah:

python
# Log return adalah dasar untuk menghitung volatilitas logr = np.log(c / c.shift(1)) # Volatilitas annualized 30 hari terakhir, digunakan untuk mengukur tingkat volatilitas pasar saat ini f['rv30'] = logr.rolling(30, min_periods=10).std() * np.sqrt(365) # Titik tertinggi dan terendah 20 hari dan 50 hari terakhir, digunakan untuk menilai posisi harga f['high_20d'] = h.rolling(20, min_periods=1).max() f['low_20d'] = l.rolling(20, min_periods=1).min() f['high_50d'] = h.rolling(50, min_periods=1).max() f['low_50d'] = l.rolling(50, min_periods=1).min()

Di sini rv30 mewakili tingkat volatilitas annualized 30 hari terakhir, sedangkan titik tertinggi dan terendah kisaran digunakan untuk membantu sistem menilai, di mana posisi harga saat ini dalam struktur harga terkini. Selain itu, latar belakang makro juga dimasukkan ke dalam ruang status secara bersamaan. Karena ada jenis trader yang tidak hanya melihat harga koin itu sendiri, mereka juga mengamati Indeks Dolar AS, sentimen risiko pasar saham, dan lingkungan suku bunga. Cara penanganan yang sesuai dalam kode adalah, pertama menyelaraskan variabel-variabel ini berdasarkan hari, lalu mengubahnya menjadi status yang dapat dibaca:

python
# DXY sebagai variabel latar belakang kekuatan/kelemahan dolar if 'DXY' in macro: dxy = _align(macro['DXY']) f['dxy_ret_20d'] = dxy.pct_change(20) f['dxy_trend_down'] = (dxy.pct_change(20) < -0.01).astype(int) # SPX sebagai variabel latar belakang sentimen risiko if 'SPX' in macro: spx = _align(macro['SPX']) f['spx_ret_20d'] = spx.pct_change(20) f['spx_trend_up'] = (spx.pct_change(20) > 0).astype(int)

Makna dari langkah ini dapat diringkas dalam satu kalimat: Pertama, terjemahkan "bagaimana keadaan pasar saat ini" ke dalam status terstruktur yang dapat terus dibaca oleh mesin. Tanpa lapisan ini, distilasi selanjutnya tidak mungkin dilakukan.

Langkah Kedua: Tulis Pengalaman Subjektif menjadi Faktor Kemampuan

Hanya memiliki fitur saja tidak cukup, karena fitur hanya mendeskripsikan pasar, tidak secara langsung mengekspresikan "apa arti status ini". Langkah selanjutnya adalah menulis pengalaman trader menjadi aturan, yaitu berdasarkan variabel status saat ini, menilai kemampuan trading mana yang sedang dipicu.

Langkah ini adalah bagian yang paling kuat dalam rasa distilasi dari keseluruhan strategi. Karena di sini tidak lagi secara abstrak mengatakan "kerangka tertentu itu penting", tetapi benar-benar menulisnya menjadi kondisi program. Faktor kemampuan yang terkandung dalam implementasi saat ini mencakup beberapa level: pola, struktur, indikator, siklus, dan makro. Misalnya, beberapa kemampuan berasal dari pengenalan pola, seperti bull flag, bear flag, double top/bottom, head and shoulders, triangle; beberapa berasal dari analisis struktur, seperti kerangka Wyckoff, SMC, ICT; beberapa berasal dari indikator itu sendiri, seperti divergensi RSI, golden cross/death cross rata-rata bergerak, Bollinger squeeze breakout; dan beberapa berasal dari siklus dan lingkungan makro, seperti siklus halving, pergeseran antara tren dan sideways, penurunan DXY, peningkatan sentimen risiko, dll.

Contoh yang sangat khas adalah "kelanjutan pullback tren". Banyak trader memiliki pengalaman serupa: jika tren besar masih naik, harga memantul dari rata-rata bergerak kunci, dan candle saat ini menunjukkan penerimaan, maka ini sering berarti kelanjutan tren. Ekspresi program untuk ini sangat langsung:

python
# Menilai apakah harga saat ini mendekati rata-rata bergerak 50 hari near_ma50 = abs(close - ma50_v) / close < 0.02 if close > 0 else False # Jika rata-rata bergerak 50 hari masih di atas rata-rata bergerak 200 hari, dan setelah memantul dari rata-rata muncul candle hijau yang menerima # maka catat sebagai sinyal kemampuan kelanjutan tren s['cap_014_trend_pullback_continuation'] = 0.6 if (ma50_gt and near_ma50 and is_green) else 0.0

Tidak ada yang misterius di sini, ia hanya memecah satu kalimat manusia menjadi beberapa kondisi yang dapat dinilai satu per satu oleh mesin. Contoh lainnya adalah "Bollinger squeeze breakout". Bagi banyak trader, kontraksi volatilitas yang berkepanjangan kemudian tiba-tiba melebar ke atas atau ke bawah sering berarti pemilihan arah baru. Aturan yang sesuai ditulis sebagai:

python
# Jika lebar Bollinger band candle sebelumnya di bawah ambang kontraksi, maka dianggap kontraksi volatilitas squeezed = bb_w_p1 < bb_w20_p1 if bb_w20_p1 > 0 else False # Setelah kontraksi, jika menembus ke atas pita atas, beri sinyal positif; jika menembus ke bawah pita bawah, beri sinyal negatif s['cap_021_bollinger_squeeze_breakout'] = ( 0.6 if (squeezed and close > bb_u) else -0.6 if (squeezed and close < bb_l) else 0.0 )

Penanganan faktor makro juga sama. Untuk trader yang lebih condong ke makro, BTC bukanlah rangkaian harga yang sepenuhnya terisolasi, ia dipengaruhi oleh dolar, pasar saham, dan lingkungan suku bunga, sehingga pemahaman ini juga ditulis menjadi penilaian kemampuan:

python
# Penurunan DXY biasanya dianggap sebagai latar belakang yang positif bagi BTC s['cap_027_dxy_inverse_btc'] = 0.4 if (not _nm(dxy_r20) and dxy_r20 < -0.01) else 0.0 # Kenaikan S&P dapat dianggap sebagai peningkatan risk appetite s['cap_028_spx_risk_on_off'] = 0.4 if (not _nm(spx_r20) and spx_r20 > 0.02) else 0.0 # Penurunan suku bunga jangka pendek dapat dianggap sebagai perbaikan likuiditas marjinal s['cap_029_yields_liquidity'] = 0.4 if (not _nm(y_r20) and y_r20 < -0.02) else 0.0

Yang benar-benar penting dari lapisan ini bukanlah berapa banyak aturan yang ditulis, tetapi bahwa ia menyelesaikan langkah paling krusial dalam distilasi: mengompresi penilaian yang tadinya hanya bisa dipahami secara subjektif menjadi kondisi yang dapat dihitung. Perlu dicatat bahwa sebagian besar faktor kemampuan pada versi saat ini masih berupa pemicu kondisi, bukan skor berkelanjutan. Ini berarti sistem lebih cenderung menilai apakah suatu struktur terpenuhi, daripada terus-menerus memberi harga ulang pada setiap fluktuasi kecil. Hal ini juga menentukan bahwa sistem saat ini lebih cocok untuk penilaian harian atau frekuensi menengah-rendah, bukan perdagangan frekuensi tinggi.

Langkah ketiga: Faktor tidak langsung dijumlahkan, tetapi dipetakan kembali ke profil trader

img

Jika strategi hanya berhenti pada lapisan faktor, maka itu tetaplah sistem aturan biasa. Yang lebih istimewa dari proyek asli adalah bahwa ia tidak berhenti di sini, tetapi terus maju selangkah lebih jauh: faktor tidak langsung menentukan arah, tetapi terlebih dahulu dipetakan kembali ke profil trader.

Poin ini sangat krusial. Karena dalam kenyataannya, seorang trader tidak "menggunakan semua kemampuan secara rata-rata". Ada yang condong ke tren, ada yang condong ke struktur, ada yang condong ke siklus, dan ada yang condong ke makro. Bahkan saat menghadapi kondisi pasar yang sama, fokus perhatian masing-masing orang bisa sangat berbeda. Jadi sistem tidak akan begitu saja merata-ratakan semua faktor, melainkan pertama-tama membaca preferensi kemampuan masing-masing trader, lalu menghitung sinyal pribadi untuknya berdasarkan status faktor saat ini.

Logika pembacaan profil yang sesuai adalah sebagai berikut:

python
# Membaca faktor kemampuan dan bobot yang digunakan oleh setiap trader dalam profil caps = {c['id']: float(c.get('weight', 0.5)) for c in p.get('capabilities_used', [])} profiles.append({ 'handle': p.get('handle', item['name'][:-5]), 'caps': caps })

Setiap profil pada dasarnya menjawab satu pertanyaan: faktor kemampuan mana yang lebih diandalkan oleh trader ini, dan seberapa besar bobot kemampuan-kemampuan tersebut dalam kerangkanya. Setelah memiliki profil ini, sistem baru akan menghitung "sinyal pribadi" masing-masing trader dalam pasar saat ini:

python
for p in profiles: sig = 0.0 wt = 0.0 # Iterasi semua faktor kemampuan yang menjadi perhatian trader ini for cap_id, w in p['caps'].items(): score = factor_scores.get(cap_id, 0.0) # Skor faktor saat ini dikalikan dengan bobot preferensi trader terhadap faktor tersebut sig += w * score wt += abs(w) # Setelah dinormalisasi, diperoleh sinyal pribadi trader dalam pasar saat ini trader_raw = sig / wt if wt > 0 else 0.0

Melihat ini, nuansa sistem ini sebenarnya sudah sangat berbeda. Ia tidak lagi sekadar melihat "faktor mana yang menyala", tetapi sedang merekonstruksi secara aproksimatif satu hal: jika pasar hari ini diserahkan kepada 99 trader ini, bagaimana kira-kira penilaian masing-masing.

Langkah keempat: Dari sinyal pribadi menuju konsensus tertimbang

img

Ketika sinyal pribadi setiap trader sudah dihitung, sistem baru memasuki lapisan konsensus yang sesungguhnya. "Konsensus" di sini bukanlah pemungutan suara sederhana, apalagi siapa yang paling keras suaranya dialah yang berkuasa, melainkan lebih lanjut mempertimbangkan efektivitas historis.

Dua hasil terpenting dalam kode saat ini adalah ic_weighted dan trust_adjusted. Logika inti yang sesuai adalah:

python
# Pertama, beri bobot positif pada trader dengan IC positif, untuk mendapatkan ic_weighted pos_w = sum(max(t['ic'], 0) for t in trader_signals) ic_wt = ( sum(t['signal'] * max(t['ic'], 0) for t in trader_signals) / pos_w if pos_w > 0 else 0.0 ) # trust_adjusted melangkah lebih jauh: # IC positif digunakan searah, IC negatif digunakan terbalik, lalu dibobot berdasarkan nilai absolut IC abs_w = sum(abs(t['ic']) for t in trader_signals) trust = ( sum((t['signal'] if t['ic'] >= 0 else -t['signal']) * abs(t['ic']) for t in trader_signals) / abs_w if abs_w > 0 else 0.0 )

Kode ini mengungkapkan dua prinsip yang sangat sederhana namun sangat penting. Pertama, trader yang secara historis lebih efektif memiliki bobot yang lebih besar pada hari ini. Kedua, trader dengan kinerja historis IC negatif tidak dibuang, tetapi mungkin digunakan sebagai indikator sebaliknya. Oleh karena itu, trust_adjusted yang dihasilkan bukanlah sekadar "bagaimana pendapat semua orang", melainkan "siapa yang berpendapat apa, dan siapa yang lebih layak dipercaya".

Inilah mengapa sistem ini berbeda dari model sentimen biasa. Ia tidak menghitung berapa banyak suara, melainkan melakukan agregasi kognitif yang telah teruji secara historis. Jika seluruh metode ini diringkas dalam satu kalimat, sebenarnya ia adalah: pertama ubah pasar menjadi variabel keadaan, lalu petakan variabel keadaan menjadi faktor kemampuan, lalu petakan faktor kemampuan menjadi sinyal pribadi trader, dan terakhir agregasikan sinyal pribadi ini menurut efektivitas historis menjadi penilaian konsensus.

img

img

Apa yang benar-benar berhasil dijalankan pada implementasi di Inventor

Jika hanya tinggal di proyek riset, sistem ini lebih mirip "penganalisis konsensus"; sedangkan pada implementasi di Inventor, fokus utamanya adalah menyatukan seluruh rantai sehingga dapat berjalan secara berkelanjutan. Kode yang paling inti sebenarnya hanya tiga baris:

python
# Langkah pertama: ubah data harga mentah dan variabel makro menjadi keadaan terstruktur feat_df = build_features(records, macro if macro else None) # Langkah kedua: evaluasi faktor kemampuan mana yang terpicu berdasarkan variabel keadaan saat ini factor_scores = evaluate_factors(feat_df) # Langkah ketiga: petakan faktor kemampuan kembali ke profil trader, dan agregasikan menjadi hasil konsensus consensus = compute_consensus(factor_scores)

Tiga baris ini hampir merupakan tiga lapisan abstraksi terpenting dari seluruh strategi. Lapisan pertama bertanggung jawab atas kondisi pasar, lapisan kedua bertanggung jawab atas penilaian kemampuan, dan lapisan ketiga bertanggung jawab atas konsensus trader. Tentu saja setelahnya masih ada lapisan eksekusi, lapisan manajemen risiko, dan tampilan status, tetapi dari segi logika riset, bagian terpenting sudah lengkap dan valid. Dengan kata lain, makna terpenting dari implementasi ini bukanlah seberapa banyak detail operasional yang ditambahkan, melainkan bahwa dalam proyek asli, profil kemampuan tidak lagi hanya file statis, faktor tidak lagi hanya output riset, dan konsensus tidak lagi hanya angka dalam laporan — semuanya telah dirangkai menjadi alur penilaian yang berjalan terus menerus.

Mengapa ia masih tetap merupakan prototipe

Tentu saja, implementasi ini bukanlah akhir dari segalanya. Kode saat ini menggunakan kerangka harian BTC, sehingga lebih cocok untuk penilaian konsensus frekuensi menengah-rendah, bukan sistem perdagangan frekuensi tinggi. Intinya masih berkisar pada struktur harian, posisi siklus, latar belakang makro, dan preferensi kemampuan trader. Selain itu, profil trader dan IC saat ini masih input statis, belum memasuki tahap evolusi online. Artinya, meskipun sistem telah menyelesaikan langkah pertama "distilasi pengetahuan", ia belum sepenuhnya mencapai "pengetahuan yang telah didistilasi dapat mengoreksi dirinya sendiri".

Namun hal ini tidak menghalangi fakta bahwa ia telah menunjukkan satu hal yang sangat penting: pengalaman trader dapat dikompresi, distrukturisasi lapis demi lapis, dan benar-benar masuk ke dalam rantai strategi. Nilainya bukan karena telah menghasilkan keuntungan yang stabil, melainkan karena telah mendorong jalur riset yang awalnya hanya tinggal di ranah konsep ke tahap yang dapat dijalankan. Adapun bagaimana faktor-faktor kemampuan ini harus berevolusi, bagaimana bobot trader harus diperbarui, dan bagaimana konsensus harus dikoreksi secara berkelanjutan di pasar nyata, masih memerlukan lebih banyak data operasional untuk menjawabnya.

Penutup

Yang benar-benar inspiratif dari crypto-kol-quant bukanlah berapa banyak konsep populer yang digunakannya, melainkan bahwa ia benar-benar telah mendorong selangkah lebih maju sesuatu yang sangat sulit untuk disistematisasi: mengubah pengalaman trader dari ekspresi menjadi kemampuan, dari kemampuan menjadi faktor, dan dari faktor menjadi konsensus. Dan implementasi di Inventor ini, yang dilakukannya adalah benar-benar menjalankan rantai distilasi ini. Ia tidak membesar-besarkan bahwa ia sudah menjadi akhir, juga tidak berusaha menutupi kenyataan bahwa ia masih merupakan prototipe awal. Tetapi setidaknya ia membuktikan bahwa pengalaman trading tidak harus tinggal hanya di grafik dan bahasa; ia dapat didistilasi, distrukturisasi, dijalankan, dan bahkan ditempatkan ke dalam sistem yang terus-menerus menilai pasar.

Jika dikatakan bahwa kuantitatif tradisional unggul dalam menemukan pola dari urutan harga, maka arah yang benar-benar layak untuk terus didorong dari strategi semacam ini mungkin adalah: mengekstrak pola dari kognisi manusia, lalu membiarkan pola-pola ini berpartisipasi kembali di pasar. Dan inilah, mungkin, hal yang paling perlu diperhatikan dari "distilasi" dalam riset strategi.

Proyek asli: 锁妖塔 Skill — 炼化99个加密交易员

Terima kasih khusus kepada pengguna "GiantBin" atas ide dan pemikirannya. Jika Anda memiliki ide dan pemikiran yang baik, selamat berbagi dan berdiskusi.

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