Knowledge Hub

Binance Business Model: กระแสเงินสดจาก Spot + Options

ตรรกะที่ ETH Cashflow Overlay ใช้สร้างรายได้จากกระเป๋า Spot และ Options ของ Binance โดยวางทับบน grid ที่ถือ ETH อยู่แล้ว

ทั่วไปอ่าน 9 นาทีเผยแพร่ 14 ตุลาคม 2569

Item Detail
Engine D:\MY\ARGUS\Financial\BINANCE_OPTION_ENGINE (overlay)
Status 🟡 Paper เท่านั้น (--live-orders ถูกปฏิเสธจนกว่าจะ probe บน demo environment)
Decisions ADR-001 (แยกกระเป๋า), ADR-004 (budget ของ put), ADR-005 (cash-backed puts)
Last Updated 2026-10-03

📌 สรุป

Overlay ขาย option ระยะสั้น (7-14 วัน) รอบ ETH ที่ grid ถืออยู่ แล้วเก็บ premium เป็น USDT

  • ขาย call เหนือโซนขายของ grid โดยใช้ ETH ใน Spot เป็นของค้ำเชิงเศรษฐกิจ
  • ขาย put ใต้โซนซื้อถัดไปของ grid โดยกันเงินสดเต็มจำนวน strike ไว้ ถ้าโดน assign ก็ได้ ETH ในราคา strike ลบ premium ซึ่งเป็นราคาที่ grid ตั้งใจจะซื้ออยู่แล้ว
  • Binance settle option เป็นเงินสดทั้งคู่ ไม่มีการส่งมอบ ETH
    • call ที่ ITM: จ่ายส่วนต่างเป็น USDT และ ETH ยังอยู่ครบ
    • put ที่ ITM: เสียส่วนต่างเป็น USDT แล้ว overlay ต้องไปซื้อ ETH เองใน Spot (spot leg)
flowchart LR
    GRID[Grid<br/>ถือ ETH + กำหนดโซน] -->|sell_zone_top| CC[ขาย Covered call]
    GRID -->|next_buy_zone| PW[ขาย Cash-secured put]
    CC -->|premium USDT| OPT[(Options wallet)]
    PW -->|premium USDT| OPT
    PW -->|ITM: ซื้อ ETH ที่ K - premium| SPOT[(Spot wallet)]

💵 แหล่งเงินสดและต้นทุน

ประเภท รายการ เข้า/ออก กระเป๋า
รายได้ Premium จากการขาย call เข้า Options
รายได้ Premium จากการขาย put เข้า Options
มูลค่าเพิ่ม ได้ ETH ถูกกว่าราคาที่ grid จะซื้อ เมื่อ put ITM ราคาทุน ETH ต่ำลง Spot
ต้นทุน ค่าธรรมเนียม option: 0.024% ของ notional ไม่เกิน 10% ของ premium ออก Options
ต้นทุน ค่าธรรมเนียม spot 0.1% ตอนซื้อ ETH ของ spot leg ออก Spot
ต้นทุน Call ITM: จ่าย (S - K) x qty เป็น USDT ออก Options
ต้นทุน Buyback call ก่อนหมดอายุ (ถ้าเข้าเงื่อนไข) ออก Options
ต้นทุนแฝง Slippage ระหว่างราคา settlement กับราคาที่ซื้อ ETH ได้จริง ออก Spot

ℹ️ Note Call ที่ ITM ไม่ได้ทำให้ ETH หายไป เสียแค่เงินสดส่วนต่าง ส่วน ETH ยังอยู่ใน Spot และ grid ขายตามโซนต่อได้


🏗️ สองกระเป๋า: ใครถืออะไร

Binance คิด margin ของ option จาก USDT ในกระเป๋า Options เท่านั้น ETH ในกระเป๋า Spot ไม่นับเป็น collateral สำหรับ Binance แล้ว covered call จึงเป็น naked call ที่ต้องวาง USDT margin เอง (ADR-001)

กระเป๋า ถือ Reservation ที่อยู่ได้
BINANCE_OPTIONS USDT, short options CC_MARGIN, PUT_SPOT_BUY_BUDGET, PUT_LOSS_BUDGET, buffer
BINANCE_SPOT ETH, USDT float ประมาณ 500 CC_BACKING (ETH) และ budget ของ put ที่ย้ายมารอซื้อ ETH

