Type/to search
2
Follow
490
Followers
Antara Arbitrase dan Prediksi: Eksperimen Naif dari Strategi Konvergensi Jalur Piala Dunia
Discussions
Created 2026-06-18 09:09:14  Updated 2026-06-22 15:37:13
 0
 210

img

Piala Dunia baru saja dimulai, pasar sudah memberi kita sedikit pelajaran yang mengejutkan: tim kuat tidak selalu aman, hanya saja cara mereka tergelincir seringkali lebih kreatif dari yang kita bayangkan.

Misalnya Spanyol 0:0 Cape Verde. Sebelum pertandingan, jika hanya melihat kekuatan, peringkat, dan kedalaman skuad, kebanyakan orang akan berpikir sederhana: Spanyol seharusnya bisa menang, kan? Tapi di sinilah letak daya tarik dan juga sisi menyiksa sepak bola bagi para trader. Anda pikir Anda membeli "kemenangan tim kuat", padahal sebenarnya Anda membeli sebuah drama nasib sepanjang 90 menit. 15 menit pertama belum ada gol, odds bergerak sedikit; setengah jam masih 0:0, pasar mulai mengernyitkan dahi; sampai menit ke-70 belum ada perubahan, kemenangan tim kuat yang tadinya terlihat aman tiba-tiba tidak lagi stabil.

img

Pada titik ini, kita sering menemukan kontradiksi klasik: arbitrase itu baik, prediksi itu sulit.

Arbitrase sejati, secara teori, seharusnya tanpa risiko. Misalnya menemukan sekumpulan kontrak yang saling eksklusif dan lengkap, apa pun yang terjadi pada akhirnya, portofolio tersebut akan terbayar, dan biaya pembeliannya lebih rendah dari nilai pembayaran. Kedengarannya indah, seperti tidur siang versi trader. Tapi masalahnya di sini: peluang seperti itu terlalu langka, ketika muncul seringkali cepat hilang, dan kapasitasnya mungkin tidak mencukupi.

Prediksi adalah masalah lain. Anda bisa menilai bahwa tim kuat kemungkinan besar menang, bisa menganalisis skuad, kondisi, jadwal, cedera, juga bisa melihat probabilitas implisit dari odds, tetapi pertandingan tidak akan bekerja sama hanya karena kita menganalisis dengan serius. Terutama dalam sepak bola, kartu merah di awal, tiang gawang, VAR yang aneh, semuanya bisa mengubah logika yang indah menjadi tiga detik hening dalam analisis pasca-pertandingan.

img

Jadi pertanyaannya: jika arbitrase murni terlalu langka, dan prediksi murni terlalu acak, bisakah kita berdiri di antara keduanya? Pasar sendiri sudah memberi kita beberapa probabilitas awal, seperti harga kemenangan tim kuat, harga 0:0, harga 0:1. Harga-harga ini tidak muncul begitu saja, mereka mencerminkan penilaian kolektif pasar terhadap berbagai jalur. Bisakah kita menggunakan probabilitas awal ini, ditambah sedikit model matematika kita sendiri, untuk membangun portofolio yang tidak sempurna tetapi lebih terlindungi, guna membuka celah "konvergensi jalur"?

Inilah titik awal dari ide ini.

Ini bukan arbitrase bebas risiko tradisional, juga bukan prediksi asal-asalan. Ini lebih seperti kompromi: pertama, akui bahwa probabilitas utama yang diberikan pasar memiliki nilai referensi; kemudian, gunakan probabilitas jalur rendah untuk melindungi bagian paling rentan dari penilaian utama; pada saat yang sama, gunakan model sederhana untuk memeriksa apakah harga masih dapat diterima.

