Комментарии 8
А ваши разработки нельзя использовать в игре foodtrack bench?
Хотелось бы видеть какие-то обоснования того , что при указанных входных данных, решаемая задача вообще имеет хоть какое-то осмысленное решение. В математике так часто бывает. Проблема есть. Методы решения есть. А решения нет. Принципиально.
PS: Вот Вы пишете в комментах - " Проект заточен под финансовые временные ряды ". Под временные ряды понятно. Это довольно абстрактное понятие. А при чем здесь финансы? Где это можно увидеть в Ваших формулах?
Спасибо за вопрос по существу.
По первому пункту: строгого доказательства существования решения у меня нет, и я на него не претендую. Два положительных held-out квартала это эмпирический сигнал, а не теорема. Именно поэтому раздел "Ограничения" написан как принципиальная часть статьи, а не как формальная оговорка.
По второму: финансовая специфика здесь не в самой алгебре, а в интерпретации переменных и в постановке задачи. p - торговая позиция (long/short), r - рыночная доходность, вычисленная из реальных цен, cost - комиссия и проскальзывание. Objective - коэффициент Шарпа. Именно это и делает абстрактный time-series framework торговой постановкой.
Вы во входных данных берёте стандартный временной ряд плюс объёмы, и как они по вашему они должны повлиять на будущие данные в стохастическом процессе? У вас есть канал для связи, а то вы призываете к обсуждению, а где?
Спасибо за хороший вопрос.
По OHLCV, я не исхожу из того, что эти данные детерминированно определяют будущее. Гипотеза слабее: в них могут существовать локальные статистические зависимости и режимные асимметрии, которые проверяются только эмпирически. Объёмы здесь не "магический предиктор", а прокси ликвидности и интенсивности движения. Два положительных held-out квартала это сигнал к дальнейшей проверке, не закрытый вопрос.
Для технического обсуждения - GitHub Issues: github.com/YuriyKolesnikov/diffquant
Как успехи с проектом?
Спасибо! Проект развивается нормально.
Главное направление сейчас: переход от single-asset версии к управлению портфелем. Идея остаётся той же: модель обучается не на прокси-цели, а через дифференцируемый торговый симулятор напрямую под торговую метрику.
В первой версии модель управляла одной позицией:
где . Отрицательное значение означает short, положительное значение означает long, значение около нуля означает отсутствие активной позиции.
В портфельной версии модель выдаёт уже не одну позицию, а сырой сигнал по каждому активу:
Здесь ещё не финальный вес портфеля. Это score по активу
: знак отвечает за направление, модуль отвечает за силу сигнала.
Дальше эти сигналы превращаются в относительные long/short веса портфеля. Например, через рыночно-нейтральную проекцию:
где это число активов,
это заданный общий gross exposure портфеля, а
это финальный вес актива
.
Например, если , то сумма абсолютных весов портфеля будет около 100%.
После такой нормализации положительные веса становятся long-позициями, отрицательные веса становятся short-позициями, а общий размер портфеля остаётся контролируемым.
Портфельная доходность считается уже по всей корзине активов:
где это доходность актива
на шаге
.
Дальше учитываются комиссии, проскальзывание и стоимость ребалансировки:
То есть не исчезает, он просто перестаёт быть финальной позицией. В single-asset версии он сразу задавал позицию, а в портфельной версии он даёт сырой сигнал по каждому активу. Финальные веса появляются уже после портфельной нормализации.
Если интересно, такую версию можно реализовать довольно прямо: заменить single-asset head на multi-asset score head, добавить слой нормализации весов и считать уже portfolio-level PnL / Sharpe с учётом комиссий, проскальзывания и оборота.

DiffQuant: прямая оптимизация коэффициента Шарпа через дифференцируемый торговый симулятор