feat: Add phantom trade detection and database tracking

- Detect position size mismatches (>50% variance) after opening
- Save phantom trades to database with expectedSizeUSD, actualSizeUSD, phantomReason
- Return error from execute endpoint to prevent Position Manager tracking
- Add comprehensive documentation of phantom trade issue and solution
- Enable data collection for pattern analysis and future optimization

Fixes oracle price lag issue during volatile markets where transactions
confirm but positions don't actually open at expected size.
This commit is contained in:
mindesbunister
2025-11-04 10:34:38 +01:00
parent f682b93a1e
commit 8bc08955cc
6 changed files with 313 additions and 3 deletions

View File

@@ -52,6 +52,12 @@ export interface CreateTradeParams {
volumeAtEntry?: number
pricePositionAtEntry?: number
signalQualityScore?: number
// Phantom trade fields
status?: string
isPhantom?: boolean
expectedSizeUSD?: number
actualSizeUSD?: number
phantomReason?: string
}
export interface UpdateTradeStateParams {
@@ -124,7 +130,7 @@ export async function createTrade(params: CreateTradeParams) {
signalSource: params.signalSource,
signalStrength: params.signalStrength,
timeframe: params.timeframe,
status: 'open',
status: params.status || 'open',
isTestTrade: params.isTestTrade || false,
// Market context
expectedEntryPrice: params.expectedEntryPrice,
@@ -136,6 +142,11 @@ export async function createTrade(params: CreateTradeParams) {
volumeAtEntry: params.volumeAtEntry,
pricePositionAtEntry: params.pricePositionAtEntry,
signalQualityScore: params.signalQualityScore,
// Phantom trade fields
isPhantom: params.isPhantom || false,
expectedSizeUSD: params.expectedSizeUSD,
actualSizeUSD: params.actualSizeUSD,
phantomReason: params.phantomReason,
},
})