Anggap saja dalam suatu pertandingan, Brasil jelas lebih unggul dari Haiti. Harga pasar untuk kemenangan Brasil adalah 0,89, menunjukkan bahwa Brasil menang adalah jalur utama yang kuat. Tapi kita tidak hanya membeli kemenangan Brasil secara langsung, kita juga mengamati dua jalur perlindungan: 0:0 dan 0:1. Karena untuk penilaian kemenangan tim kuat, skenario awal yang paling menyakitkan seringkali bukan semua hasil, melainkan pertandingan yang berjalan lambat atau tim lemah mencetak gol lebih dulu.

Maka portofolio awal menjadi:

text
Brasil menang Yes 0:0 Yes 0:1 Yes

Misalkan harganya:

text
Brasil menang = 0,89 0:0 = 0,016 0:1 = 0,011

Total biaya tiga kaki:

text
C = 0,89 + 0,016 + 0,011 = 0,917

Kumpulan ini bukan kejadian yang lengkap. Ia tidak mencakup 1:1, 0:2, 2:2, juga tidak mencakup semua skenario aneh. Jadi jika ditahan hingga akhir pertandingan, tentu bisa rugi, bahkan mungkin rugi langsung. Tapi ia memiliki satu karakteristik penting: ia menggabungkan tiga probabilitas yang sudah diberikan pasar menjadi satu keranjang jalur yang berpusat pada kemenangan tim utama.

Jika akhirnya Brasil menang, portofolio membayar 1. Jika akhirnya 0:0 atau 0:1, juga membayar 1. Dengan kata lain, ia membeli:

img

text
Brasil menang ∪ 0:0 ∪ 0:1

Jika salah satu dari jalur ini terjadi, pembayaran saat jatuh tempo adalah 1. Biayanya 0,917, ada ruang 0,083 dalam jalur yang dicakup. Tapi kunci sebenarnya bukan pada akhir pertandingan, melainkan di tengah jalan.

Jika Brasil mencetak gol lebih awal, skor menjadi 1:0, maka dua kaki perlindungan 0:0 dan 0:1 pada dasarnya menjadi nol, tetapi harga kemenangan Brasil akan naik. Selama harga jual kemenangan Brasil saat itu melebihi total biaya awal ditambah target keuntungan, kita bisa menutup posisi kemenangan tim utama dan mengkonvergensi portofolio lebih awal.

Rumusnya sederhana:

text
Kondisi ambil untung = bid kemenangan Brasil >= total biaya awal C + target keuntungan

Misalnya target keuntungan 0,02:

text
Harga pemicu = 0,917 + 0,02 = 0,937

Jika setelah 1:0, bid kemenangan Brasil mencapai 0,95, maka:

text
Keuntungan terkunci = 0,95 - 0,917 = 0,033

Di sini kita tidak bergantung pada hasil akhir untuk mendapatkan keuntungan, melainkan karena jalur pertandingan memasuki cabang yang menguntungkan, kita menjual portofolio lebih awal. Proses ini seperti pasar membukakan jendela kecil untukmu, jangan berdiri di dekat jendela menulis puisi, lewatlah dulu.

Tapi ada satu masalah lagi: apakah tiga kaki yang tampak murah ini layak dibeli? Belum tentu. Harga pasar hanyalah lapisan informasi pertama. Kita masih perlu pengukur referensi sendiri, meskipun sangat sederhana.

Di sini saya menggunakan model gol Poisson yang paling dasar.

Skor sepak bola secara kasar dapat dilihat sebagai proses acak di mana dua tim mencetak gol dalam 90 menit. Asumsikan ekspektasi jumlah gol tim tuan rumah dalam 90 menit adalah λ_home, dan ekspektasi jumlah gol tim tamu adalah λ_away, maka probabilitas tim tuan rumah mencetak i gol dan tim tamu mencetak j gol dapat ditulis:

text
P(i, j) = Pois(i; λ_home) × Pois(j; λ_away)

di mana:

text
Pois(k; λ) = e^(-λ) × λ^k / k!

img

