Type/to search
2
Follow
490
Followers
Antara Arbitraj dan Ramalan: Satu Eksperimen Mudah Strategi Konvergensi Laluan Piala Dunia
Discussions
Created 2026-06-18 09:09:14  Updated 2026-06-22 15:37:13
 0
 209

img

Piala Dunia baru sahaja bermula, dan pasaran sudah memberikan kita sedikit pengajaran yang mengejutkan: pasukan yang kuat bukanlah tidak boleh gagal, cuma cara mereka gagal selalunya lebih kreatif daripada yang kita bayangkan.

Contohnya, Sepanyol 0:0 Cape Verde. Sebelum perlawanan, jika hanya melihat kekuatan, ranking, dan kedalaman skuad, kebanyakan orang akan beranggapan dengan mudah: Sepanyol sepatutnya menang, bukan? Tetapi di sinilah letaknya perkara yang paling menarik dan paling menyeksakan peniaga dalam bola sepak. Anda fikir anda membeli "pasukan kuat menang", tetapi sebenarnya anda membeli keseluruhan drama nasib sepanjang 90 minit. 15 minit pertama tiada gol, kemungkinan berubah; setengah jam masih 0:0, pasaran mula berkerut; apabila sampai minit ke-70 masih tiada perkembangan, kemenangan pasukan kuat yang kelihatan kukuh tiba-tiba tidak lagi stabil.

img

Ketika ini, anda akan menghadapi satu percanggahan klasik: arbitraj itu baik, tetapi ramalan itu sukar.

Arbitraj sebenar, secara teorinya, sepatutnya bebas risiko. Contohnya, mencari satu set kontrak yang saling eksklusif dan lengkap, tidak kira apa yang berlaku pada akhirnya, gabungan itu akan dibayar, dan kos pembelian lebih rendah daripada jumlah pembayaran. Kedengarannya indah, seperti tidur siang versi peniaga. Tetapi masalahnya di sini: peluang sebegini terlalu jarang, selalunya hilang dengan cepat apabila muncul, dan kapasitinya mungkin tidak mencukupi.

Ramalan pula adalah perkara lain. Anda boleh menilai kebarangkalian pasukan kuat menang, menganalisis skuad, keadaan, jadual, kecederaan, dan juga melihat kebarangkalian tersirat daripada kemungkinan, tetapi perlawanan tidak akan bekerjasama hanya kerana kita menganalisis dengan teliti. Lebih-lebih lagi dalam bola sepak, satu kad merah awal, satu tiang gol, satu VAR yang tidak masuk akal, semuanya boleh menjadikan logik yang kelihatan cantik itu menjadi tiga saat sunyi dalam ulasan selepas perlawanan.

img

Jadi, persoalannya: jika arbitraj tulen terlalu jarang, dan ramalan tulen terlalu rawak, bolehkah kita berada di tengah-tengah kedua-duanya? Pasaran sendiri sudah memberikan kita beberapa kebarangkalian awal, seperti harga kemenangan pasukan kuat, harga 0:0, harga 0:1. Harga ini tidak datang dari udara kosong; ia mencerminkan penentuan harga kolektif pasaran untuk laluan yang berbeza. Jadi, bolehkah kita menggunakan kebarangkalian awal ini, ditambah dengan sedikit model matematik kita sendiri, untuk membina gabungan yang tidak sempurna tetapi lebih terlindung, bagi membuka "tetingkap penumpuan laluan"?

Inilah permulaan idea ini.

Ia bukan arbitraj bebas risiko tradisional, dan bukan ramalan berdasarkan tekaan semata-mata. Ia lebih seperti suatu kompromi: pertama mengakui bahawa kebarangkalian utama yang diberikan pasaran mempunyai nilai rujukan, kemudian menggunakan laluan berkebarangkalian rendah untuk melindungi bahagian paling rapuh dalam pertimbangan utama, sambil menggunakan model mudah untuk memeriksa sama ada harga masih boleh diterima.