Invariant I7 บังคับตารางนี้:

  • ถ้า ledger พบ ETH บน Options หรือ CC_BACKING อยู่ผิดกระเป๋า ระบบ halt
  • คำสั่งโอนที่จะพาของไปลงผิดกระเป๋าถูกปฏิเสธตั้งแต่ก่อนส่งไปที่ exchange

📈 Covered call

เลือกสัญญา

กฎ ค่า
Strike ขั้นต่ำ sell_zone_top x 1.02
เลือก strike ต่ำสุดที่ผ่านเกณฑ์ (premium สูงสุดในกลุ่มที่รับได้)
เสมอกัน strike เท่ากันเลือกวันหมดอายุที่ไกลกว่า
อายุ 7-14 วัน
ขนาด ไม่เกิน 30% ของ ETH ที่ถือ ลบ short call ที่มีอยู่ ปัดลงทีละ 0.01
quote: bid ห่างจาก mark ไม่เกิน 10%
quote: spread ไม่เกิน 20% ของ mark
quote: IV อย่างน้อย 40%
quote: premium สุทธิหลังค่าธรรมเนียมอย่างน้อย 5 USDT

เงินที่ถูกกันไว้

  • CC_BACKING (ETH บน Spot) กัน grid ไม่ให้ขาย ETH ที่ call สัญญาไว้
  • CC_MARGIN (USDT บน Options) คือ initial margin ที่ index ขยับ 15% ไปทางที่แย่กว่า

วงจร

stateDiagram-v2
    [*] --> CANDIDATE: ผ่าน risk gates
    CANDIDATE --> RESERVED: กัน CC_BACKING + CC_MARGIN
    RESERVED --> ORDER_PENDING: ส่ง LIMIT sell
    ORDER_PENDING --> OPEN: fill
    OPEN --> BUYBACK_PENDING: ต้นทุนซื้อคืน <= 20% ของ premium
    BUYBACK_PENDING --> SETTLED: buyback fill
    OPEN --> SETTLEMENT_PENDING: หมดอายุ
    SETTLEMENT_PENDING --> SETTLED: เห็นผล settlement
    SETTLED --> CLOSED: คืน reservation
  • ถ้าซื้อคืนได้ที่ราคา ask แล้วต้นทุนไม่เกิน 20% ของ premium ที่รับมา จะปิดก่อนเพื่อเก็บ premium ส่วนใหญ่ไว้และคืนเงินค้ำ ถ้า ask หนีไป ให้หมดอายุตามปกติ
  • CC_BACKING คืนตอน SETTLED -> CLOSED เท่านั้น ไม่คืนตอนหมดอายุ ถ้ายังไม่เห็นผล settlement ถือว่ายังมีภาระอยู่

📉 Cash-secured put

เลือกสัญญา

กฎ ค่า
Strike สูงสุด next_buy_zone x 0.98
เลือก strike สูงสุดที่ผ่านเกณฑ์
เสมอกัน strike เท่ากันเลือกวันหมดอายุที่ไกลกว่า (premium ต่อวันสูงกว่า)
อายุ 7-14 วัน
ขนาด ค่าที่น้อยกว่าของ 2 ข้อล่าง
ขนาด (1) put notional ไม่เกิน 88% ของ USDT
ขนาด (2) เงินว่างที่เหลือหลังกันพื้น 10% หารด้วย K x 1.02

เงินที่ถูกกันไว้ (ADR-004)

Budget ขนาด ใช้ทำอะไร
PUT_SPOT_BUY_BUDGET K x qty ซื้อ ETH หลัง settle ITM; หดเหลือ S x qty ใน commit เดียวกับ settlement
PUT_LOSS_BUDGET 2% x K x qty รับราคาที่ขยับระหว่าง settlement กับการซื้อจริง และค่าธรรมเนียม

ทำไมพอ: (K - S) + S = K ทุกราคา settlement เงิน K จึงจ่ายทั้งส่วนต่างและค่า ETH ได้เสมอ ส่วน 2% เผื่อราคาวิ่งในหนึ่งชั่วโมงที่ IV 50% (ประมาณ 1.6%) บวกค่าธรรมเนียม

วงจรเมื่อ ITM