Tentu saja model ini sangat kasar. Sepak bola bukanlah dua mesin undian independen; setelah gol, taktik berubah, kartu merah mengubah segalanya, mentalitas juga berubah. Tapi kelebihannya adalah sederhana, transparan, setidaknya membantu kita untuk tidak bertindak hanya berdasarkan perasaan.

Sebelum pertandingan, model Poisson bisa memberi kita referensi awal. Kita bisa memberikan λ_home dan λ_away secara manual, atau membiarkan program menghitungnya secara terbalik dari harga pasar untuk skor eksak. Misalnya, harga pasar untuk skor 0:0, 0:1, 1:0, 1:1, 2:0, 2:1, 3:0, masing-masing merupakan titik probabilitas yang diberikan pasar. Program perlu mencari sepasang λ_home dan λ_away sehingga probabilitas skor dari model Poisson sedekat mungkin dengan harga pasar ini.

Dengan kata lain, pasar berkata: "Saya pikir skor-skor ini kira-kira bernilai uang sebanyak ini." Model Poisson berbisik di samping: "Biarkan saya mencoba menyesuaikannya, untuk melihat intensitas gol apa yang tersirat di balik harga ini."

Dalam strategi, kita bisa mengatur:

python
CALIBRATE_LAMBDA_FROM_MARKET = True MODEL_SCORE_SAMPLES = "0-0,0-1,1-0,1-1,2-0,2-1,3-0"

Skor-skor ini hanya digunakan untuk pemodelan, tidak ikut dalam transaksi. Kaki yang benar-benar diperdagangkan tetaplah:

text
Kemenangan tim target 0:0 0:1

Dalam kode, pencarian grid digunakan untuk menyesuaikan λ. Ini tidak rumit, tetapi intuitif.

python
def fit_lambdas_from_score_markets(quotes, model_score_legs, event_state=None): samples = [] live_score = event_state.get("score_tuple") if event_state else None minute = event_state.get("elapsed") if event_state else None is_live = bool(live_score and minute not in [None, ""]) for leg in model_score_legs: q = quotes.get(leg["name"]) p_market = quote_probability(q) if p_market is None: continue target_h, target_a = parse_score_text(leg["score"]) if is_live: current_h, current_a = live_score if current_h > target_h or current_a > target_a: continue samples.append((target_h - current_h, target_a - current_a, p_market, leg["score"])) else: samples.append((target_h, target_a, p_market, leg["score"])) if len(samples) < 2: return None best = None for ih in range(5, 501, 5): lh = ih / 100.0 for ia in range(5, 501, 5): la = ia / 100.0 err = 0.0 for add_h, add_a, p_market, _score in samples: p_model = poisson_pmf(add_h, lh) * poisson_pmf(add_a, la) err += (p_model - p_market) ** 2 if best is None or err < best["err"]: best = {"lambda_home": lh, "lambda_away": la, "err": err, "samples": samples} if is_live: ratio = max(0.01, max(0.0, 90.0 - float(minute)) / 90.0) best["lambda_home"] = best["lambda_home"] / ratio best["lambda_away"] = best["lambda_away"] / ratio best["source"] = "live_score_markets" else: best["source"] = "pre_match_score_markets" return best

Sebelum pertandingan, λ ini hanyalah kalibrasi awal. Karena pertandingan belum dimulai, tidak ada jalur waktu nyata yang dapat diperbarui, skor default masih 0:0, dan sisa waktu adalah 90 menit. Pada tahap ini, kami menggunakannya sebagai filter masuk:

text
Probabilitas cakupan model = P(tim target menang) + P(0:0) + P(0:1)

Kemudian mensyaratkan:

text
Probabilitas cakupan model - biaya pasar >= margin keamanan

Hanya ketika harga pasar cukup murah dan model juga menganggap keranjang ini memiliki sedikit keunggulan, barulah kami mengizinkan pembukaan posisi.

Yang benar-benar menarik adalah setelah pertandingan dimulai.