Andaikan dalam satu perlawanan, Brazil jelas lebih kuat daripada Haiti. Harga kemenangan Brazil yang diberikan pasaran ialah 0.89, menunjukkan bahawa Brazil menang adalah laluan utama yang kukuh. Tetapi kita tidak terus membeli kemenangan Brazil sahaja, sebaliknya kita juga memerhati dua laluan perlindungan: 0:0 dan 0:1. Kerana bagi pertimbangan kemenangan pasukan kuat, skrip awal yang paling menyakitkan selalunya bukan semua keputusan, tetapi perlawanan yang lambat dipecahkan atau pasukan lemah mencuri satu gol.

Oleh itu, gabungan awal menjadi:

text
Brazil Menang Ya 0:0 Ya 0:1 Ya

Andaikan harga:

text
Brazil Menang = 0.89 0:0 = 0.016 0:1 = 0.011

Jumlah kos tiga kaki:

text
C = 0.89 + 0.016 + 0.011 = 0.917

Set ini bukanlah peristiwa lengkap. Ia tidak merangkumi 1:1, 0:2, 2:2, dan tidak meliputi semua skrip pelik. Jadi jika dipegang sehingga tamat perlawanan, sudah tentu ia boleh rugi, bahkan boleh rugi secara langsung. Tetapi ia mempunyai satu ciri penting: ia menggabungkan tiga kebarangkalian yang telah diberikan pasaran, membentuk satu bakul laluan yang berpusat pada kemenangan utama.

Jika pada akhirnya Brazil menang, gabungan membayar 1. Jika pada akhirnya 0:0 atau 0:1, juga membayar 1. Maksudnya, apa yang dibeli ialah:

img

text
Brazil Menang ∪ 0:0 ∪ 0:1

Selagi salah satu laluan ini berlaku, bayaran matang ialah 1. Kos ialah 0.917, ada ruang 0.083 dalam laluan yang dilindungi. Tetapi kunci sebenar bukan pada penghujung perlawanan, tetapi di pertengahan.

Jika Brazil menjaringkan gol awal, skor menjadi 1:0, maka dua kaki perlindungan 0:0 dan 0:1 hampir menjadi sifar, tetapi harga kemenangan Brazil akan meningkat. Selagi harga jual kemenangan Brazil pada ketika itu melebihi jumlah kos awal, ditambah sedikit keuntungan sasaran, kita boleh tutup kaki utama, dan mengecutkan gabungan ini lebih awal.

Rumusannya mudah:

text
Syarat ambil untung = bidaan Brazil Menang >= jumlah kos awal C + keuntungan sasaran

Contohnya, tetapkan keuntungan sasaran 0.02:

text
Harga pencetus = 0.917 + 0.02 = 0.937

Jika selepas 1:0 bidaan Brazil Menang mencapai 0.95, maka:

text
Keuntungan terkunci = 0.95 - 0.917 = 0.033

Ketika ini, kita tidak memperoleh wang melalui pembayaran akhir, tetapi dengan memasuki cabang yang menguntungkan dalam laluan perlawanan, lalu menjual gabungan lebih awal. Proses ini agak seperti pasaran membuka tingkap kecil untuk anda; jangan berdiri di tepi tingkap menulis puisi, sebaliknya selit dahulu melalui tingkap itu.

Tetapi ada satu lagi masalah: jika tiga kaki kelihatan murah, adakah ia semestinya berbaloi untuk dibeli? Tidak semestinya. Harga pasaran hanyalah maklumat lapisan pertama. Kita masih memerlukan kayu ukur rujukan sendiri, walaupun ia sangat ringkas.

Di sini saya menggunakan model gol Poisson yang paling asas.

Skor bola sepak secara kasar boleh dilihat sebagai proses rawak di mana dua pasukan masing-masing menjaringkan gol dalam 90 minit. Andaikan jangkaan jumlah gol pasukan tuan rumah dalam 90 minit ialah λ_home, dan jangkaan jumlah gol pasukan pelawat ialah λ_away, maka kebarangkalian pasukan tuan rumah menjaringkan i gol dan pasukan pelawat menjaringkan j gol boleh ditulis sebagai:

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

di mana:

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

img

Ia sudah tentu sangat kasar. Bola sepak bukanlah dua mesin cabutan rawak bebas; taktik akan berubah selepas gol, kad merah akan berubah, mentaliti juga akan berubah. Tetapi kelebihannya ialah ia mudah, telus, sekurang-kurangnya membolehkan kita tidak membuat keputusan semata-mata berdasarkan perasaan.