sequenceDiagram
    participant PW as Put strategy
    participant L as Ledger
    participant CM as Collateral Manager
    participant SP as Spot wallet

    PW->>L: settlement ITM: หัก (K - S) x qty, สร้าง spot leg
    CM->>SP: ย้าย spot-buy + loss budget จาก Options ไป Spot (transfer เดียว)
    CM->>SP: ถ้าราคาซื้อเกิน budget: เติมเงินจาก Options ส่วนที่เกิน buffer
    PW->>SP: MARKET buy ETH ภายใน 1 ชั่วโมง
    SP-->>PW: fill
    PW->>L: คืน budget ที่เหลือ, CLOSED

ราคาทุน ETH ที่ได้จริง (section 4.5):

effective_cost = (ราคาซื้อ ETH รวม + ส่วนต่าง settlement + ค่าธรรมเนียม - premium) / ETH ที่ได้

ถ้าซื้อได้ที่ราคา settlement พอดีและไม่มีค่าธรรมเนียม สูตรนี้ลดเหลือ K - premium ต่อ ETH

⚠️ Warning ถ้าซื้อ ETH ไม่ครบภายใน spot_buy_window (1 ชั่วโมง) ระบบ halt ด้วย SPOT_LEG_OVERDUE และไม่ปิด leg เอง ผู้ดูแลต้องตัดสินใจ


🔄 Collateral Manager: เงินเดินระหว่างกระเป๋า

ทำงานทุก tick ก่อน kill switch และยังทำงานตอนระบบ halt เพราะเป็นการโอนเงินระหว่างกระเป๋าของตัวเอง

flowchart LR
    subgraph SPOT[BINANCE_SPOT]
        SUSDT[USDT float 500]
        ETH[ETH + CC_BACKING]
        LEG[Budget ของ spot leg]
    end
    subgraph OPT[BINANCE_OPTIONS]
        OUSDT[USDT ว่าง]
        BUF[Buffer 1.5x stressed MM]
    end
    SUSDT -->|top-up / sweep| OUSDT
    OPT -->|rehome budget เมื่อ put ITM| LEG
    OUSDT -->|leg fund: ส่วนที่เกิน buffer| LEG
การโอน ทิศทาง เมื่อไร ขนาด
Top-up Spot -> Options เงินว่าง Options ต่ำกว่า target หรือ mm_ratio >= 0.35 ส่วนที่ขาด (ถึง mm_ratio แล้วโอนทั้งหมดที่โอนได้)
Sweep Spot -> Options USDT บน Spot เกิน float ส่วนที่เกิน 500 ลบเงินที่ spot leg ต้องใช้
Rehome Options -> Spot Put settle ITM budget ทั้งสองก้อนของ leg ใน transfer เดียว
Leg fund Options -> Spot ราคาซื้อ x 1.02 สูงกว่า budget ที่มีบน Spot ส่วนที่ขาด ใช้ได้เฉพาะเงินที่เกิน target
  • Target = 1.5 x maintenance margin ของ short ทั้งหมด (รวมที่อนุมัติแล้วแต่ยังไม่ fill) เมื่อ index ขยับ 15%
  • โอนล้มเหลว 3 ครั้งใน 30 นาที ระบบ halt ด้วย TRANSFER_RETRIES_EXHAUSTED
  • โอนค้างเกิน 5 นาที ระบบ halt ด้วย TRANSFER_UNRESOLVED
  • เงินไม่พอเติม buffer ระบบ halt ด้วย COLLATERAL_SHORTFALL
  • ไม่ขาย ETH เพื่อเติม collateral (flag ปิดไว้)

🚦 Risk gates ก่อนขายทุกครั้ง

ทุกคำขอขายผ่าน evaluate() แล้วต้องผ่านทุกข้อ ระบบรายงานเหตุผลที่ไม่ผ่านครบทุกข้อ ไม่ได้หยุดที่ข้อแรก

กลุ่ม เงื่อนไข Reason
ข้อมูลสด snapshot อายุไม่เกิน 30 วินาที, reconcile ตรงกัน SNAPSHOT_STALE, RECON_NOT_CLEAN
ภาระค้าง ไม่มี spot leg ค้าง PENDING_SPOT_LEG_BLOCKING
Margin margin usage ไม่เกิน 50%, mm_ratio ไม่เกิน 0.50 MARGIN_USAGE, MM_RATIO
Collateral (gate 3b) เงินว่าง Options หลังกัน reservation ยังคลุม target รวม short ใหม่ OPTIONS_COLLATERAL
Drawdown portfolio drawdown ไม่เกิน 20% MAX_DD_FREEZE
Budget call ไม่เกิน 30% ของ ETH, put ไม่เกิน 88% ของ USDT, เงินว่างเหลืออย่างน้อย 10% CC_BUDGET, PUT_BUDGET, MIN_FREE_USDT
ETH รวมหลัง assign ไม่เกิน 1.15 เท่าของ ETH ที่ถือ (put ที่มีเงินสดค้ำไม่นับ, ADR-005) FULLY_ASSIGNED_EXCEEDED

