Принцип сервиса — никакой «магии»: каждая цифра на дашборде и публичном профиле имеет открытую формулу, явный маркер качества данных и автоматическую проверку на эталонных счетах. Метки MT4/MT5 и Exante ниже отмечают правила, специфичные для платформы; всё остальное общее.
Платформы устроены по-разному, поэтому и кривая капитала строится по-разному — но доходность, просадка и рейтинг считаются по единым принципам.
Данные читаются напрямую с сервера брокера в режиме только на чтение — владелец счёта не может их отредактировать. MT4/MT5 — инвесторский (read-only) пароль; Exante — API-ключи к data-эндпоинтам (basic-доступ к рыночным данным; торговать или выводить средства через них нельзя). Каждая точка кривой капитала несёт маркер:
MT4/MT5. Balance(t) — кумулятивная сумма всех депозитов/выводов/кредитов и net-результатов закрытых сделок (profit + commission + swap). После каждой синхронизации реконструированный баланс сверяется с балансом сервера брокера — расхождение даже на цент считается ошибкой данных.
Exante. Балансовая линия — это «MT4-баланс инвест-счёта»: cash плюс стоимость входа открытых позиций (покупка актива баланс не меняет — деньги превращаются в позицию). Она восстанавливается из транзакций по валютам и сводится в валюту счёта по курсам дня. Инвариант сходимости: BalanceCurve(сегодня) ≈ NAV − плавающий PnL открытых позиций (допуск 3%; на реальном счёте — 1.6%, остаток объясняется опционными экспирациями, см. «Ограничения»).
Для инвест-счёта главная мера капитала — NAV mark-to-market: измеренная сервером стоимость всего портфеля (cash + позиции по текущей цене) в валюте счёта. История NAV копится с момента подключения и честно показывается с этой даты; до неё — реконструированная балансовая линия из транзакций. На графике это серая балансовая линия на всю историю плюс синяя NAV-линия с первой измеренной точки и пунктирный маркер «NAV с {даты}».
Депозит — не прибыль, вывод — не убыток. Поэтому доходность считается time-weighted: период разбивается моментами денежных потоков, рост в каждом под-периоде rk = Ek / (Ek-1 + Dk) перемножается: TWR = Π rk − 1. Кредиты/бонусы брокеров, переводы между субсчетами и занос/вывод бумаг (SECURITY TRANSFER) — это движение капитала, а не доходность: они входят в потоки Dk и не маскируют результат. VAMI («рост $1 000») — та же цепочка доходностей как индекс: VAMI(t) = 1000 · Π(1 + rk).
Единый базис для инвест-счёта. Exante Доходность и просадка считаются на одной склеенной кривой: до t0 (первая измеренная NAV-точка) — реализованный баланс (booked-базис, без нереализованного PnL), с t0 — измеренный NAV. Накопленная до начала измерения нереализованная переоценка rev = NAV(t0) − Баланс(день до t0) − потоки дня t0 исключается из доходности синтетическим потоком в t0 — мы не знаем, в каком месяце она возникла, поэтому не записываем её в доход. Величина rev раскрывается числом в футере честности профиля. В результате на инвест-счёте одна %-таблица месячных доходностей на всю историю, VAMI и годовой прогноз — из полной истории.
На счетах, переживших глубокие просадки с последующими пополнениями, total-TWR может достигать экстремальных значений — это математически корректно: стратегия восстанавливалась с очень низкой базы. Рядом всегда показаны месячные доходности и VAMI-кривая, дающие адекватную картину.
Выбранная при подключении валюта счёта — это базовая отчётная валюта. Брокер отдаёт NAV, cash и позиции уже в ней; сделки, потоки, балансовая кривая и все суммы на дашборде (дивиденды, налоги, сборы, календарь, CSV) сводятся в неё по дневным кросс-курсам (close дневной свечи; неизвестный курс → 1:1 с честным предупреждением в логе). Следствия:
Max Drawdown = максимум (peak − value)/peak по серии. Считается по equity (MT) и по NAV (Exante), а не по балансу: balance-кривая не видит плавающих убытков открытых позиций, поэтому equity/NAV-просадка почти всегда глубже и именно она показывается как главная мера риска. Просадка инвест-счёта считается на flow-нейтрализованном индексе — выводы, переводы и переоценка стыка t0 просадкой не считаются. Если в окне просадки есть reconstructed-точки, оно помечается бейджем «reconstructed».
У брокера нет понятия «сделка» — есть исполнения (fills). Для журнала мы собираем закрытые позиции методом FIFO: открывающие лоты съедаются закрывающими, цена входа — средневзвешенная. P&L берётся из денежных ног леджера (точен по определению), комиссия учитывается с обеих сторон. Поддержаны шорты, перевороты и сплиты (пары STOCK SPLIT корректируют открытые лоты). P&L каждой сделки конвертируется в валюту счёта по курсу дня закрытия. Журнальный слой (плейбуки, заметки, календарь) работает с такими сделками как с обычными.
Неторговые операции леджера разделены и сведены в валюту счёта: доходы — дивиденды, купоны (по облигациям), проценты; издержки — налоги, комиссии, ролловеры, сборы (включая депозитарные). Налоги показываются нетто: возврат ранее удержанного налога (recalculation) гасит удержание. Налоги — это фактические удержания брокера, а не налоговый расчёт. Так видно, сколько портфель приносит пассивно и сколько съедают издержки, отдельно от торгового результата.
Дневной, недельный и месячный итог = торговый P&L плюс неторговые движения (дивиденды, проценты, налоги, ролловеры, сборы; комиссии не дублируются — они уже внутри сделок). Пополнения и снятия показаны отдельно от результата — капитал не путается с доходностью. Клик по дню раскрывает кривую дня, сделки, движения средств и заметку.
Композит 0–100 из трёх компонент:
Итог = 0.4·Risk + 0.3·Consistency + 0.3·Discipline. Веса будут калиброваться по мере накопления замониторенных счетов.
Рейтинг — opt-in и risk-adjusted; деньги в нём не показываются никогда, только проценты и относительные метрики. Допуск (иначе счёт не ранжируется и виден «вне рейтинга» только владельцу):
TJ Rating = 0.35·ReturnQuality + 0.30·Risk + 0.20·Consistency + 0.15·Discipline. ReturnQuality — годовая TWR-доходность по лог-шкале с убывающей отдачей: clamp(100·ln(1 + max(ann, 0)) / ln 4, 0, 100), то есть 100%/год → 50 очков, 300%+/год → 100. Сверхдоходность не даёт сверхочков. Risk / Consistency / Discipline — компоненты Health Score. Анти-разгонный механизм (применяется после композита): max equity/NAV-просадка ≥ 50% ограничивает итог 49 очками, ≥ 80% — 29 очками. Глубокую историческую просадку нельзя «отмыть» доходностью — её видно в ранге всегда.