Eugen Soloviov
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.
บทความ
Probability of Backtest Overfitting: การค้นหาของคุณเอาชนะการโยนเหรียญหรือไม่?
Deflated Sharpe Ratio ตั้งราคาให้กลยุทธ์ผู้ชนะ; PBO ตั้งราคาให้การค้นหาที่เลือกมันขึ้นมา Combinatorially Symmetric Cross-Validation รัน C(16,8) = 12,870 train/test split บน performance matrix ขนาด 1000x200 แล้วถามว่า: ผู้ชนะแบบ in-sample ตกไปอยู่ครึ่งล่างของ out-of-sample หรือไม่? กับดักที่แทบทุกคนมองข้าม — null ของ PBO คือ 0.5 ไม่ใช่ 1 บนกลยุทธ์ zero-edge 200 ตัว best in-sample Sharpe ต่อปีที่ 1.98 ยุบลงเหลือ 0.06 นอก sample และ PBO = 0.476: การโยนเหรียญ overfit เต็มขั้น ปลูก edge จริง (Sharpe ต่อปี 2.38) แล้ว PBO ลดลงเหลือ 0.001, in-sample 3.73 รอดมาเป็น out-of-sample 2.34 moving-average grid บน pure random walk ก็ไม่มี out-of-sample skill เช่นกัน — PBO 0.463 เฉลี่ยข้าม 60 matrix แยกไม่ออกจาก null ทางสถิติ — และบน matrix ตัวแทนหนึ่งตัว ภาพลวงตาชัดเจนมาก: best in-sample Sharpe ที่ 2.33 ยุบลงเหลือ median out-of-sample -0.22, PBO 0.573, โอกาสขาดทุน 63%
ภาษี IPC: เอา Backtest Engine ไปไว้หลัง Socket แล้วเสีย 13% — แต่แทบไม่มีส่วนไหนเลยเป็นความผิดของ Socket
เรา port numba backtest kernel ตัวหนึ่งไปเป็น Rust แบบ line-for-line แล้วเรียกมันข้าม process boundary สี่วิธี พร้อม equivalence gate ที่ยืนยันว่า PnL เหมือนกันทุกประการจนถึง trade สุดท้าย การส่ง price series ทั้งชุดขนาด 1.2 MB ผ่าน Unix socket มีค่าใช้จ่ายประมาณ 2 ms — ราว 0.1% ของงานทั้งหมด การ encode payload เดียวกันด้วย JSON แพงกว่า raw bytes ถึง 1348 เท่า การเรียกแบบ chatty ทีละ combo ส่งข้อมูลซ้ำ 80 ครั้ง และ pattern การเรียกทีละ bar จะต้องจ่าย IPC ล้วนๆ 2.1 วินาทีบนงานที่ใช้เวลา 2.0 วินาที boundary นั้นถูก ภาษีอยู่ที่วิธีที่คุณข้ามมันต่างหาก
Deflated Sharpe Ratio: 'ผู้ชนะ' จาก Backtest ของคุณกี่ตัวที่รอดจาก Multiple Testing?
parameter search คือเครื่องจักรผลิตความโชคดี บน pure noise — กลยุทธ์ 1,000 ตัวที่ไม่มี edge จริงเลย — Sharpe ต่อปีที่ดีที่สุดเฉลี่ยอยู่ที่ 1.63 และ naive significance test ฟันธงว่าพบการค้นพบ 100% ของเวลา เราสร้าง ground truth ที่ควบคุมได้และแสดงให้เห็นว่า Deflated Sharpe Ratio, Harvey-Liu haircut และ White's Reality Check คืนความซื่อสัตย์กลับมา: false discovery ลดลงจาก 1.000 เหลือ 0.001-0.057, edge จริงที่อยู่เหนือ noise ceiling ถูกเก็บไว้ด้วย power ~1 — และกับดักจริงหนึ่งอย่าง (correlated grid) ที่ raw DSR over-deflate และคำตัดสินต้องอ่านข้าม band ทั้งหมดของ effective-trial estimator ไม่ใช่แค่ตัวเดียว
การออกแบบ Objective Function: ตัวชี้วัดที่คุณ Optimize แอบเลือกกลยุทธ์ให้คุณ
การจะค้นหากลยุทธ์ที่ 'ดีที่สุด' คุณต้องนิยาม 'ดีที่สุด' ก่อน — และตัวเลขสเกลาร์ตัวนั้นเป็นผู้เลือกผู้ชนะอย่างเงียบ ๆ บนข้อมูล synthetic ที่มี edge จริงที่รู้ค่า (600 seed, T=2000, 80 threshold) per-trade Sharpe แบบ naive สวมมงกุฎให้ lottery: มันเลือกผู้ชนะที่ exposure ต่ำกว่า 5% ใน 56% ของ seed และเสื่อมสภาพ (degenerate) ใน 57% — บน seed ที่ชัดเจนที่สุด มี 8 เทรดที่ทำ in-sample Sharpe ได้ 21.09 แล้วยุบลงเหลือ 0.13 นอก sample การแก้ไขที่ซื่อสัตย์นั้นเกือบจะน่าเบื่อ: วัดบน full timeline ซึ่งไม่เคยเสื่อมสภาพเลย (out-of-sample 1.71) trade-count shrinkage (conf_k) และ exposure floor สามารถซ่อมแซม per-trade metric ได้ แต่แม้จะซ่อมเต็มที่แล้วก็ยังแค่เท่ากับ full-timeline Sharpe (1.70 เทียบกับ 1.71) — ไม่เคยเอาชนะมันได้เลย กฎของ Goodhart ในบริบทของ backtest พร้อม ground truth ที่ควบคุมได้
Look-Ahead Bias: ความผิดพลาดเพียงหนึ่งแท่งเทียนสร้าง Sharpe 15 จาก Noise ล้วน ๆ ได้อย่างไร
การศึกษาแบบควบคุมเกี่ยวกับการรั่วไหลแบบ look-ahead ที่แอบเพิ่มผลลัพธ์ backtest อย่างเงียบ ๆ แม้ไม่มี edge จริงเลย การ fill บนแท่งเดียวกันก็สร้าง Sharpe ต่อปีที่ +14.8 จาก noise ล้วน ๆ ส่วนการแอบดู indicator ล่วงหน้าหนึ่งแท่งสร้าง +4.8 อนุกรมวิธานของการรั่วไหล ขนาดที่วัดได้จริง และวิธีตรวจจับแต่ละแบบก่อนที่มันจะทำให้คุณเสียเงิน
บันไดความเร็วของ Backtest Engine: 298x บน CPU แล็ปท็อป, PnL เหมือนเดิมทุกประการจนถึง Trade สุดท้าย
ห้า implementation ของ parameter sweep 80 combo ชุดเดียวกัน ทุกตัวตรวจสอบแล้วว่าให้ PnL เหมือนกันทุกประการ: pandas rolling.apply ใช้เวลา 69.9 วินาที, numpy 3.1, numba 2.0, parallel numba 0.23 — ความเร็วที่วัดได้จริงเพิ่มขึ้น 298x บน Apple M2 Max โดยไม่เปลี่ยนฮาร์ดแวร์เลย และยังเร็วกว่า baseline แบบ vectorized ที่ทำได้ดีอยู่แล้วประมาณ 13x แต่ละขั้นบันไดให้อะไรบ้าง ทำไม GPU ไม่ใช่ชิ้นส่วนที่ขาดหายไป และคอขวดที่แท้จริงของการค้นหาพารามิเตอร์จำนวนมากอยู่ที่ไหน
researcher: คลังงานวิจัยควอนต์ที่ค้นหาได้สำหรับมนุษย์และเอเจนต์ AI
เราสร้าง researcher.marketmaker.cc ขึ้นมาอย่างไร — คลังงานวิจัยควอนต์แบบรวมศูนย์ที่ค้นหาด้วยข้อความเต็ม (เปเปอร์จาก arXiv, repo บน GitHub, บล็อกควอนต์, สคริปต์ Pine บน TradingView) ที่มนุษย์เปิดเรียกดูและเอเจนต์ AI สอบถามผ่าน MCP ได้
algo-investor-skills: ชุด Skills ของ Claude Code ที่สร้างข้อเสนอสำหรับนักลงทุนแบบกันการหลอกลวง
เจาะลึก algo-investor-skills — ชุด skills ของ Claude Code ที่พากลยุทธ์ algotrading จากข้อเท็จจริงที่วัดได้แบบดิบ ๆ ไปสู่ข้อเสนอสำหรับนักลงทุนที่ผ่านการตรวจสอบและซื่อสัตย์เป็นที่ตั้ง หกสกิลที่ประกอบกันได้ เอนจินโมเดลทางการเงิน ชุดหลักฐานสำหรับการตรวจสอบโดยอิสระ และด่านตรวจสอบโดยนักลงทุนขี้สงสัยที่บังคับใช้ ซึ่งไม่เคยกุตัวเลขขึ้นมาเอง
เกณฑ์เคลลี (Kelly criterion) สำหรับกลยุทธ์: เลือกขนาดโพซิชันและจัดสรรเงินทุนอย่างไร
กลยุทธ์ที่มีค่าคาดหวังเป็นบวกก็ยังทำให้พอร์ตล้มละลายได้หากเลือกขนาดเดิมพันผิด เราเจาะลึกเกณฑ์เคลลีตั้งแต่การหาสูตรไปจนถึงพอร์ตของกลยุทธ์: ทำไม full Kelly จึงอันตราย ทำไม Kelly แบบเศษส่วนให้การเติบโต 75% ที่ความผันผวนเพียงครึ่งเดียว และเครื่องคิดเลขแบบโต้ตอบที่เห็นได้ชัดว่าสัดส่วนเคลลีเปลี่ยนผลตอบแทนและความเสี่ยงอย่างไร
การวิเคราะห์หุ้นรายวัน: ระบบ AI ที่เปลี่ยนรายการเฝ้าดูให้กลายเป็นแดชบอร์ดการตัดสินใจประจำวัน
เจาะลึก daily_stock_analysis โดย ZhuLinsen — ระบบโอเพนซอร์สที่ดึงข้อมูลตลาดครอบคลุมหุ้น A ฮ่องกง สหรัฐฯ และอื่น ๆ รันการวิเคราะห์เชิงเทคนิคและข่าวผ่าน LLM แล้วส่ง 'แดชบอร์ดการตัดสินใจ' ที่มีโครงสร้างไปยังแอปแชตของคุณในทุกวันทำการซื้อขาย สถาปัตยกรรม การสำรองข้อมูล กลยุทธ์ agent และข้อจำกัด
Temporal Fusion Transformer สำหรับการพยากรณ์พอร์ตการลงทุนแบบหลายช่วงเวลา
Temporal Fusion Transformer ของ Google นำการพยากรณ์แบบหลายช่วงเวลาที่ตีความได้มาสู่การจัดการพอร์ตการลงทุนเชิงปริมาณอย่างไร พร้อมการเลือกตัวแปรด้วยกลไก attention เอาต์พุตแบบควอนไทล์ และไปป์ไลน์ pytorch-forecasting ที่ลงมือทำจริง
Conformal Prediction สำหรับการกำหนดขนาดสถานะแบบตระหนักความเสี่ยง
ช่วงการพยากรณ์แบบ distribution-free ที่มีการรับประกัน coverage เราใช้ split conformal, jackknife+ และ adaptive conformal inference เพื่อปรับเทียบความเสี่ยงในการเทรดและกำหนดขนาดสถานะโดยไม่ต้องตั้งสมมติฐานแบบพารามิเตอร์