ℹ️ Note การซื้อ ETH ของ spot leg เป็นภาระที่ต้องจ่าย ไม่ใช่การเพิ่มความเสี่ยง gate ที่บล็อกการขายใหม่จึงไม่บล็อกการซื้อนี้


🧮 ตัวอย่างตัวเลข

ตัวเลขจาก test fixture (tests/test_overlay_put_writing.py) เพื่อดูการคิดเงิน ไม่ใช่ผลตอบแทนที่คาดไว้

Put ITM: strike 3000, 20 สัญญา x 1 ETH, bid 60, settle ที่ 2800

ขั้น Options wallet Spot wallet
ขาย put: premium +1,200
กัน budget spot-buy 60,000 + loss 1,200
Settle ITM: ส่วนต่าง (3000 - 2800) x 20 -4,000
Spot-buy budget หดเหลือ 2800 x 20 56,000
Rehome budget -57,200 +57,200
ซื้อ 20 ETH ที่ 2800 -56,000 / +20 ETH
คืน budget ที่เหลือ 1,200 กลับเป็นเงินว่าง

effective_cost = (56,000 + 4,000 - 1,200) / 20 = 2,940 ต่อ ETH ซึ่งเท่ากับ 3000 - 60

Covered call จาก smoke run 2026-10-03: ถือ 2 ETH ขาย ETH-261016-2900-C ได้ 0.60 สัญญา (30% ของ 2 ETH) ที่ 20.80 ได้ premium ประมาณ 12.5 USDT ก่อนค่าธรรมเนียม


⚠️ ความเสี่ยงและข้อจำกัด

เรื่อง ผล สถานะ
Covered call เป็น naked call ในสายตา exchange ใช้ USDT margin เพิ่ม ขายได้น้อยกว่า Deribit ที่ทุนเท่ากัน 🟢 จำลองแล้ว (paper liquidate เมื่อต่ำกว่า MM)
Gate 3b ไม่นับ budget ของ put เป็น buffer ขาย put ด้วยเงินสดอย่างเดียวได้น้อยลงประมาณ 17% เทียบ ADR-005 🟢 owner ยอมรับแล้ว
ETH ร่วงแรง put หลายรอบถูก assign, เงินสดกลายเป็น ETH ที่ K ⚪ คุมด้วย cap 88% และโซนของ grid
ETH ขึ้นแรง call ITM จ่ายส่วนต่างเป็น USDT; ETH ยังอยู่ แต่พลาดกำไรเหนือ strike ⚪ คุมด้วย cap 30% และ strike เหนือโซนขาย
ราคาซื้อ spot วิ่งเกิน budget + เงินว่างที่เกิน buffer exchange ปฏิเสธการซื้อ, leg ค้างจน SPOT_LEG_OVERDUE 🟢 มี leg fund (ดูหมายเหตุใต้ตาราง)
Live transfer / live order ยังไม่เคยรันกับบัญชีจริง 🔴 ล็อกไว้จนกว่าจะ probe บน demo
Portfolio Margin ของ Binance อาจเปลี่ยนกติกา collateral ทั้งหมด ⚪ revisit เมื่อเปิดใช้

Leg fund โอนเงินว่างส่วนที่เกิน buffer ไปผูกเป็น loss budget ของรายการซื้อนั้น และงดโอนเมื่อ mm_ratio ถึงระดับเติมเงินหรือไม่ทราบค่า

📚 อ้างอิง

  • D:\MY\ARGUS\Financial\BINANCE_OPTION_ENGINE\docs\decisions\001-wallet-separation.md
  • D:\MY\ETH_CASHFLOW_SYSTEM\docs\decisions\005-gate6-cash-backed-puts.md
  • D:\MY\ARGUS\Financial\BINANCE_OPTION_ENGINE\src\binance_options_engine\overlay\risk\model.py (RiskLimits, CollateralConfig)
  • D:\MY\ARGUS\Financial\BINANCE_OPTION_ENGINE\src\binance_options_engine\overlay\strategy\ (covered call, put writing)