Тема
Restoration Backlog — архивные стратегии и план их возвращения
Единственный источник истины про стратегии, не входящие в активный scope. Описание архивной стратегии как действующей в других active SSOT документах (
docs/target/,docs/current/,docs/strategies/,docs/integrations/,docs/operations/,docs/architecture/,docs/specs/,docs/INDEX.md) = drift и требует устранения; явно помеченная история и ссылка на этот backlog допустимы. Активная стратегия одна —directional/Harvester (см.docs/strategies/directional-harvester.md).
Контекст архивации (ADR-024 ACCEPTED 2026-05-13)
ADR-024 (directional-first architecture) вывел из активного scope все стратегии кроме directional/Harvester. Решение: core stability приоритетнее multi-strategy. Все остальные алгоритмы помечены ARCHIVED-BY-024 (имели реализацию) или DEFERRED-BY-024 (были в design-фазе).
Ключевые git-рефы пивота:
60f7c45— ADR-024 + directional-first pivot.619f7f0— F4: archive non-directional strategies + runtime gate.b759c71— F4.5: trait shells + git rm strategy files.da8cb63— F4.5: reduce dispatcher to Directional only.
Условия restoration (общий контракт)
Для возврата любой из стратегий должны быть выполнены два условия:
- ADR-025 ACCEPTED — extension points API (
target/extension-points.md, PROPOSED 2026-05-13) определён и стабилизирован на хотя бы одной живой стратегии (directional/Harvester). - pm-engine SDK (openspec
unify-orders-positions-signals-events) готов как hosting platform: единый интерфейс ордеров / позиций / сигналов / событий, через который layer-стратегия получает доступ к рынку без копирования инфраструктуры pm-bot.
Только после этого имеет смысл открывать openspec change restore-<strategy>-as-layer/ для конкретной стратегии.
Порядок проработки (приоритет)
После стабилизации directional/Harvester и live-запуска backlog прорабатывается в таком порядке:
merge-arb(#merge-arb) — первая на восстановление после Harvester. Накопление YES+NO на 50/50 рынках + on-chainmergePositions/convertPositions. Детальный план восстановления:_plans/147-restore-merge-arb-as-layer.md.spread-trading(#spread-trading) — новая spread-capture стратегия (НЕ архивная). Нужен PRD/FSD до реализации.
Оба пункта работаются после Harvester, через extension API (ADR-025) поверх стабильного ядра — не как параллельные кодовые ветки.
Новые стратегии (backlog, не архивные)
Стратегии, которых НЕ было в архиве ADR-024 — новые идеи, ждущие спецификации. В отличие от секции «Архивные стратегии» ниже, здесь нет git-рефа для восстановления: это greenfield, требующий PRD/FSD перед любым кодом (правило [[feedback_docs_before_code]]).
spread-trading
Статус: PLANNED — нужен PRD/FSD. Тип: spread-capture (greenfield).
Торговля на спреде — захват bid-ask спреда как отдельная стратегия (market-making-подобная), отличная от merge-arb (та — accumulation+merge на 50/50 рынках). Конкретный механизм (one-leg vs two-leg, passive maker vs active, целевой сегмент рынков, источник edge) ещё не определён — зафиксировано только намерение оператора (проработать после Harvester).
Prior art в этом backlog (использовать как отправную точку при спецификации, НЕ копировать вслепую): maker — классический двусторонний quote spread-capture; binary-arb — jitter-capture спреда на бинарных рынках; single-token-mm — cycling-inventory MM.
До реализации требуется:
- PRD: целевой сегмент рынков, определение edge, риск-модель, ожидаемый fill-rate. Без устойчивого источника edge (см. урок
maker— классический spread-capture не давал +PnL на Polymarket из-за широких спредов / низкой ликвидности) стратегия не имеет смысла. - FSD: механизм котирования, inventory-управление, interaction с RISK-LIMITS, маппинг на extension API (ADR-025).
- ADR-025 ACCEPTED (как и для всех layer-стратегий).
Связанные: [[project_strategy_economics_framework]] (единственный якорь — устойчивый q>p), ADR-025 (extension points).
Архивные стратегии
binary-arb
Статус: DEFERRED-BY-024. Тип: algorithm primitive (ADR-018 / ADR-019).
Работала на бинарных рынках (YES/NO одного события), где сумма цен YES + NO стремится к $1. Ловила краткосрочные расхождения (jitter) этой суммы: YES_ask + NO_ask < $1 — купить обе ноги (гарантированный payout $1), YES_bid + NO_bid > $1 — продать обе при наличии inventory.
Версии:
- v1/v2 — базовый arbitrage с simultaneous two-leg execution.
- v3 (ADR-019, PROPOSED) — jitter-capture: квантование микро-движений спреда + latency-aware fill triggering, optimized под binary рынки с высокой частотой апдейтов orderbook.
Почему архивирована: v3 на момент ADR-024 находился в PROPOSED без живого production-теста; v1/v2 жили только до 3-algorithm-consolidation refactor (e93d083).
Restoration требует:
- ADR-025 ACCEPTED + первая стратегия-кандидат валидировала extension API.
- pm-engine SDK предоставляет two-leg atomic ордерную семантику.
- Блокер: jitter-capture v3 требует low-latency signal pipeline; нужно пере-проверить применимость к unified
OrderbookStore(ADR-022). - Тесты: исторические v1/v2 удалены вместе со стратегией (
b759c71); потребуется новая spec-driven test suite на основеdocs/strategies/binary-arb-prd.md(восстановить из git history).
Git refs: e93d083 (v3 design snapshot), 60f7c45 (DEFERRED), 619f7f0 / b759c71 / da8cb63 (удаление). git log --all -S "BinaryArbStrategy" — symbol-level история.
Связанные документы (на момент архивации):
- ADR-018 (PAUSED):
docs/adr/adr-018-three-algorithms-consolidation.md - ADR-019 (PROPOSED):
docs/adr/adr-019-binary-arb-jitter-capture.md docs/strategies/binary-arb.md(git refe93d083)docs/strategies/binary-arb-prd.md(git refe93d083)- openspec/changes/restore-binary-arb-as-layer/ — future change, ещё не создан.
bucket-arb (multi-arb implementation)
Статус: ARCHIVED-BY-024. Тип: algorithm primitive (ADR-018).
Реализация «multi-arb» алгоритма для рынков с N взаимоисключающими исходами (бакеты температуры, диапазоны цен, etc.), где сумма цен по всем outcome стремится к $1. Сканировала бакеты, идентифицировала недооценённые комбинации (sum N-1 ног < $1 ⇒ оставшийся бакет переоценён) и выставляла maker/taker ордера для захвата спреда. Поддерживала integration с pm-weather (сигналы погодных рынков) и работала как основная production-стратегия в нескольких sprints до пивота ADR-024.
В таксономии ADR-018 — конкретная реализация generic «multi-arb» алгоритма (см. multi-arb-prd.md).
Почему архивирована: зрелая реализация и production-история, но multi-leg coordination + weather pipeline признаны источником operational complexity, несовместимой с core stability.
Restoration требует:
- ADR-025 ACCEPTED + extension API валидирован.
- pm-engine SDK с N-leg coordination и cross-market sync (бакеты одного события).
- Блокер: pm-weather как signal source был отдельным crate (архивирован вместе со стратегией); статус weather integration требует пере-оценки.
- Тесты: 14 ST-0* stress tests (
f6e5fa9) — фундамент будущей spec-driven suite, доступны в git history. Edge cases: partial fill одной ноги, неравномерный orderbook depth по бакетам.
Git refs: 02a6fb0 (TD-2/3/4 bug fixes), f6e5fa9 (14 ST-0* stress tests), 619f7f0 (архивация), b759c71 (удаление). git log --all -S "BucketArbStrategy".
Связанные документы:
- ADR-018 (PAUSED):
docs/adr/adr-018-three-algorithms-consolidation.md docs/strategies/bucket-arbitrage.md(git refe93d083)docs/strategies/multi-arb-prd.md(git refe93d083)- План:
_plans/148. - openspec/changes/restore-bucket-arb-as-layer/ — future change.
maker
Статус: ARCHIVED-BY-024. Тип: strategy (классический maker).
Двустороннее котирование (passive limit orders на bid и ask) на одиночном outcome токене с целью захвата bid-ask спреда. Без rebate-оптимизации, без paired-leg координации: inventory-neutral target, rebalancing через постоянное обновление котировок при движении mid-price.
Не путать с maker-rebate (one-leg оптимизация под rebate program) и paired-maker-rebate (TD-7 двунога YES+NO с on-chain merge).
Почему архивирована: классический maker без rebate-edge не давал устойчивого PnL на Polymarket из-за низкой ликвидности и широких спредов; ресурсы перенаправлены на directional/Harvester.
Restoration требует:
- ADR-025 ACCEPTED.
- pm-engine SDK с quote-management primitives (cancel/replace, throttle, post-only).
- Блокер: бизнес-обоснование. Без rebate edge классический maker ранее не показывал положительный PnL — restoration имеет смысл только если изменилась market structure или появился новый источник edge.
- Тесты: значимой production-test suite не было — потребуется spec-driven suite с нуля.
Git refs: f2ab5f4 (последний rewrite docs), 619f7f0 (архивация), b759c71 (удаление). git log --all -S "MakerStrategy".
Связанные документы:
docs/strategies/maker.md(git reff2ab5f4/e93d083)- План:
_plans/145. - openspec/changes/restore-maker-as-layer/ — future change.
maker-rebate (one-leg)
Статус: ARCHIVED-BY-024. Тип: strategy (one-leg rebate).
Passive maker quoting на одиночном outcome токене с явной оптимизацией под Polymarket maker rebate program. Edge не из захвата спреда, а из суммы rebate за добавление ликвидности.
Не путать с paired-вариантом (paired-maker-rebate).
Почему архивирована: ADR-024 + rebate program условия менялись несколько раз, edge нестабильный.
Restoration требует:
- ADR-025 ACCEPTED.
- pm-engine SDK с post-only / quote-update primitives.
- Блокер: актуальный rebate edge нужно пере-оценить перед restoration — historical параметры могут быть устаревшими.
- Тесты: нет значимой production suite вне общего spec-driven audit (
8242fcb).
Git refs: 4185085 (разделение one-leg / paired), 619f7f0, b759c71. git log --all -S "MakerRebateStrategy".
Связанные документы:
docs/strategies/maker-rebate.md(git refe93d083) — one-leg часть.- ADR-011 (ARCHIVED-BY-024) — описывает paired-вариант, не one-leg.
- План:
_plans/146. - openspec/changes/restore-maker-rebate-as-layer/ — future change.
paired-maker-rebate (TD-7)
Статус: ARCHIVED-BY-024. Тип: strategy (paired YES+NO + merge).
Двусторонняя maker-rebate стратегия: одновременно котировала YES и NO ноги одного бинарного рынка как passive maker'ы для maximization rebate выплат. После накопления парных позиций запускался on-chain mergePositions на CTF / NegRiskAdapter для конвертации в collateral ($1 за каждый merged pair), реализуя rebate без directional inventory risk.
Ключевая особенность: paired-emission state machine координировала fill'ы по двум ногам с учётом partial-fill сценариев.
Почему архивирована: ADR-011 помечена ARCHIVED-BY-024. Требует on-chain merge wiring — значимая operational surface. TD-7 sprint завершён (af105b3), но в active production не переведена до пивота.
Restoration требует:
- ADR-025 ACCEPTED.
- pm-engine SDK с two-leg coordination primitives и on-chain merge hook.
- Блокер: NegRiskAdapter.mergePositions(bytes32, uint256) wiring через unified
OrderClientport — neg-risk рынки используют другой merge path, чем standard CTF (memoryproject_neg_risk_merge_path). - Блокер: V2 contracts migration (memory
project_v2_addresses/project_v2_live_done) изменила адреса exchange — state machine может требовать ревизии под V2. - Тесты: state machine покрыт unit-тестами (
32cc2a6); runbookdocs/history/paired-maker-rebate-runbook-2026-05-03.md.
Git refs: 4185085 (ADR), 32cc2a6 (state machine), af105b3 (sprint closure), 619f7f0 / b759c71 (архивация). git log --all -S "PairedMakerRebate".
Связанные документы:
- ADR-011 (ARCHIVED-BY-024):
docs/adr/adr-011-paired-maker-rebate-emission.md docs/history/paired-maker-rebate-runbook-2026-05-03.mddocs/history/sprints/td7-paired-maker-rebate.md- openspec/changes/restore-paired-maker-rebate-as-layer/ — future change.
merge-arb
Статус: ARCHIVED-BY-024. Тип: strategy (50/50 accumulation + merge). Приоритет: №1 в backlog — первая на восстановление после Harvester live-launch (решение оператора). План: _plans/147.
Accumulation maker на бинарных рынках с ценами около 50/50 (близких к paired-equilibrium). Накапливала позиции по обеим ногам (YES и NO) через passive maker quoting; при достижении парных балансов выполняла on-chain mergePositions, конвертируя пары в $1 collateral. Edge — сумма maker rebate + захват накопленного спреда при merge ниже паритета.
Конструктивно близка к paired-maker-rebate, но позиционировалась как arbitrage-стратегия (target — 50/50 рынки), а не rebate-стратегия с произвольными ценами.
Почему архивирована: ADR-024. Имела рабочую реализацию (ae28f9f, d87bb38) и тесты (255de61 — spec-driven FSM + replay e2e), но сложность on-chain merge orchestration не вписалась в core stability.
Restoration требует:
- ADR-025 ACCEPTED.
- pm-engine SDK с two-leg coordination и on-chain merge primitives.
- Блокер: тот же NegRiskAdapter / CTF merge path, что у paired-maker-rebate (memory
project_neg_risk_merge_path); код merge wiring может быть переиспользован. - Блокер: рыночный сегмент 50/50 рынков на Polymarket узкий — restoration требует свежей оценки availability и expected fill-rate.
- Тесты: spec-driven FSM + replay e2e suite (
255de61) — фундамент для восстановления test coverage.
Git refs: ADR-003, ae28f9f (основная реализация), d87bb38 (V2 update), 255de61 (test suite), 619f7f0 / b759c71 (архивация).
Связанные документы:
- ADR-003 (ARCHIVED-BY-024):
docs/adr/merge-arb-strategy.md docs/strategies/merge-arb.md(git refd87bb38/e93d083)- openspec/changes/restore-merge-arb-as-layer/ — future change.
single-token-mm
Статус: DEFERRED-BY-024. Тип: algorithm primitive (cycling MM, ADR-021).
Cycling-inventory market-making на одиночном outcome токене. В отличие от классического maker'а, явно моделировала inventory cycle (накопление → разгрузка → разворот) и включала cross-event meta-layer hook для координации с другими стратегиями / событиями (например, hedging позиции через коррелированный рынок).
В таксономии ADR-021 — 4-й базовый алгоритм поверх 3-algorithm консолидации ADR-018 (binary-arb, multi-arb, single-token-mm).
Почему архивирована: ADR-021 DEFERRED. ADR-024 подтвердил deferral: алгоритм находился в design-фазе (PROPOSED) без живой реализации, и cross-event coordination — нетривиальная архитектурная зависимость, несовместимая с core stability.
Restoration требует:
- ADR-025 ACCEPTED + одна layer-стратегия в production.
- pm-engine SDK с inventory tracking primitives и cross-event signal bus (для meta-layer hook).
- Блокер: cross-event meta-layer hook требует семантики «сигнал из стратегии A влияет на стратегию B» — этого primitive нет ни в текущем pm-bot, ни в proposed ADR-025; нужно явно расширить scope ADR-025 или принять отдельный ADR.
- Тесты: design-only стратегия, тестовой suite не существовало — потребуется spec-driven suite с нуля.
Git refs: e63486b (design snapshot), 60f7c45 (DEFERRED подтверждён), 794f538 (seed restoration backlog item). git log --all -S "SingleTokenMm".
Связанные документы:
- ADR-021 (DEFERRED):
docs/adr/adr-021-single-token-mm-algorithm.md docs/strategies/single-token-mm-prd.md(git refe63486b)docs/strategies/single-token-mm.md(git refe63486b)- План:
_plans/149. - openspec/changes/restore-single-token-mm-as-layer/ — future change.
paired-merge
Статус: ARCHIVED 2026-09 отдельным решением оператора 2026-09-07, не волной ADR-024/F4: код удалён из сборки движка, знание — в prose-плане. Тип: strategy (парный YES+NO market-making с удержанием полного сета до resolution и единым redeem). Приоритет: не назначен — наброски на будущее, не факт, что пригодятся в текущем виде. План: _plans/150.
Единственный боевой прогон — инстанс spread-mm-v1, 22–23.07.2026: 49 BUY, все 49 отклонены биржей, позиций не открыто. Второй strategy_type движок больше не принимает: строка config.db с типом paired-merge остаётся архивной (read-only в дашборде). Старт движка, pm-cli strategy add и операции POST/PUT/enable API дашборда отказывают; GET/history/disable/delete сохранены.
Связанные документы:
- Код на момент архивации:
git show 210f52d7:crates/pm-engine/src/strategies/paired_merge/…(полный перечень путей — в плане_plans/150). - Первоисточник постановки:
docs/history/openspec/changes/2026-08-31-spread-mm-strategy/. - Калькулятор доходности (на момент архивации):
git show 210f52d7:docs/strategies/spread-mm-yield-calculator.md.
Общая taxonomy (4 base algorithms framework, PAUSED)
До ADR-024 проект двигался к модели «3 → 4 базовых алгоритма как строительные блоки»:
- ADR-018 (PAUSED) — консолидация в 3 алгоритма:
binary-arb,multi-arb(bucket-arb implementation), и изначальноsingle-token-mm. - ADR-021 (DEFERRED) — расширение до 4-го алгоритма
single-token-mmкак cycling-inventory MM + cross-event meta-layer hook.
Идея: остальные «стратегии» (maker, maker-rebate, paired-maker-rebate, merge-arb, directional) рассматривались как профили / композиции этих primitives, а не как параллельные кодовые ветки.
Авторитетный snapshot taxonomy: docs/strategies/_3-algorithms-taxonomy.md (статус PAUSED — сохранён как restoration target framework, не как живая модель проекта).
ADR-024 принял противоположное решение и зафиксировал текущую модель как «directional/Harvester only + extension API»; taxonomy выше сохранена исключительно как restoration target.