Sebelum perlawanan, model Poisson boleh memberi kita rujukan awal. Kita boleh memberikan λ_home dan λ_away secara manual, atau membiarkan program menyongsangkannya daripada pasaran tepat skor pasaran. Contohnya, pasaran tepat skor bagi 0:0, 0:1, 1:0, 1:1, 2:0, 2:1, 3:0, setiap satu mewakili satu titik kebarangkalian yang diberikan pasaran. Program perlu mencari satu set λ_home dan λ_away supaya kebarangkalian skor yang dikira model Poisson sedekat mungkin dengan harga pasaran ini.

Dalam erti kata lain, pasaran berkata: "Saya rasa skor ini bernilai sekitar harga ini." Model Poisson berbisik di sebelah: "Baiklah, saya cuba memadankannya, lihat apakah kekuatan gol yang tersirat di sebalik set harga ini."

Dalam strategi, boleh dikonfigurasikan:

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

Skor ini hanya digunakan untuk pemodelan, tidak terlibat dalam pesanan. Kaki yang sebenarnya didagangkan masih:

text
Kemenangan pasukan sasaran 0:0 0:1

Dalam kod, carian grid digunakan untuk memadankan λ. Ia tidak rumit, tetapi sangat 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 perlawanan, λ ini hanyalah penentukuran awal. Kerana perlawanan belum bermula, tiada laluan masa nyata untuk dikemas kini, skor lalai masih 0:0, baki masa adalah 90 minit. Pada peringkat ini, kami menggunakannya untuk penapisan masuk:

text
Kebarangkalian liputan model = P(menang pasukan sasaran) + P(0:0) + P(0:1)

Kemudian keperluan:

text
Kebarangkalian liputan model - kos pasaran >= margin keselamatan

Hanya apabila harga pasaran cukup murah dan model juga menganggap bakul ini mempunyai sedikit kelebihan, barulah dibenarkan untuk membuka posisi.

Yang benar-benar menarik adalah selepas perlawanan bermula.

Sebaik sahaja perlawanan bermula, model Poisson tidak lagi statik. Andaikan perlawanan memasuki minit ke-30, skor semasa masih 0:0, maka baki masa hanya 60 minit, keamatan gol masa hadapan perlu dikurangkan mengikut baki masa:

text
λ_home_remaining = λ_home × (90 - t) / 90 λ_away_remaining = λ_away × (90 - t) / 90

Jika skor semasa sudah 1:0, maka 0:0 dan 0:1 tidak mungkin lagi berlaku. Pada ketika ini, model perlu bermula dari skor semasa, hanya mengira berapa banyak gol lagi yang akan dijaringkan dalam baki masa. Skor akhir seperti 2:0, 2:1, 3:0, 1:1 yang masih mungkin berlaku, layak untuk menyertai anggaran baharu.

Inilah kunci kemas kini Poisson masa nyata: bukan secara mekanikal mengecilkan λ pra-perlawanan setiap minit, tetapi menggabungkan skor semasa, baki masa dan pasaran skor tepat yang masih mungkin berlaku, untuk menganggar semula bagaimana perlawanan ini mungkin akan berjalan seterusnya.

Strategi akhir menjadi tiga lapisan pertimbangan.

Lapisan pertama ialah kos pasaran:

text
win_ask + 0:0_ask + 0:1_ask <= kos maksimum yang dibenarkan

Lapisan kedua ialah penapisan Poisson:

text
Kebarangkalian liputan model - kos pasaran >= margin keselamatan

Lapisan ketiga ialah penumpuan laluan:

text
Nilai bida portfolio semasa >= kos awal + keuntungan sasaran

Hanya apabila lapisan pertama dan kedua dipenuhi serentak, barulah dipertimbangkan untuk masuk. Selepas masuk, tidak lagi bergantung pada model untuk membayangkan penamat, tetapi menggunakan bida pasaran sebenar untuk menentukan sama ada boleh tutup posisi. Model bertanggungjawab meningkatkan kualiti buka posisi, pasaran bertanggungjawab menentukan sama ada boleh ditunaikan.

Pencarian kontrak juga dibuat semudah mungkin. Slug pasaran Piala Dunia Polymarket sangat teratur. Contohnya, slug acara perlawanan ialah:

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

