Всем привет!
Попросили посмотреть один проект. Человек полгода назад заказал торговую систему на C# под Transaq. Заплатил, получил код и в итоге забросил — не работало. Спрашивает, можно ли что-то спасти 😊
Посмотрел. С виду все отлично: интерфейсы, асинхронщина, учет позиций, даже окошко нарисовали. Пять веток в репозитории. А к брокеру не подключается ни одна!!!
В основной ветке подключена 32-битная DLL коннектора аж 2021 года, а программа 64-битная — упадет при первом же обращении. Нормальная 64-битная библиотека кстати лежала в соседней папке. В другой ветке библиотеку поправили, но там вообще не отправляется команда входа с логином и паролем. В третьей логин отправляется — но снова со старой DLL. Вот такая ситуация.
Дальше по мелочи (хотя какие это мелочи): на стакан и ленту не подписались, так что данных роботу не придет. В заявке нет ни площадки, ни счета, ни признака рыночной — брокер ее отбросит. Ответы брокера к стратегии не привязаны, позиция не считается, стратегия висит в ожидании. Исполнение берется из заявки, а не из сделки, так что на частичном исполнении учет съедет. Ну и про обрыв связи никто не подумал — ни переподключения, ни резервного сервера.
Привет, коллеги!
Хочу поделиться историей о том, как мы столкнулись с типичной проблемой в количественных финансах и что из этого вышло.
Проблема, знакомая каждому, кто строил риск-моделиПредставьте: у вас портфель из тысяч инструментов. Вы считаете Value-at-Risk (VaR), ожидаемые потери (Expected Shortfall), греки для опционов, скоринговые модели. Данные обновляются постоянно — новые цены, ставки, волатильности.
Как это обычно работает?
Либо вы пересчитываете всё с нуля каждый раз (дорого, медленно, особенно если инструментов много)
Либо вы строите сложные триггеры и кэши, которые потом отлаживаете месяцами
В обоих случаях вы либо жертвуете скоростью, либо тратите уйму времени разработчиков.
Как мы пытались решить эту проблемуМы начали с простого вопроса: «А что, если пересчитывать только то, что реально изменилось?»
Звучит очевидно, но реализация оказалась нетривиальной. Когда у вас многослойная модель (например: цены → греки по инструментам → агрегация по секторам → портфельные метрики → общебанковские лимиты), одно изменение в цене может затронуть десятки тысяч зависимых значений.
О чём это.
Все нормальные расчёты (опционы, VaR, греки) либо дёргают неуправляемый C++ код, либо жрут память и GC, либо просто медленные.
Я написал свою библиотеку — QuantCore.Net. Это in-process .NET 8 ядро для финансовых вычислений. Без REST, без Python-прослоек, без боли.
Под капотом: SIMD, ArrayPool, детерминированный RNG, батч-режимы. Всё, чтобы считать сотни тысяч инструментов за миллисекунды и не ловить StopTheWorld в 3 часа ночи.
Вы пишете своих роботов на C#.
— Хотите быстро считать справедливую цену опционов или греки в реальном времени.
— Надоело дёргать Excel или самопальные функции из интернета, которые плавают на 5%.
Вы управляете портфелем и считаете риск.
— Historical VaR / ES (CVaR) за 0.4 мс на 100 000 наблюдений.
— Ни одной аллокации памяти — GC молчит.
Вы делаете factor model PnL.
— SIMD-скалярка экспозиций и факторных доходностей.
— 100 000 позиций × 32 фактора = 2.8 мс.


| risk_level | NUMBER | Уровень риска клиента. Возможные значения:
|
Введение
В трейдинге каждая секунда может иметь значение. Но стандартные инструменты часто не позволяют работать с данными высокого разрешения. В этой статье я поделюсь опытом создания кастомного решения для TSLab, которое сохраняет 1-секундные свечи с расширенными метриками (открытый интерес, количество продавцов/покупателей, лента сделок, лучшие бид/аск и др.). Покажу, как забрать эти данные из TSLab, передать их в Python для ML – анализа и т.д.
Задача
Трейдеры часто сталкиваются с ограничениями стандартных платформ: нельзя сохранить сверхмалые таймфреймы, добавить кастомные метрики или быстро переложить данные в Python для ML.
**Цель проекта** — создать инструмент, который:
— Сохраняет 1-секундные свечи с расширенными данными (открытый интерес, лента сделок…).
— Автоматически генерирует CSV-файлы для анализа.
— Позволяет строить интерактивные графики и обучать ML-модели.
**Главный герой** — ИИ-ассистент DeepSeek, который ускорил разработку в несколько раз и решил ключевые технические проблемы.
Некоторое время назад закончил разработку подключение к Московской Бирже по протоколам FIX и FIX/FAST для терминала OsEngine. Сами исходники находятся здесь. А это первая статья из серии про FixFast, в которой будем разбираться с тем что это такое.
Начнём с того, что нужно делать в первую очередь. С поисков в Гугле и Яндексе какой-то информации. И как у меня это проходило.
