การปรับสมดุลพอร์ตโฟลิโอ ETF อัตโนมัติ: วิธีที่เราสร้างบอทสำหรับ Tinkoff Invest

บอท TypeScript/Bun แบบ open-source สำหรับการปรับสมดุลพอร์ตโฟลิโอ ETF อัตโนมัติบน Tinkoff Invest รองรับ 4 โหมดการปรับสมดุล, margin trading, และหลายบัญชี พร้อมซอร์สโค้ด

ETF Balancer Bot การปรับสมดุลพอร์ตโฟลิโออัตโนมัติ: บอทติดตามสัดส่วนเป้าหมายและซื้อขายแทนคุณ

สมมติว่าคุณมีพอร์ตโฟลิโอที่ประกอบด้วย ETF สี่ตัว ได้แก่ TMOS, TBRU, TRUR และเงินสดในรูเบิล — ตัวละ 25% ตลาดเคลื่อนไหว — TMOS เพิ่มขึ้นเป็น 32%, TBRU ลดลงเหลือ 18% ทฤษฎีคลาสสิกบอกว่า: ขายสิ่งที่ขึ้น ซื้อสิ่งที่ลง นั่นคือการปรับสมดุล

ปัญหาคือการทำด้วยมือนั้นเจ็บปวด โดยเฉพาะเมื่อมีหลายบัญชี, กลยุทธ์ margin และการปรับสมดุลทุกชั่วโมง เราจึงสร้างบอทที่ทำสิ่งนี้โดยอัตโนมัติ

TIEBB (Tinkoff Invest ETF Balancer Bot) คือบอท TypeScript แบบ open-source ที่เชื่อมต่อกับ Tinkoff Invest API และรักษาสัดส่วนการจัดสรรพอร์ตโฟลิโอตามเป้าหมายโดยอัตโนมัติ รองรับ 4 โหมดการปรับสมดุล, margin trading, หลายบัญชี และ dry-run สำหรับการทดสอบ


TL;DR

  • บอทแบบ Open-source (Apache 2.0) สำหรับการปรับสมดุลพอร์ตโฟลิโอ ETF อัตโนมัติ
  • 4 โหมดการปรับสมดุล: แบบกำหนดเอง, market cap, AUM, decorrelation
  • Margin trading สูงสุด 4x พร้อมการจัดการความเสี่ยง
  • หลายบัญชี: บัญชีไม่จำกัด พร้อมการตั้งค่าเฉพาะบัญชี
  • TypeScript + Bun — เร็ว, มี type, ไม่ยุ่งยาก
  • Dry-run mode — คำนวณออร์เดอร์โดยไม่ต้องดำเนินการจริง

เหตุใดการปรับสมดุลจึงสำคัญ

Portfolio Rebalancing Concept

แนวคิดนั้นเรียบง่าย: คุณกำหนดสัดส่วนเป้าหมายสำหรับสินทรัพย์ในพอร์ตโฟลิโอ (เช่น 25% TMOS, 25% TBRU, 25% TRUR, 25% RUB) เมื่อเวลาผ่านไป ตลาดเคลื่อนไหวและสัดส่วนจริงเบี่ยงเบนจากเป้าหมาย การปรับสมดุลหมายถึงการกลับสู่สัดส่วนเป้าหมายโดยการขายสิ่งที่ชนะและซื้อสิ่งที่แพ้

เหตุผลที่สำคัญ:

  1. การควบคุมความเสี่ยง — หากสินทรัพย์หนึ่งเติบโตเป็น 60% ของพอร์ตโฟลิโอ คุณรับความเสี่ยงมากเกินไป
  2. การทำกำไรอย่างเป็นระบบ — คุณขายสิ่งที่เติบโตโดยอัตโนมัติ
  3. การซื้อเมื่อราคาลง — คุณซื้อสิ่งที่ลดลงโดยอัตโนมัติ
  4. วินัย — ไม่มีอารมณ์ มีแค่อัลกอริทึม

วิธีการทำงานของบอท

ลูปหลัก

1. ตรวจสอบว่า MOEX เปิดทำการหรือไม่
2. ดึงข้อมูลสถานะและราคาปัจจุบัน
3. คำนวณการจัดสรรที่ต้องการ (4 โหมด)
4. สร้างออร์เดอร์: ขายก่อน แล้วจึงซื้อ
5. ดำเนินการด้วย market order
6. รอตาม BALANCE_INTERVAL แล้ววนซ้ำ

สี่โหมดการปรับสมดุล

Four Balancing Modes

1. แบบกำหนดเอง (Manual) — สัดส่วนคงที่จาก config (เช่น 25/25/25/25)

2. Market Cap — สัดส่วนตามสัดส่วน market capitalization ของกองทุนแต่ละตัว

3. AUM — สัดส่วนตามสัดส่วน Assets Under Management

4. Decorrelation — โหมดที่น่าสนใจที่สุด:

decorrelationPct = (marketCap - AUM) / AUM * 100
metric = max_decorrelationPct - individual_decorrelationPct
weight = metric / sum(metrics) * 100

ค้นหาตราสารที่ market cap แตกต่างจาก AUM และปรับสมดุลระหว่างตัวชี้วัดเหล่านี้

การสร้างออร์เดอร์อัจฉริยะ

บอทจะขายก่อน แล้วจึงซื้อ วิธีนี้ปลดปล่อยทุนสำหรับการซื้อ — ไม่จำเป็นต้องสำรองเงินสด ตราสารทั้งหมดซื้อขายเป็นล็อตพร้อมการปัดเศษที่ถูกต้อง


คุณสมบัติขั้นสูง

  • Margin trading สูงสุด 4x พร้อมการลด leverage อัตโนมัติก่อนปิดตลาด
  • หลายบัญชี — บัญชีไม่จำกัด แต่ละบัญชีมีกลยุทธ์เป็นของตัวเอง
  • เกณฑ์กำไรขั้นต่ำ — ไม่ขายหากกำไรต่ำกว่าเกณฑ์
  • Dry-run mode — คำนวณทุกอย่างโดยไม่ดำเนินการจริง
  • การปรับตามส่วนต่าง (Diff-based) — สัดส่วนปรับตามการเปลี่ยนแปลงนับตั้งแต่การปรับสมดุลครั้งล่าสุด

เริ่มต้นอย่างรวดเร็ว

git clone https://github.com/suenot/tinkoff-invest-etf-balancer-bot.git
cd tinkoff-invest-etf-balancer-bot
bun install
cp .env-example .env && cp CONFIG.example.json CONFIG.json
# Add your Tinkoff Invest API token to .env
bun run start

ลองใช้งาน


ลิงก์:


การอ้างอิง

@software{soloviov2026etfbalancer,
  author = {Soloviov, Eugen},
  title = {Automated ETF Portfolio Rebalancing Bot for Tinkoff Invest},
  year = {2026},
  url = {https://marketmaker.cc/th/blog/post/etf-balancer-bot-tinkoff},
  description = {บอท TypeScript แบบ open-source สำหรับการปรับสมดุลพอร์ตโฟลิโอ ETF อัตโนมัติบน Tinkoff Invest}
}