Jika kita melindungi kemenangan Jordan, akhiran kontrak kemenangan yang sepadan ialah:

python
WIN_SUFFIX = "jor"

Maka tiga kontrak yang diperlukan untuk perdagangan boleh digabungkan terus:

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 cuba elakkan menggunakan nama pasukan untuk carian kabur. Contohnya, cari Jordan, mudah dapat Michael B. Jordan, Jordan Pickford, Jordan Spieth, akhirnya strategi bola sepak belum bermula, hiburan, penjaga gol England dan golf sudah duduk semeja. Menggunakan event slug untuk menggabungkan kontrak, jauh lebih bersih.

Semasa perlawanan juga memerlukan skor masa nyata. Versi pertama boleh ambil terus daripada acara Polymarket Gamma:

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 boleh jual semasa menggunakan bida pasaran sebenar:

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 ambil untung:

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

Inilah versi minimum. Ia tidak berpura-pura telah menyelesaikan ramalan bola sepak, dan juga tidak mendakwa boleh melakukan arbitraj secara stabil. Ia hanya cuba mengkaji zon kelabu antara "arbitraj" dan "ramalan".

Keindahan arbitraj terletak pada kepastian, tetapi kepastian sangat sukar didapati. Daya tarikan ramalan adalah ruang yang besar, tetapi rawaknya juga besar. Strategi ini melakukan: mengambil harga ramalan yang diberikan oleh pasaran sebagai bahan, menggunakan satu pertimbangan utama berkebarangkalian tinggi, ditambah dua laluan perlindungan berkebarangkalian rendah, dan menggunakan model Poisson sebagai penapisan kasar, cuba membina satu tingkap yang boleh menumpu lebih awal semasa perlawanan berlangsung.

Risiko mesti dijelaskan. Portfolio ini bukan peristiwa lengkap, bukan arbitraj tanpa risiko. Ia sesuai untuk perlawanan dengan jurang kekuatan yang besar, laluan utama yang cukup jelas, dan harga laluan perlindungan yang cukup rendah. Jika perlawanan itu sendiri adalah 50-50, atau kaki perlindungan sudah mahal, memaksa diri melakukannya tidak bermakna. Lebih membimbangkan, ia tidak meliputi semua laluan yang merugikan, seperti 1:1, 0:2, 2:2, yang semuanya boleh menyebabkan portfolio mengalami kerugian yang ketara. Oleh itu, had kedudukan, kerugian maksimum, dan peraturan henti rugi mesti ditetapkan; tidak boleh menganggapnya sebagai arbitraj hanya kerana "ia kelihatan seperti arbitraj".

Model Poisson juga bukan sihir. Ia hanyalah tapak matematik yang sangat sederhana, membantu kita melangkah dari "Saya rasa harga ini bagus" ke "sekurang-kurangnya semak harga ini dengan model yang telus". Ia boleh salah, pasaran juga boleh salah, dan kita sendiri lebih-lebih lagi boleh salah. Bahagian paling jujur dalam perdagangan, mungkin, adalah mengakui bahawa semua ini boleh salah, dan kemudian cuba sedaya upaya supaya kesilapan tidak menjungkirkan meja sekaligus.

Percubaan kali ini sangat cetek. Ia lebih seperti bertanya soalan: Apabila peluang arbitraj tulen semakin berkurangan, dan ramalan tulen terlalu sukar, bolehkah kita menggunakan kebarangkalian yang telah diberikan oleh pasaran untuk membina beberapa dagangan yang lebih berstruktur? Bukan angan-angan untuk menghapuskan risiko, tetapi mengasingkan risiko, melihat dengan jelas dari laluan mana ia datang.

Mungkin ini bukan jawapannya, tetapi ia adalah lubang kecil yang cukup berbaloi untuk digali lebih lanjut. Ramalan bertanggungjawab memberitahu kita laluan utama mana yang mungkin lebih lebar, pemikiran arbitraj mengingatkan kita untuk tidak hanya melihat arah, tetapi juga struktur portfolio. Di antara keduanya, mungkin masih banyak ruang untuk diterokai.

Sumber kod strategi: Strategi Penumpuan Laluan Bola Sepak Polymarket

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