generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" url = env("DATABASE_URL") } model WeatherForecast { id String @id @default(cuid()) city String targetDate DateTime model String // 'gfs', 'ecmwf', 'icon' modelRunTime DateTime predictedHigh Float stdDev Float rawData Json createdAt DateTime @default(now()) @@index([city, targetDate, model]) } model MarketSnapshot { id String @id @default(cuid()) polymarketId Int marketGroupId Int city String targetDate DateTime bucketLabel String yesPrice Float noPrice Float volume24h Float liquidity Float yesTokenId String noTokenId String createdAt DateTime @default(now()) @@index([city, targetDate, createdAt]) } model Signal { id String @id @default(cuid()) type String // 'TAIL_NO', 'LATENCY_ARB', 'PARITY_ARB' city String targetDate DateTime bucketLabel String marketYesPrice Float modelProbability Float edge Float expectedReturn Float agreementScore Float confidence String recommendedSize Float executed Boolean @default(false) executedAt DateTime? tradeId String? trade Trade? @relation(fields: [tradeId], references: [id]) createdAt DateTime @default(now()) @@index([type, city, targetDate]) } model Trade { id String @id @default(cuid()) signalId String? signals Signal[] side String // 'BUY_YES', 'BUY_NO' tokenId String price Float size Float costBasis Float // price * size orderId String? // Polymarket order ID status String // 'PENDING', 'FILLED', 'CANCELLED' dryRun Boolean @default(true) filledPrice Float? pnl Float? resolvedAt DateTime? createdAt DateTime @default(now()) @@index([status, createdAt]) } model DailyMetrics { id String @id @default(cuid()) date DateTime @unique totalTrades Int winningTrades Int losingTrades Int grossPnl Float netPnl Float winRate Float avgEdge Float maxDrawdown Float createdAt DateTime @default(now()) }