55 lines
1.8 KiB
TypeScript
55 lines
1.8 KiB
TypeScript
import { PrismaClient } from '@prisma/client';
|
||
import * as dotenv from 'dotenv';
|
||
|
||
dotenv.config();
|
||
|
||
(BigInt.prototype as any).toJSON = function () {
|
||
return this.toString();
|
||
};
|
||
|
||
const prisma = new PrismaClient();
|
||
|
||
const matchId = '9jx9757cgs6exshzg12qnwp3o';
|
||
|
||
async function analyzeMiss() {
|
||
const match = await prisma.liveMatch.findUnique({
|
||
where: { id: matchId },
|
||
});
|
||
|
||
if (!match) {
|
||
console.log('Match not found');
|
||
return;
|
||
}
|
||
|
||
console.log('🔍 POST-MORTEM ANALYSIS: Montpellier vs Troyes (2-2)');
|
||
console.log('='.repeat(80));
|
||
|
||
console.log('\n❌ PREDICTION vs ACTUAL:');
|
||
console.log(' Predicted: Under 2.5 goals (72.9% confidence)');
|
||
console.log(' Actual: 2-2 (4 goals)');
|
||
console.log(' xG Predicted: 1.07 - 1.09 (Total: 2.15)');
|
||
console.log(' Error: Model UNDERESTIMATED goals by ~1.85');
|
||
|
||
console.log('\n📊 ENGINE BREAKDOWN:');
|
||
console.log(' Team Signal: 29.2% (LOW)');
|
||
console.log(' Player Signal: 80%');
|
||
console.log(' Odds Signal: 91.9% (VERY HIGH - DOMINANT)');
|
||
console.log(' Referee Signal: 80%');
|
||
console.log('\n ⚠️ PROBLEM: Model %91.9 oranlara güvenmiş,');
|
||
console.log(' ama oranlar YANILTIYDİ (bookmakers da düşük gol bekledi)');
|
||
|
||
console.log('\n🎲 INHERENT UNCERTAINTY:');
|
||
console.log(' Confidence: 72.9% = 27.1% chance of being WRONG');
|
||
console.log(' Bu maç o %27 lik dilime düştü');
|
||
|
||
console.log('\n📈 SYSTEMIC ISSUES TO INVESTIGATE:');
|
||
console.log(' 1. Odds signal çok baskın (%91.9) - model kendi xG sini düşük tutmuş');
|
||
console.log(' 2. Team signal düşük (%29.2) - form verisi yetersiz?');
|
||
console.log(' 3. V25 signal available: false - ensemble eksik');
|
||
console.log(' 4. Lineup var ama oyuncu formu hesaba katılmamış olabilir');
|
||
|
||
await prisma.$disconnect();
|
||
}
|
||
|
||
analyzeMiss().catch(console.error);
|