Setelah pertandingan dimulai, model Poisson tidak lagi statis. Misalkan pertandingan memasuki menit ke-30, skor saat ini masih 0:0, maka sisa waktu hanya 60 menit, intensitas gol di masa depan harus dikurangi sesuai sisa waktu:

text
λ_home_sisa = λ_home × (90 - t) / 90 λ_away_sisa = λ_away × (90 - t) / 90

Jika skor saat ini sudah 1:0, maka 0:0 dan 0:1 tidak mungkin lagi terjadi. Pada saat ini model harus berangkat dari skor saat ini, hanya menghitung berapa banyak gol yang akan dicetak di sisa waktu. Skor akhir seperti 2:0, 2:1, 3:0, 1:1 yang masih mungkin terjadi, baru berhak berpartisipasi dalam estimasi baru.

Inilah kunci dari pembaruan Poisson real-time: bukan hanya secara mekanis memperkecil λ pra-pertandingan setiap menit, tetapi menggabungkan skor saat ini, sisa waktu, dan pasar skor tepat yang masih mungkin terjadi untuk memperkirakan kembali bagaimana pertandingan ini bisa berjalan selanjutnya.

Pada akhirnya, strategi menjadi tiga lapis penilaian.

Lapisan pertama adalah biaya pasar:

text
win_ask + 0:0_ask + 0:1_ask <= biaya maksimum yang diizinkan

Lapisan kedua adalah filter Poisson:

text
Probabilitas cakupan model - biaya pasar >= margin keamanan

Lapisan ketiga adalah konvergensi jalur:

text
Nilai bid dari kombinasi saat ini >= biaya awal + target profit

Hanya ketika lapisan pertama dan kedua terpenuhi secara bersamaan, baru dipertimbangkan untuk masuk. Setelah masuk, tidak lagi mengandalkan model untuk berfantasi tentang hasil akhir, tetapi menggunakan bid nyata dari pasar untuk menentukan apakah bisa keluar. Model bertanggung jawab meningkatkan kualitas masuk, pasar bertanggung jawab menentukan apakah bisa direalisasikan.

Pencarian kontrak juga diusahakan sesederhana mungkin. Slug pasar Piala Dunia Polymarket sangat teratur. Misalnya, event slug suatu pertandingan adalah:

python
EVENT_SLUG = "fifwc-aut-jor-2026-06-17"

Jika kita melindungi kemenangan Jordan, akhiran kontrak kemenangan yang sesuai adalah:

python
WIN_SUFFIX = "jor"

Maka tiga kontrak yang diperlukan untuk trading dapat langsung digabungkan:

python
def yes_symbol(slug): return slug + "_USDC.Yes" def build_legs(): legs = [ { "name": "win", "slug": EVENT_SLUG + "-" + WIN_SUFFIX, "symbol": yes_symbol(EVENT_SLUG + "-" + WIN_SUFFIX), "kind": "win", } ] for score in parse_scores(PROTECT_SCORES): legs.append( { "name": "score_" + score.replace("-", "_"), "slug": EVENT_SLUG + "-exact-score-" + score, "symbol": yes_symbol(EVENT_SLUG + "-exact-score-" + score), "kind": "score", "score": score, } ) return legs

Di sini usahakan jangan menggunakan nama tim untuk pencarian kabur. Misalnya mencari Jordan, sangat mudah menemukan Michael B. Jordan, Jordan Pickford, Jordan Spieth, akhirnya strategi sepak bola belum dimulai, industri hiburan, kiper Inggris, dan golf sudah duduk bersama. Menggunakan event slug untuk menggabungkan kontrak jauh lebih bersih.

Selama pertandingan juga perlu skor waktu nyata. Versi pertama bisa langsung mengambil dari Polymarket Gamma event:

python
def get_event_state(): data = get_json(GAMMA_BASE + "/events", slug=EVENT_SLUG) e = data[0] return { "title": e.get("title"), "score": e.get("score"), "score_tuple": parse_score(e.get("score")), "elapsed": e.get("elapsed"), "period": e.get("period"), "live": bool(e.get("live")), "ended": bool(e.get("ended")), "start_time": e.get("startTime"), }

