ETF портфелин автоматтык теңдемдөө: Tinkoff Invest үчүн ботту кантип түздүк
Портфелди автоматтык теңдемдөө: бот максаттуу салмактарды көзөмөлдөп, сиздин ордуңузга соода кылат.
Айталы, сизде төрт ETF'тен турган портфель бар: TMOS, TBRU, TRUR жана рубль менен накталай акча. Ар бири 25%дан. Рынок кыймылдайт — TMOS 32%га чейин өсөт, TBRU 18%га чейин төмөндөйт. Классикалык теория мындай дейт: өскөнүн сат, түшкөнүн сатып ал. Бул — теңдемдөө.
Көйгөй мында: муну кол менен жасоо кыйын. Айрыкча бир нече аккаунт, маржиналдык стратегиялар жана саат сайын теңдемдөө болгондо. Биз муну автоматтык түрдө жасаган бот түздүк.
TIEBB (Tinkoff Invest ETF Balancer Bot) — Tinkoff Invest API'ге туташып, портфелдин максаттуу бөлүштүрүлүшүн автоматтык түрдө кармап турган ачык баштапкы коддуу TypeScript боту. Теңдемдөөнүн төрт режими, маржиналдык соода, көп аккаунт, тестирлөө үчүн dry-run.
TL;DR
- ETF портфелин автоматтык теңдемдөө үчүн ачык баштапкы коддуу (Apache 2.0) бот
- Теңдемдөөнүн 4 режими: кол менен, market cap, AUM, декорреляция
- Тобокелди башкаруу менен 4x'ке чейинки маржиналдык соода
- Көп аккаунт: жеке жөндөөлөрү бар чектелбеген аккаунттар
- TypeScript + Bun — тез, типтелген, түйшүксүз
- Dry-run режими — буйрутмаларды аткарбай туруп эсептейт
Теңдемдөө эмне үчүн маанилүү

Идея жөнөкөй: сиз портфелиңиздеги активдерге максаттуу салмактарды аныктайсыз (мисалы, 25% TMOS, 25% TBRU, 25% TRUR, 25% RUB). Убакыт өткөн сайын рынок кыймылдайт да, чыныгы салмактар максаттан четтейт. Теңдемдөө дегени — өскөндөрүн сатып, түшкөндөрүн сатып ала отуруп, максаттуу салмактарга кайра кайтуу.
Мунун маанилүүлүгү эмнеде:
- Тобокелди көзөмөлдөө — эгер бир актив портфелиңиздин 60%ына чейин өссө, сиз ашыкча тобокелге кабыласыз
- Системалуу пайда алуу — өскөнүн автоматтык түрдө сатасыз
- Түшкөндө сатып алуу — төмөндөгөнүн автоматтык түрдө сатып аласыз
- Тартип — эмоция жок, бир гана алгоритм
Бот кантип иштейт
Негизги цикл
1. Check if MOEX is open
2. Fetch current positions and prices
3. Calculate desired allocation (4 modes)
4. Generate orders: sells first, then buys
5. Execute with market orders
6. Sleep for BALANCE_INTERVAL, repeat
Теңдемдөөнүн төрт режими

1. Кол менен — конфигден белгиленген туруктуу салмактар (мисалы, 25/25/25/25)
2. Market Cap — ар бир фонддун рыноктук капитализациясына пропорционалдуу салмактар
3. AUM — башкаруудагы активдерге (Assets Under Management) пропорционалдуу салмактар
4. Декорреляция — эң кызыктуу режим:
decorrelationPct = (marketCap - AUM) / AUM * 100
metric = max_decorrelationPct - individual_decorrelationPct
weight = metric / sum(metrics) * 100
Рыноктук капитализациясы AUM'дан айырмаланган инструменттерди таап, ушул метрикалардын ортосунда теңдемди түзөт.
Акылдуу буйрутма генерациясы
Бот адегенде сатат, андан кийин сатып алат. Бул сатып алууга капиталды бошотот — накталай акча резервин кармоонун кереги жок. Бардык инструменттер туура тегеректөө менен лоттор менен сатылат.
Кеңейтилген мүмкүнчүлүктөр
- Рынок жабылардан мурда автоматтык деливеридж жасаган 4x'ке чейинки маржиналдык соода
- Көп аккаунт — чектелбеген аккаунттар, ар биринин өз стратегиясы бар
- Эң төмөнкү пайда чеги — пайда чектен төмөн болсо сатпаңыз
- Dry-run режими — баарын эсептеңиз, эч нерсе аткарбаңыз
- Diff негизиндеги оңдоо — салмактар акыркы теңдемдөөдөн берки өзгөрүүлөргө жараша ыңгайлашат
Тез баштоо
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
Шилтеме (Citation)
@software{soloviov2026etfbalancer,
author = {Soloviov, Eugen},
title = {Automated ETF Portfolio Rebalancing Bot for Tinkoff Invest},
year = {2026},
url = {https://marketmaker.cc/en/blog/post/etf-balancer-bot-tinkoff},
description = {Open-source TypeScript bot for automated ETF portfolio rebalancing on Tinkoff Invest.}
}
Authors
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.