Начать бесплатно

Как настроить Flex Query в Interactive Brokers?

Нужны две вещи: Activity Flex Query — сохранённый отчёт с восемью секциями в формате XML — и токен Flex Web Service, по которому программа этот отчёт скачивает. Обе делаются на одной странице кабинета, минут за десять. Ниже — путь по меню, шаги и схема, какая секция за что отвечает.

Обновлено

Что ты получишь в конце

Flex Query — это шаблон отчёта в кабинете IB: какие разделы, какие поля, за какой период и в каком формате. У каждого запроса есть номер — Query ID. Flex Web Service — способ получать такой отчёт программой, без входа в кабинет: по IBKR Guides для запроса нужны текущий токен и Query ID (Configure Flex Web Service).

Обе настройки — в одном месте: Performance & Reports → Flex Queries (или Menu → Reporting → Flex Queries). На схеме — куда нажимать и что получится.

Где что лежит в кабинете IB
Performance & Reports → Flex Queries
или Menu → Reporting → Flex Queries
  • Activity Flex Query, «+»
    Sections + Delivery Configuration
    8 секций, Models Optional, XML, Last 365 Calendar Days
    • Continue → Create
      Query ID
      номер отчёта
  • Flex Web Service Configuration
    Flex Web Service Status → Save
    Should Expire After, Valid For IP Address — пусто
    • Generate New Token
      Токен
      ключ подключения

Названия пунктов — как в IBKR Guides (Client Portal). Query ID и токен вставляются в PnlTrack.

Пошагово

Шаги — по IBKR Guides Create an Activity Flex Query и Configure Flex Web Service; состав секций и настройки доставки — те, что ждёт импорт PnlTrack.

  1. Открой Flex Queries. Войди в Client Portal и открой Performance & Reports → Flex Queries (или Menu → Reporting → Flex Queries).
  2. Создай Activity Flex Query. В панели Activity Flex Query нажми «+» и дай запросу любое имя.
  3. Отметь восемь секций. В Sections выбери: Cash Transactions, Corporate Actions, Financial Instrument Information, Open Positions, Option Exercises, Assignments and Expirations, Realized and Unrealized Performance Summary in Base, Trades, Transfers.
  4. Включи все поля в каждой секции. Каждая секция открывается окном со списком полей: отметь все и нажми Save. У Open Positions включи оба уровня детализации — Summary и Lot.
  5. Настрой Delivery Configuration. Models — Optional, Format — XML, Period — Last 365 Calendar Days. General Configuration оставь как есть.
  6. Сохрани и скопируй Query ID. Нажми Continue, проверь настройки и нажми Create. Скопируй Query ID созданного запроса.
  7. Включи Flex Web Service. На той же странице открой Flex Web Service Configuration, отметь Flex Web Service Status и нажми Save.
  8. Создай токен. В Should Expire After выбери самый долгий срок, поле Valid For IP Address оставь пустым, нажми Generate New Token и скопируй токен.
  9. Вставь в PnlTrack. В PnlTrack добавь подключение Interactive Brokers с токеном, затем ежедневный отчёт с Query ID — загрузка начнётся сразу.

Какая секция за что отвечает

Flex отдаёт ровно те секции, что отмечены в запросе. По нашим выгрузкам: отмеченная секция без данных приходит пустой, неотмеченной в файле нет вовсе — и восстановить её потом нечем. Поэтому список короткий и точный: всё, что читает импорт, и ничего лишнего. Лишняя секция не мешает, но и не используется. Что в каждой секции, описано в Activity Flex Query Reference.

Восемь секций Activity Flex Query
  1. 1Cash Transactions
    PnlTrack берёт:
    дивиденды, удержанный налог, проценты, комиссии брокера, вводы и выводы денег
    без неё:
    нет дивидендов и налога с них
  2. 2Corporate Actions
    PnlTrack берёт:
    сплиты, спин-оффы, поглощения
    без неё:
    сплиты и поглощения не учтены
  3. 3Financial Instrument Information
    PnlTrack берёт:
    ISIN, conid, FIGI — опознание бумаги
    без неё:
    бумагу не опознать надёжно — тикер её не определяет
  4. 4Open Positions
    PnlTrack берёт:
    позиции и стоимость приобретения глазами брокера
    без неё:
    не с чем сверить позиции, не применяется поправка на возврат капитала
  5. 5Option Exercises, Assignments and Expirations
    PnlTrack берёт:
    исполнение, назначение и истечение опционов
    без неё:
    исполнение и истечение опционов не видны
  6. 6Realized and Unrealized Performance Summary in Base
    PnlTrack берёт:
    отметку брокера о корректировке стоимости
    без неё:
    корректировку стоимости не видно
  7. 7Trades
    PnlTrack берёт:
    покупки и продажи, цены, комиссии
    без неё:
    не загрузится ничего
  8. 8Transfers
    PnlTrack берёт:
    приход и уход бумаг между счетами и брокерами
    без неё:
    продажа переведённой бумаги выглядит продажей без покупки

