Re-Review: Rework Volatility Bot: small-bump strategy

review-1839-2026-07-09-v2 Review

review ready

Verdict: READY

Re-review after refinement. All 3 issues from review-1839-2026-07-09 are resolved: issue body restructured to match template-issue-feature, project-bots project page created with user-stories section, and arch-bots architecture note created.

Template Completeness

Checked against template-issue-feature (Type = Feature):
  • [x] ### Type — "Feature"
  • [x] ### Lineage — "Standalone — identified during initial bot deployment when Volatility Bot produced 0 fires due to flawed entry logic."
  • [x] ### Repoldraney/bots
  • [x] ### User Story — "As a bot operator / I want the Volatility Bot to independently find and trade... / So that I can profit from normal game momentum swings..."
  • [x] ### Context — Detailed explanation of 4 current problems plus reworked strategy with entry/exit conditions
  • [x] ### File Targets — Clear "modify" (1 file) and "do NOT touch" (3 files) sections
  • [x] ### Feature Flag — "None — this is a rework of an existing bot service."
  • [x] ### Acceptance Criteria — 7 checkbox items
  • [x] ### Test Expectations — 5 items including paper mode and live mode stages, with run command
  • [x] ### Constraints — Patterns to follow, IOC order requirements, constants to update
  • [x] ### Checklist — 3 items (PR, paper mode, no unrelated changes)
  • [x] ### Related — References project and ldraney/bots#2

Traceability

  • [x] story:bot-strategy label — present on board item
  • [x] story note verified — found in project-bots user-stories section: key=bot-strategy, role="Bot operator", success metric="Per-bot win rate > 55%, positive P&L after fees"
  • [x] arch:bots label — present on board item
  • [x] arch note verified — arch-bots note exists in pal-e-docs (tagged architecture+active, project=bots). Covers 7 services, key files, order pattern, data model, infrastructure.
  • [x] Forgejo issue — ldraney/bots#1, state=open

File Targets

  • [x] app/services/volatility_bot.rb — verified: exists (7.4k), contains find_hedgeable_fires (L179), TAKE_PROFIT_MULTIPLIER = 3 (L6), HEDGE_CONTRACTS = 3 (L5), scan_for_hedges (L166). All patterns match issue description.
  • [x] app/services/position_monitor.rb — verified: exists (4.3k), excludes Volatility Bot at L34. Correctly marked no-change.
  • [x] app/services/bot_engine.rb — verified: exists (8.7k), game_nearly_over? at L137. Correctly marked no-change. Issue plans to reuse this logic (inverted) inside volatility_bot.rb.
  • [x] app/controllers/dashboard_controller.rb — verified: exists (2.5k). Correctly marked no-change.

Repo Placement

OK. Forgejo issue is on ldraney/bots. All changes target app/services/volatility_bot.rb in the same repo. No cross-repo concerns.

Dependencies

Board has 2 items: #1839 (this) and #1840 (Rework Consensus Bot). Both in backlog. No dependency between them — volatility bot operates independently of consensus bot. Issue's Related section correctly documents ldraney/bots#2 as independent. No blockers identified.

Acceptance Criteria

7 criteria total. All are code-level verifiable:
  • [x] "Scans markets independently" — verify code doesn't call find_hedgeable_fires
  • [x] "Entries only early/mid-game with yes_bid >= 0.90 and no_ask <= 0.15" — verify entry conditions
  • [x] "Spread check (no_ask - no_bid <= 0.07)" — verify MAX_SPREAD logic
  • [x] "Take-profit exits on 5c bump" — verify TAKE_PROFIT_BUMP constant and exit logic
  • [x] "Stop-loss at 50% of entry" — verify STOP_LOSS_FLOOR constant and exit logic
  • [x] "Time-stop at final 20%" — verify time-stop exit path
  • [x] "Settlement logic unchanged" — verify NO-position math preserved
Previous review flagged a non-verifiable operational criterion ("5 paper fires"). This has been correctly moved to Test Expectations, and all AC are now code-level verifiable.

Blast Radius

Clean. No references to find_hedgeable_fires, TAKE_PROFIT_MULTIPLIER, or scan_for_hedges in any file outside volatility_bot.rb. consensus_bot.rb has no volatility references. position_monitor.rb already excludes Volatility Bot fires (L34). bot_engine.rb owns game_nearly_over? but issue correctly plans a new method inside volatility_bot.rb rather than modifying shared code.

Decomposition Assessment

1 file target in 1 repo. 7 acceptance criteria (exceeds the 5-AC guideline). Estimated agent work: ~5 minutes — single file rewrite with well-defined entry/exit logic. All 7 AC modify the same file and are tightly coupled (entry conditions, exit conditions, constants). Decomposition is not warranted because the work is cohesive within a single service file. No decomposition needed.

Recommendation

No action needed.