schema.prisma 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. generator client {
  2. provider = "prisma-client-js"
  3. binaryTargets = ["native", "linux-musl-arm64-openssl-3.0.x", "linux-musl-openssl-3.0.x"]
  4. }
  5. datasource db {
  6. provider = "postgresql"
  7. url = env("DATABASE_URL")
  8. }
  9. model WeatherForecast {
  10. id String @id @default(cuid())
  11. city String
  12. targetDate DateTime
  13. model String // 'gfs', 'ecmwf', 'icon'
  14. modelRunTime DateTime
  15. predictedHigh Float
  16. stdDev Float
  17. rawData Json
  18. createdAt DateTime @default(now())
  19. @@index([city, targetDate, model])
  20. }
  21. model MarketSnapshot {
  22. id String @id @default(cuid())
  23. polymarketId Int
  24. marketGroupId Int
  25. city String
  26. targetDate DateTime
  27. bucketLabel String
  28. yesPrice Float
  29. noPrice Float
  30. volume24h Float
  31. liquidity Float
  32. yesTokenId String
  33. noTokenId String
  34. createdAt DateTime @default(now())
  35. @@index([city, targetDate, createdAt])
  36. }
  37. model Signal {
  38. id String @id @default(cuid())
  39. type String // 'TAIL_NO', 'LATENCY_ARB', 'PARITY_ARB'
  40. city String
  41. targetDate DateTime
  42. bucketLabel String
  43. marketYesPrice Float
  44. modelProbability Float
  45. edge Float
  46. expectedReturn Float
  47. agreementScore Float
  48. confidence String
  49. recommendedSize Float
  50. executed Boolean @default(false)
  51. executedAt DateTime?
  52. tradeId String?
  53. trade Trade? @relation(fields: [tradeId], references: [id])
  54. createdAt DateTime @default(now())
  55. @@unique([type, city, targetDate, bucketLabel], name: "type_city_date_bucket")
  56. @@index([type, city, targetDate])
  57. }
  58. model Trade {
  59. id String @id @default(cuid())
  60. signalId String?
  61. signals Signal[]
  62. side String // 'BUY_YES', 'BUY_NO'
  63. tokenId String
  64. price Float
  65. size Float
  66. costBasis Float // price * size
  67. orderId String? // Polymarket order ID
  68. status String // 'PENDING', 'FILLED', 'CANCELLED'
  69. dryRun Boolean @default(true)
  70. filledPrice Float?
  71. pnl Float?
  72. resolvedAt DateTime?
  73. createdAt DateTime @default(now())
  74. @@index([status, createdAt])
  75. }
  76. model DailyMetrics {
  77. id String @id @default(cuid())
  78. date DateTime @unique
  79. totalTrades Int
  80. winningTrades Int
  81. losingTrades Int
  82. grossPnl Float
  83. netPnl Float
  84. winRate Float
  85. avgEdge Float
  86. maxDrawdown Float
  87. createdAt DateTime @default(now())
  88. }