Перейти к основному содержимому

Маржинальные показатели

WebSocket API позволяет получать маржинальные показатели портфеля, включая ГО, вармаржу, уровень риска, задолженности и устойчивость счёта в реальном времени.


🔌 WebSocket URL

wss://ws.broker.ru/trade-api-bff-marginal-indicators/api/v1/marginal-indicators/ws

🔐 Аутентификация

Перед установкой WebSocket-соединения клиент должен передать access-token в HTTP-заголовке:

Authorization: Bearer <ACCESS_TOKEN>

Подробнее об авторизации см. раздел Авторизация.


📥 Формат ответа server → client

Ниже приведена структура данных, соответствующая спецификации из исходного файла.

Все данные приходят в одном объекте, содержащем:

  • agreementData
  • portfolioCurrentValue
  • portfolioStability
  • fortsStability
  • marginParameters
  • cashByCurrency
  • moneyDebt
  • marginSecurities
  • futuresParameters

📄 Структура данных

📦 agreementData — данные о брокерском счёте

ПолеТипОписание
numberstringНомер счёта
isIiabooleanЯвляется ли счёт ИИС
displayNamestringОтображаемое имя
subaccountIdstringID субсчёта
colorstringHEX‑код цвета

📦 portfolioCurrentValue — стоимость портфеля

ПолеТипОписание
currentValueRubnumberТекущая стоимость
dailyPortfolioChangeRubnumberДневное изменение (₽)
dailyPortfolioChangePercnumberДневное изменение (%)
totalPortfolioChangeRubnumberИзменение за всё время (₽)
totalPortfolioChangePercnumberИзменение за всё время (%)
collateralAvailablenumberДоступное обеспечение
varMarginnumberВариационная маржа

📦 portfolioStability — устойчивость портфеля

ПолеТипОписание
isMarginOnbooleanВключена ли маржинальная торговля
borrowedFundsnumberВсе задолженности (₽)
stabilityStatusIdnumberID статуса (0–5)
stabilityStatusNamestringТекст статуса
refillSumnumberСумма для выхода из маржин-колла

📦 fortsStability — устойчивость по ФОРТС

ПолеТипОписание
ownFundsnumberСобственные средства
freeCashnumberСвободные средства
stabilityStatusIdnumberID статуса
stabilityStatusNamestringСтатус позиции
refillSumnumberСумма пополнения
fortsMarginCallnumberУровень маржин-колла
fortsForcedClosurenumberУровень принудительного закрытия
riskLevelnumberУровень риска (0–4)

📦 marginParameters — параметры маржинального портфеля

ПолеТипОписание
marginValuenumberСтоимость маржинальных активов
collateralnumberГО
marginCallnumberУровень маржин-колла
forcedClosurenumberУровень принудительного закрытия

📦 cashByCurrency — свободные деньги по валютам

ПолеТипОписание
currencystringВалюта
sumnumberСумма

📦 moneyDebt — задолженности по валютам

ПолеТипОписание
totalMoneyDebtnumberОбщая задолженность
debtByCurrency[].currencystringВалюта
debtByCurrency[].sumnumberЗадолженность

📦 marginSecurities — маржинальные позиции

ПолеТипОписание
totalMarginSecuritynumberОбщая задолженность
marginBySecurity[].tickerstringБиржевой тикер
marginBySecurity[].boardstringРежим торгов
marginBySecurity[].displayNamestringИмя
marginBySecurity[].logoLinkstringЛоготип (deprecated)
marginBySecurity[].quantitynumberКол-во
marginBySecurity[].currentValuenumberСтоимость
marginBySecurity[].currencystringВалюта
marginBySecurity[].discountnumberДисконт (%)

📦 futuresParameters — фьючерсные позиции

ПолеТипОписание
futuresValuenumberОбщая стоимость
futuresPortfolio[].tickerstringБиржевой тикер
futuresPortfolio[].boardstringРежим торгов
futuresPortfolio[].currentValuenumberТекущая стоимость
futuresPortfolio[].balanceValuenumberБалансовая стоимость
futuresPortfolio[].futuresCollateralnumberГО по позиции
futuresPortfolio[].discountnumberДисконт
futuresPortfolio[].displayNamestringИмя
futuresPortfolio[].logoLinkstringЛоготип (deprecated)

📋 Пример ответа

{
"agreementData": {
"number": "1234567/25",
"isIia": false,
"displayName": "Основной",
"subaccountId": "49909a5f-8cfe-441a-b3b7-86054eb97922",
"color": "#2E88CB"
},
"portfolioCurrentValue": {
"currentValueRub": 8086.59,
"dailyPortfolioChangeRub": -6.38,
"dailyPortfolioChangePerc": -1.07,
"totalPortfolioChangeRub": -9.25,
"totalPortfolioChangePerc": -0.24,
"collateralAvailable": 5018.23,
"varMargin": 0
},
"portfolioStability": {
"isMarginOn": false,
"borrowedFunds": 0,
"stabilityStatusId": 5,
"stabilityStatusName": "Максимальная устойчивость",
"refillSum": 0
},
"fortsStability": {
"ownFunds": 0,
"freeCash": 0,
"stabilityStatusId": 0,
"stabilityStatusName": "",
"refillSum": 0,
"fortsMarginCall": 0,
"fortsForcedClosure": 0,
"riskLevel": 0,
"optionsPremium": 0
},
"marginParameters": {
"marginValue": 5136.59,
"collateral": 0,
"marginCall": 118.36,
"forcedClosure": 59.18
},
"cashByCurrency": [
{
"currency": "RUB",
"sum": 4544.79
}
],
"moneyDebt": {
"totalMoneyDebt": 0,
"debtByCurrency": []
},
"marginSecurities": {
"totalMarginSecurity": 0,
"marginBySecurity": [
{
"ticker": "RUB",
"board": "",
"displayName": "",
"logoLink": "https://mybroker.storage.bcs.ru/FinInstrumentLogo/RUB.png",
"quantity": 4544.79,
"currentValue": 4544.79,
"currency": "RUB",
"discount": 0
},
{
"ticker": "SBER",
"board": "TQBR",
"displayName": "Сбербанк",
"logoLink": "https://mybroker.storage.bcs.ru/FinInstrumentLogo/RU0009029540.png",
"quantity": 2,
"currentValue": 591.8,
"currency": "RUB",
"discount": 20
}
]
},
"futuresParameters": {
"futuresValue": 0,
"futuresPortfolio": []
}
}

💻 Примеры подключения

import WebSocket from "ws";

const URL = "wss://ws.broker.ru/trade-api-bff-marginal-indicators/api/v1/marginal-indicators/ws";

const ws = new WebSocket(URL, {
headers: {
Authorization: "Bearer YOUR_ACCESS_TOKEN",
},
});

ws.on("open", () => {
console.log("connected");
});

ws.on("message", (event) => {
const payload = JSON.parse(event.toString());
console.log(payload);
});

ws.on("error", (error) => {
console.error("WebSocket error:", error);
});

❗ Ошибки

HTTPОшибкаОписание
401UNAUTHORIZEDПользователь не авторизован
400BAD_REQUESTНекорректный запрос
404NOT_FOUNDДанные не найдены
5xxINTERNAL SERVER ERRORВнутренняя ошибка