การปรับสมดุลพอร์ตโฟลิโอ ETF อัตโนมัติ: วิธีที่เราสร้างบอทสำหรับ Tinkoff Invest
การปรับสมดุลพอร์ตโฟลิโออัตโนมัติ: บอทติดตามสัดส่วนเป้าหมายและซื้อขายแทนคุณ
สมมติว่าคุณมีพอร์ตโฟลิโอที่ประกอบด้วย 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 — คำนวณออร์เดอร์โดยไม่ต้องดำเนินการจริง
เหตุใดการปรับสมดุลจึงสำคัญ

แนวคิดนั้นเรียบง่าย: คุณกำหนดสัดส่วนเป้าหมายสำหรับสินทรัพย์ในพอร์ตโฟลิโอ (เช่น 25% TMOS, 25% TBRU, 25% TRUR, 25% RUB) เมื่อเวลาผ่านไป ตลาดเคลื่อนไหวและสัดส่วนจริงเบี่ยงเบนจากเป้าหมาย การปรับสมดุลหมายถึงการกลับสู่สัดส่วนเป้าหมายโดยการขายสิ่งที่ชนะและซื้อสิ่งที่แพ้
เหตุผลที่สำคัญ:
- การควบคุมความเสี่ยง — หากสินทรัพย์หนึ่งเติบโตเป็น 60% ของพอร์ตโฟลิโอ คุณรับความเสี่ยงมากเกินไป
- การทำกำไรอย่างเป็นระบบ — คุณขายสิ่งที่เติบโตโดยอัตโนมัติ
- การซื้อเมื่อราคาลง — คุณซื้อสิ่งที่ลดลงโดยอัตโนมัติ
- วินัย — ไม่มีอารมณ์ มีแค่อัลกอริทึม
วิธีการทำงานของบอท
ลูปหลัก
1. ตรวจสอบว่า MOEX เปิดทำการหรือไม่
2. ดึงข้อมูลสถานะและราคาปัจจุบัน
3. คำนวณการจัดสรรที่ต้องการ (4 โหมด)
4. สร้างออร์เดอร์: ขายก่อน แล้วจึงซื้อ
5. ดำเนินการด้วย market order
6. รอตาม BALANCE_INTERVAL แล้ววนซ้ำ
สี่โหมดการปรับสมดุล

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
bun run start
ลองใช้งาน
- ซอร์สโค้ด: github.com/suenot/tinkoff-invest-etf-balancer-bot
- ลิขสิทธิ์: Apache 2.0
ลิงก์:
- GitHub: github.com/suenot/tinkoff-invest-etf-balancer-bot
- Tinkoff Invest API: invest-api.tinkoff.ru
การอ้างอิง
@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}
}
ผู้เขียน
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.