All checks were successful
deploy / deploy (push) Successful in 32s
Proof: Establishes the approved next implementation turn around inventory-aware strategy decisions, threshold truth, and outcome-confidence semantics. Assumptions: Backlog item I015 is the right next scope after quote outcome attribution because the current live gap is strategy side selection and inventory policy, not another dashboard-only surface. Still fake: Planning does not implement inventory-skew strategy controls, venue-native fills, fee/cost attribution, or realized net PnL.
121 lines
7 KiB
Markdown
121 lines
7 KiB
Markdown
# Implementation Proof: settlement-aware strategy and inventory-skew controls
|
|
|
|
Status: open
|
|
Opened: 2026-04-10
|
|
|
|
## Target outcome
|
|
The strategy should stop behaving like a one-dimensional edge filter and start making inventory-aware choices that are explainable from durable data.
|
|
|
|
For each live BTC/EURe quote the operator must be able to answer:
|
|
- whether the quote was attractive on raw reference edge
|
|
- whether trading that side improves or worsens the current inventory skew
|
|
- whether the threshold used for that quote was the base threshold or an inventory-adjusted threshold
|
|
- whether recent settlement outcomes support or weaken confidence in submitting more quotes on that side
|
|
- why the strategy withheld, approved, or size-limited the quote
|
|
|
|
## Why this is the next architecture test
|
|
The previous turn made submission, not-fill, and settlement-attributed completion visible. It proved that the repo can now distinguish accepted quote responses from actual asset movement.
|
|
|
|
The next false path is strategy behavior that ignores that truth:
|
|
- a quote may clear the raw 1.49% edge but move inventory further away from the preferred BTC/EURe mix
|
|
- the opposite side may be blocked by inventory, stale price, or poor recent fill evidence
|
|
- portfolio-vs-hold movement is still not realized trade PnL and must not be used as if it were
|
|
- simply lowering the edge threshold further would be risk widening without proof
|
|
|
|
This turn is successful only if strategy decisions become reproducible from explicit edge, inventory-skew, and settlement-outcome inputs.
|
|
|
|
## Scope
|
|
- [I015] Benchmark-aware strategy thresholds and inventory-skewed fees: compare live inventory against deposit-time hold and target BTC/EURe mix before quoting away preferred inventory.
|
|
- Active venue and pair only: NEAR Intents BTC/EURe.
|
|
- Preserve the approved base edge threshold of `1.49%` unless the user explicitly approves a different value.
|
|
- Preserve the current max notional unless the user explicitly approves a different value.
|
|
- Use existing durable portfolio metrics, inventory snapshots, reference prices, decisions, commands, execution results, and quote outcome attributions.
|
|
|
|
## Assumptions
|
|
- The current BTC/EURe inventory mix has a preferred target or policy that can be encoded with repo-owned config.
|
|
- The first inventory policy can be simple and explicit, for example target BTC value percentage plus a tolerance band.
|
|
- Quote outcome records are good enough to compute side-level recent submission, not-fill, and completion counts, while remaining honest about heuristic settlement attribution.
|
|
- Benchmark comparisons can guide strategy but are not realized PnL.
|
|
|
|
## Turn-shaping rules
|
|
- Do not lower `STRATEGY_GROSS_THRESHOLD_PCT` below `1.49` in this turn without explicit user approval.
|
|
- Do not increase `STRATEGY_MAX_NOTIONAL_EURE` in this turn without explicit user approval.
|
|
- Do not add live funds or move funds.
|
|
- Do not claim inventory-skew benefit as realized profit.
|
|
- Do not hide a base-threshold pass behind a generic rejection; expose the decisive strategy reason.
|
|
- If recent outcome confidence is used, show the window and counts behind it.
|
|
|
|
## Non-goals
|
|
- No new venue integration.
|
|
- No new treasury fee ledger.
|
|
- No generalized optimizer or ML strategy.
|
|
- No broad backtesting workbench.
|
|
- No tax, accounting, or realized net PnL claims.
|
|
- No automatic funding, withdrawal, or treasury rebalancing.
|
|
|
|
## Required operator behavior
|
|
|
|
### Strategy threshold truth
|
|
Every recent strategy decision must expose:
|
|
- base threshold
|
|
- effective threshold
|
|
- inventory adjustment, if any
|
|
- outcome-confidence adjustment, if any
|
|
- final decisive reason
|
|
|
|
### Inventory-skew truth
|
|
For every quote decision the dashboard must show:
|
|
- current BTC and EURe spendable value
|
|
- target BTC/EURe value mix or configured policy
|
|
- current skew versus target
|
|
- whether the proposed trade moves inventory toward or away from target
|
|
|
|
### Outcome-confidence truth
|
|
If recent quote outcomes influence approval or threshold:
|
|
- submitted-only rows must not count as completed
|
|
- not-filled rows must be separate from strategy rejections and executor blocks
|
|
- heuristic completed rows must be counted as heuristic, not venue-terminal fills
|
|
|
|
## Semantic invariants
|
|
The implementation and tests must enforce at least:
|
|
- `submitted` outcome evidence cannot improve fill-confidence as if completed
|
|
- inventory-skew improvement is not realized PnL
|
|
- base edge and effective edge must both be visible when they differ
|
|
- insufficient inventory remains distinct from inventory-skew rejection
|
|
- strategy rejection remains distinct from executor blocking
|
|
- no threshold lower than `1.49%` is deployed without explicit approval
|
|
|
|
## Definition of done
|
|
- Strategy decisions include explicit inventory-skew inputs and effective threshold fields.
|
|
- The strategy can approve, reject, or size-limit a quote based on inventory direction with a decisive reason.
|
|
- Dashboard lifecycle or strategy rows show raw edge, effective threshold, skew direction, and decisive reason.
|
|
- Recent outcome counts are available to the strategy or dashboard without treating submission-only rows as fills.
|
|
- Regression tests cover inventory-skew direction, threshold adjustment, and the negative semantic invariants.
|
|
- The result is deployed through the repo workflow and validated against live service state and dashboard bootstrap data.
|
|
|
|
## Validation evidence required
|
|
- Automated tests for strategy decisions that pass raw edge but fail inventory-skew policy.
|
|
- Automated tests for strategy decisions where inventory improvement lowers friction or preserves the base threshold without lowering below `1.49%`.
|
|
- Automated tests proving submitted-only outcomes do not improve completion confidence.
|
|
- Live dashboard or `/state` evidence showing strategy decisions with base threshold, effective threshold, inventory skew, and decisive reason.
|
|
- Live evidence that strategy and executor remain armed after deployment if they were armed before rollout.
|
|
|
|
## Failure conditions
|
|
- The strategy still emits only `actionable` or `insufficient_inventory` without inventory-policy evidence.
|
|
- The dashboard cannot explain why a raw-edge quote was withheld by inventory policy.
|
|
- A submitted quote is treated as a completed or successful trade in any strategy confidence calculation.
|
|
- Benchmark or inventory-skew deltas are labeled as realized PnL.
|
|
- The deployed threshold is lower than `1.49%` without explicit user approval.
|
|
|
|
## Current real before this turn
|
|
- Live quote, decision, command, submission result, and quote outcome attribution records are durable.
|
|
- The dashboard separates submitted, rejected, blocked, not-filled, and completed rows.
|
|
- One historical quote is linked to a heuristic settled inventory delta.
|
|
- Recent submitted-only rows are visible without claiming asset movement.
|
|
- Portfolio-vs-simple-hold comparison is cash-flow adjusted and explicitly not realized PnL.
|
|
|
|
## Deliberately not built by this proof
|
|
- Full fee and cost attribution.
|
|
- Venue-native terminal fill ingestion.
|
|
- Automatic inventory rebalancing outside quote-response execution.
|
|
- Broader research/backtest UI.
|