44 lines
1.7 KiB
Markdown
44 lines
1.7 KiB
Markdown
# Analysis Request: Dynamic Timeout for Shadow Orders
|
|
|
|
**Status:** Completed
|
|
**Date:** 2025-12-20
|
|
**Priority:** Medium
|
|
|
|
---
|
|
|
|
## 1. User Description & Query
|
|
**Goal:** Optimize the Shadow Order simulation by making the "Time to Live" (timeout) dynamic based on market volatility.
|
|
**Logic:**
|
|
* **Low Volatility (Slow Market):** Orders sit on the book longer. Give the shadow order more time (e.g., 60s) to fill.
|
|
* **High Volatility (Fast Market):** Price moves quickly. If it doesn't fill instantly, it likely ran away. Timeout should be short (e.g., 10s) to fail fast.
|
|
|
|
## 2. Agent Summary
|
|
* **Objective:** Implement a dynamic timeout calculation during shadow order creation.
|
|
* **Formula:** Inverse relationship with volatility.
|
|
|
|
## 3. Main Analysis
|
|
|
|
### 3.1 Volatility Scaling
|
|
We already calculate `vol_pct` (5-min rolling StdDev).
|
|
* **Base Vol:** `0.05%` (0.0005).
|
|
* **Base Timeout:** 30 seconds.
|
|
|
|
**Formula:**
|
|
`timeout = Base_Timeout * (Base_Vol / Current_Vol)`
|
|
|
|
**Examples:**
|
|
* **Low Vol (0.025%):** `30 * (0.05 / 0.025) = 60s` (Max cap).
|
|
* **Normal Vol (0.05%):** `30 * (0.05 / 0.05) = 30s`.
|
|
* **High Vol (0.15%):** `30 * (0.05 / 0.15) = 10s`.
|
|
|
|
### 3.2 Constraints
|
|
* **Min Timeout:** 10s (Give at least some chance even in crazy markets).
|
|
* **Max Timeout:** 60s (Don't track stale orders forever).
|
|
|
|
## 4. Conclusion
|
|
**Recommendation:** Implement this dynamic timeout alongside the shadow order logic. It makes the "Success/Fail" metric much more realistic for a Maker strategy in different regimes.
|
|
|
|
## 5. Implementation Plan
|
|
- [ ] **Step 1:** Add `get_dynamic_timeout(vol_pct)` helper method.
|
|
- [ ] **Step 2:** Use this timeout when creating the shadow order entry.
|