Phase 1: Add MAE/MFE tracking and analytics schema

- Added 20+ analytics fields to Trade model (MAE/MFE, fill tracking, timing, market context, slippage)
- Implemented real-time MAE/MFE tracking in Position Manager (updates every 5s)
- Enhanced database schema with comprehensive trade analytics
- Updated all API endpoints to initialize MAE/MFE fields
- Modified updateTradeState() to persist MAE/MFE in configSnapshot

Database changes:
- maxFavorableExcursion/maxAdverseExcursion track best/worst profit %
- maxFavorablePrice/maxAdversePrice track exact price levels
- Fill tracking: tp1Filled, tp2Filled, softSlFilled, hardSlFilled
- Timing metrics: timeToTp1, timeToTp2, timeToSl
- Market context: atrAtEntry, adxAtEntry, volumeAtEntry, fundingRateAtEntry, basisAtEntry
- Slippage tracking: expectedEntryPrice, entrySlippagePct, expectedExitPrice, exitSlippagePct

Position Manager changes:
- Track MAE/MFE on every price check (2s interval)
- Throttled database updates (5s interval) via updateTradeMetrics()
- Persist MAE/MFE in trade state snapshots for recovery

Next: Phase 2 (market context capture) or Phase 3 (analytics API)
This commit is contained in:
mindesbunister
2025-10-29 20:34:03 +01:00
parent d4d2883af6
commit 65e6a8efed
7 changed files with 136 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
-- AlterTable
ALTER TABLE "Trade" ADD COLUMN "adxAtEntry" DOUBLE PRECISION,
ADD COLUMN "atrAtEntry" DOUBLE PRECISION,
ADD COLUMN "basisAtEntry" DOUBLE PRECISION,
ADD COLUMN "entrySlippagePct" DOUBLE PRECISION,
ADD COLUMN "exitSlippagePct" DOUBLE PRECISION,
ADD COLUMN "expectedEntryPrice" DOUBLE PRECISION,
ADD COLUMN "expectedExitPrice" DOUBLE PRECISION,
ADD COLUMN "fundingRateAtEntry" DOUBLE PRECISION,
ADD COLUMN "hardSlFilled" BOOLEAN NOT NULL DEFAULT false,
ADD COLUMN "maxAdverseExcursion" DOUBLE PRECISION,
ADD COLUMN "maxAdversePrice" DOUBLE PRECISION,
ADD COLUMN "maxFavorableExcursion" DOUBLE PRECISION,
ADD COLUMN "maxFavorablePrice" DOUBLE PRECISION,
ADD COLUMN "slFillPrice" DOUBLE PRECISION,
ADD COLUMN "softSlFilled" BOOLEAN NOT NULL DEFAULT false,
ADD COLUMN "timeToSl" INTEGER,
ADD COLUMN "timeToTp1" INTEGER,
ADD COLUMN "timeToTp2" INTEGER,
ADD COLUMN "tp1FillPrice" DOUBLE PRECISION,
ADD COLUMN "tp1Filled" BOOLEAN NOT NULL DEFAULT false,
ADD COLUMN "tp2FillPrice" DOUBLE PRECISION,
ADD COLUMN "tp2Filled" BOOLEAN NOT NULL DEFAULT false,
ADD COLUMN "volumeAtEntry" DOUBLE PRECISION;