РЕЕСТР

Один счёт. Один реестр. Zero drift.

Балансы хранения, торговли и маржи лежат в одном реестре с двойной записью. Баланс сохраняется по построению, а не ночными скриптами сверки.

TigerBeetle · двойная записьLiveСубсчетаPlanned
Live
Уже работает в canary или проде.
In build
Код в работе — статус ведётся в плане сборки.
Planned
Решение зафиксировано, работа не начата.
БЫЛО / СТАЛОЕдиный реестрLive

Два реестра и сверка — позади.

Старый стек держал деньги в двух местах и сводил разницу постфактум. Новая платформа держит деньги в одном месте и не даёт двум балансам разойтись.

Старое · было

  • Реестр кошелька и реестр торговли, которые держала в согласии фоновая синхронизация.
  • Перевод средств между ними — отдельная операция: с задержкой и целым классом ошибок сверки.
  • Мастер-счёт плюс торговые счета, склеенные, а не объединённые.

Стало · переписано

  • Один канонический реестр с двойной записью на базе TigerBeetle — класс СУБД, проверенный Jepsen.
  • Деньги существуют ровно в одном месте и выражены в трёх ролях: Хранение, Торговля и Маржа.
  • Роли, а не разрозненные хранилища — балансам нечего рассинхронизировать, потому что синхронизировать нечего.
ИНВАРИАНТ

Сохранение баланса — как тест.

Каждое движение по реестру — атомарный перевод двойной записью с ключом идемпотентности. Книги обязаны сходиться — и это требование проверяется, а не принимается на веру.

01 · Атомарные переводы

Каждое движение — один атомарный перевод.

Изменение баланса — это сохраняющая пара записей: либо проходит целиком, либо никак. Ключ идемпотентности делает повтор запроса безопасным.

Механизм: перевод двойной записью + ключ идемпотентности.

02 · Инвариант нуля

Сумма по активу всегда ноль.

По всему реестру знаковые балансы каждого актива обязаны давать в сумме ноль. Это свойство построения: внутренний перевод не создаёт и не уничтожает ценность.

Механизм: Σ по активу == 0, по построению.

03 · Контрольный гейт баланса

Гейт проверяет это на каждом батче.

Контрольный гейт баланса синхронно сверяет кэш с реестром на каждом батче. Расхождение обрывает обработку, а не уходит дальше. Публикуемая цифра — 0 drift: свойство, а не бенчмарк.

Механизм: контрольный гейт баланса · 0 drift под контролем гейта.

ОДИН РЕЕСТР, ТРИ РОЛИ

Один баланс в трёх ролях.

Один канонический аккаунт. Схема ниже показывает единый реестр, выраженный как Хранение, Торговля и Маржа — с инвариантом нуля, который связывает их так, что разойтись им нельзя.

Ваш аккаунт
Один реестр с двойной записью
  • ХранениеСредства в покое, под пороговой подписью.
  • ТорговляБаланс, доступный движку матчинга.
  • МаржаОбеспечение под вашими открытыми позициями.

Σ по активу == 0 — роли не могут рассинхронизироваться, потому что синхронизировать нечего.

ВНУТРЕННИЕ ПЕРЕВОДЫ

Ввод — перевод, не вывод.

Поскольку хранение и торговля — это роли в одном реестре, перевод средств из кошелька на торговый баланс остаётся внутренним переводом, а не внешним выводом.

Внутренний перевод, а не выход наружу.

Пополнение торговли из хранения никогда не покидает реестр. Это просто смена роли у того же сохраняющегося баланса.

Рассчитывается атомарно.

Этот перевод — такой же атомарный и идемпотентный, как любая запись в реестре: либо завершается, либо нет, без промежуточного состояния.

СУБСЧЕТАСубсчетаPlanned

Стратегии и риск — порознь.

Зафиксировано как отдельный ключевой эпик: один мастер-счёт и любое число торговых субсчетов, чтобы изолировать риск под стратегию, не покидая единый реестр.

Мастер-счёт плюс N торговых субсчетов.

Мастер-счёт и любое число торговых субсчетов. Торговать можно и прямо с мастера — субсчета это структура поверх того же реестра, а не вторая система.

Риск изолирован по каждому субсчёту.

Каждый субсчёт обособляет собственное обеспечение и экспозицию, так что позиция в одной стратегии не может дотянуться до другой.

ДЕТАЛИ

Вопросы — прямые ответы.

Механика единого аккаунта — то, что стоит прочесть до перевода средств.

Что такое единый аккаунт?

Это один канонический аккаунт, чьи балансы хранения, торговли и маржи лежат в одном реестре с двойной записью. Вместо раздельных реестров кошелька и торговли, которые держит в согласии задача синхронизации, есть один реестр и три роли — поэтому балансам не разойтись.

Смогу ли я разделять средства под разные стратегии?

Да — через субсчета. Эта работа зафиксирована как отдельный ключевой эпик и помечена Planned. По задумке это мастер-счёт плюс любое число торговых субсчетов: каждый изолирует свой риск, оставаясь в едином реестре.

Что значит «0 drift» и как это обеспечивается?

Для каждого актива знаковые балансы по всему реестру обязаны давать в сумме ноль. Контрольный гейт баланса синхронно сверяет кэш с реестром на каждом батче; расхождение обрывает обработку, а не уходит дальше. «0 drift» — это свойство, которое обеспечивает гейт, а не маркетинговый бенчмарк.

Внутренние переводы мгновенные и бесплатные?

Перевод средств из хранения в торговлю — это внутренний перевод, а не вывод: он никогда не покидает реестр. Это такой же атомарный и идемпотентный перевод, как любая запись в реестре, поэтому он проходит одним сохраняющим баланс шагом.

ЧИТАТЬ ДАЛЬШЕ

Единый аккаунт стоит между хранением, которое держит средства, и слоем прозрачности, который позволяет проверить книги.

Высокорисковые деривативы. На бессрочных контрактах можно потерять больше, чем внесённая начальная маржа. Недоступно резидентам ограниченных юрисдикций (не-US · не-UK).
Полное раскрытие рисков →