Состав — ровно тот, что читает импорт PnlTrack; тот же список — в онбординге приложения.

Почему Models — Optional, а не All

Models в Delivery Configuration принимает два значения — Optional и All (так в IBKR Guides). При All кабинет IB предупреждает одной строкой, что разделы и поля реализованной прибыли выключаются, когда в отчёт включены модели. В справке IBKR Guides этой оговорки нет — она видна только в самом кабинете.

Что это значит на деле, мы проверили на двух выгрузках одного счёта: при All у Open Positions стоимость приобретения (Cost Basis Price, Cost Basis Money) нулевая, а сводка Realized and Unrealized Performance Summary in Base пустая. Ноль здесь — «поле выключено», а не «бумага бесплатная», и PnlTrack такой ноль фактом не записывает. При Optional те же поля заполнены и сходятся с выпиской CSV того же счёта.

Models в Delivery Configuration
Models
  • Optional
    Поля прибыли и стоимости заполнены
    позиции со стоимостью, сводка по бумагам
  • All
    Поля прибыли выключены
    Open Positions с нулевой стоимостью, сводка пустая

Вывод — по двум нашим выгрузкам одного счёта с разницей в полчаса.

Период и история старше года

Last 365 Calendar Days — один из вариантов Period в IBKR Guides. С ним каждый ежедневный запуск приносит последний год: новые сделки появляются, а уже загруженные PnlTrack не дублирует.

Историю старше года через Flex не тянут: в PnlTrack её загружают выписками Activity Statement в формате CSV, по одной на год — в приложении для этого есть отдельная пошаговая инструкция. Сам XML-файл Flex вручную не загружается: он приходит только по токену.

Сделки в течение дня — по желанию

Activity Flex Query обновляется раз в сутки. Если хочешь видеть сделки быстрее, в PnlTrack можно добавить второй отчёт — Trade Confirmation Flex Query: он создаётся в той же странице Flex Queries (панель Trade Confirmation Flex Query, «+»), с одной секцией и форматом XML. Токен у него тот же, нужен только его Query ID. PnlTrack запрашивает такой отчёт примерно каждые 30 минут.

Если что-то не так

  • Токен перестал работать. У токена есть срок (по IBKR Guides по умолчанию — 6 часов, поэтому срок выбирают дольше). Сгенерируй новый и замени ключ в PnlTrack. Помни: новый токен отменяет прежний — если тем же логином IB пользуется ещё программа, ей тоже нужен новый.
  • В Valid For IP Address вписан адрес. Тогда токен работает только с этого адреса, и серверы PnlTrack его не смогут использовать. Оставь поле пустым.
  • Нет позиций, переводов или кодов бумаг. Скорее всего, секция не отмечена. Об отсутствующих Open Positions, Realized and Unrealized Performance Summary in Base, Transfers и Financial Instrument Information PnlTrack сам напишет после импорта — открой запрос в IB, отметь секцию и сохрани.
  • Стоимость позиций нулевая. Проверь Models: должно быть Optional.

Что дальше делать с загруженными сделками для налоговой — в обзоре Interactive Brokers и налоговая декларация в Финляндии.

Частые вопросы

Безопасно ли давать токен Flex Web Service?
Токен служит для запроса отчётов Flex вместе с Query ID — так его описывает IBKR Guides. Пароль от IB ты не передаёшь. Токен можно в любой момент заменить новым: по IBKR Guides новый токен отменяет прежний.
Сколько живёт токен?
По IBKR Guides срок задаётся в Should Expire After, по умолчанию — 6 часов. Для ежедневной загрузки выбирают самый долгий срок; когда он истечёт, сгенерируй новый токен и замени ключ в PnlTrack.
Почему Models = Optional?
При All кабинет IB выключает поля реализованной прибыли, и в наших выгрузках позиции приходили с нулевой стоимостью приобретения. При Optional эти поля заполнены.
Можно ли загрузить историю больше чем за год?
Flex-запрос в PnlTrack настраивается на Last 365 Calendar Days. Более старую историю загружают выписками Activity Statement в CSV, по одной на год; пересекающиеся периоды не страшны — дубли PnlTrack убирает.

Источники

Всё, что здесь сказано о налоге и курсах валют, опирается на эти источники.

  1. IBKR Guides: Create an Activity Flex Query (Client Portal) — путь меню, секции, Delivery Configuration: Models, Format, Period
  2. IBKR Guides: Configure Flex Web Service (Client Portal) — включение сервиса, срок и IP токена, новый токен отменяет старый
  3. IBKR Reporting Reference: Activity Flex Query Reference — что в каждой секции
  4. IBKR Reporting Reference: Open Positions — уровни Summary и Lot, Cost Basis
  5. IBKR Reporting Reference: Trades — уровни детализации сделок
  6. IBKR Reporting Reference: Transfers (ACATS, Internal) — переводы позиций между брокерами

Это общая информация, а не налоговая или инвестиционная консультация. Свою ситуацию сверь с инструкциями налоговой или со специалистом.