Gabungkan nilai jual saat ini dengan bid dari order book nyata:

python
def basket_bid_value(legs, quotes): total = 0.0 for leg in legs: pos = positions.get(leg["name"], {}) amount = float(pos.get("amount", 0)) if amount <= 0: continue q = quotes.get(leg["name"]) if not q or q["bid"] is None: continue total += amount * q["bid"] return total

Penilaian take profit:

python
cost = current_position_cost() value = basket_bid_value(legs, quotes) target = cost + TARGET_PROFIT * SHARES if value >= target: close_all()

Inilah versi minimalnya. Ia tidak berpura-pura sudah memecahkan prediksi sepak bola, juga tidak mengklaim bisa melakukan arbitrase secara stabil. Ia hanya mencoba meneliti area abu-abu antara "arbitrase" dan "prediksi".

Keindahan arbitrase terletak pada kepastiannya, namun kepastian itu langka. Daya tarik prediksi terletak pada ruangnya yang besar, namun risikonya juga besar. Strategi ini melakukan hal berikut: menggunakan harga prediksi yang diberikan pasar sebagai bahan baku, dengan satu penilaian utama berprobabilitas tinggi, ditambah dua jalur perlindungan berprobabilitas rendah, lalu menggunakan model Poisson sebagai filter kasar, untuk mencoba membangun jendela yang dapat menyatu lebih awal selama pertandingan berlangsung.

Risiko harus dijelaskan dengan jelas. Kombinasi ini bukanlah kejadian lengkap, bukan arbitrase bebas risiko. Ia cocok untuk pertandingan dengan kesenjangan kekuatan yang besar, jalur utama yang cukup jelas, dan harga jalur perlindungan yang cukup murah. Jika pertandingan sendiri seimbang (50:50), atau jika kaki perlindungan sudah mahal, memaksakan diri tidak ada gunanya. Yang lebih merepotkan, ia tidak mencakup semua jalur yang merugikan, seperti 1:1, 0:2, 2:2, yang semuanya dapat menyebabkan kerugian signifikan pada kombinasi. Oleh karena itu, harus ditetapkan batas posisi, kerugian maksimum, aturan stop loss, dan tidak boleh memperlakukan strategi ini sebagai arbitrase hanya karena "tampak seperti arbitrase".

Model Poisson juga bukan sihir. Ia hanyalah landasan matematis yang sangat sederhana, membantu kita melangkah dari "saya rasa harga ini bagus" menjadi "setidaknya harga ini sudah diperiksa dengan model yang transparan". Model ini bisa salah, pasar juga bisa salah, dan kita sendiri pasti akan lebih sering salah. Bagian paling jujur dalam trading mungkin adalah mengakui bahwa semua ini bisa salah, lalu berusaha agar kesalahan tidak langsung menghancurkan segalanya.

Percobaan ini masih sangat dangkal. Ia lebih mirip mengajukan pertanyaan: ketika peluang arbitrase murni semakin jarang, dan prediksi murni terlalu sulit, apakah kita bisa memanfaatkan probabilitas yang sudah diberikan pasar untuk membangun transaksi yang lebih terstruktur? Bukan berkhayal menghilangkan risiko, melainkan memecah risiko, melihat dari jalur mana risiko itu datang.

Mungkin ini bukan jawabannya, tetapi ini adalah lubang kecil yang cukup layak untuk terus digali. Prediksi bertugas memberi tahu kita jalur utama mana yang mungkin lebih lebar, sementara pemikiran arbitrase mengingatkan kita untuk tidak hanya melihat arah, tetapi juga struktur kombinasi. Di antara keduanya, mungkin masih banyak ruang untuk dijelajahi.

Kode sumber strategi: Strategi Konvergensi Jalur Sepak Bola Polymarket

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