{"artifacts":["outputs/projection-runs/latest.json","outputs/model_card.json","outputs/phase2_summary.json","outputs/phase2_h2h_predictions.csv","outputs/validation/phase2_promotion_gate.json","outputs/validation/datagolf_historical_backfill_summary.json","mock_data/generated/datagolf_historical/players.csv","mock_data/generated/datagolf_historical/tournaments.csv","mock_data/generated/datagolf_historical/player_round_stats.csv","mock_data/generated/datagolf_historical/event_results.csv","mock_data/generated/datagolf_historical/odds_snapshots.csv","mock_data/generated/tournaments.csv","outputs/clv_summary_overview.json","outputs/execution_fill_summary.json","outputs/validation/data_quality_report.json","outputs/validation/phase2_promotion_gate.json","outputs/validation/execution_filters_validation.json","outputs/validation/bankroll_constraints_validation.json","outputs/validation/clv_report_validation.json","outputs/validation/schema_contracts_validation.json","outputs/validation/point_in_time_validation.json","outputs/validation/leakage_fixture_validation.json","outputs/validation/model_card_validation.json"],"matchups":[{"matchupKey":"p_collin_morikawa_vs_p_xander_schauffele","matchupLabel":"Collin Morikawa vs Xander Schauffele","quoteCount":6,"quotes":[{"allocationReason":"allocated","americanOdds":-115,"edgePct":0.139428,"marketProbNovig":0.512794,"modelProbability":0.652222,"rawModelProbability":0.761286,"recommendedBet":true,"recommendedStakeUsd":200,"selectionKey":"p_xander_schauffele_vs_p_collin_morikawa","selectionLabel":"Xander Schauffele vs Collin Morikawa","sportsbook":"DraftKings"},{"allocationReason":"allocated","americanOdds":-116,"edgePct":0.137996,"marketProbNovig":0.514226,"modelProbability":0.652222,"rawModelProbability":0.761286,"recommendedBet":true,"recommendedStakeUsd":200,"selectionKey":"p_xander_schauffele_vs_p_collin_morikawa","selectionLabel":"Xander Schauffele vs Collin Morikawa","sportsbook":"FanDuel"},{"allocationReason":"below_threshold_or_no_event_capacity","americanOdds":-104,"edgePct":-0.139428,"marketProbNovig":0.487206,"modelProbability":0.347778,"rawModelProbability":0.405934,"recommendedBet":false,"recommendedStakeUsd":0,"selectionKey":"p_collin_morikawa_vs_p_xander_schauffele","selectionLabel":"Collin Morikawa vs Xander Schauffele","sportsbook":"DraftKings"},{"allocationReason":"below_threshold_or_no_event_capacity","americanOdds":-103,"edgePct":-0.137996,"marketProbNovig":0.485774,"modelProbability":0.347778,"rawModelProbability":0.405934,"recommendedBet":false,"recommendedStakeUsd":0,"selectionKey":"p_collin_morikawa_vs_p_xander_schauffele","selectionLabel":"Collin Morikawa vs Xander Schauffele","sportsbook":"FanDuel"},{"allocationReason":"below_threshold_or_no_event_capacity","americanOdds":107,"edgePct":-0.125518,"marketProbNovig":0.473296,"modelProbability":0.347778,"rawModelProbability":0.405934,"recommendedBet":false,"recommendedStakeUsd":0,"selectionKey":"p_collin_morikawa_vs_p_xander_schauffele","selectionLabel":"Collin Morikawa vs Xander Schauffele","sportsbook":"Pinnacle"},{"allocationReason":"player_cap_exceeded","americanOdds":-116,"edgePct":0.125518,"marketProbNovig":0.526704,"modelProbability":0.652222,"rawModelProbability":0.761286,"recommendedBet":false,"recommendedStakeUsd":0,"selectionKey":"p_xander_schauffele_vs_p_collin_morikawa","selectionLabel":"Xander Schauffele vs Collin Morikawa","sportsbook":"Pinnacle"}],"recommendedExposureUsd":400,"recommendedQuoteCount":2,"selections":[{"label":"Collin Morikawa","modelProbability":0.347778,"rawModelProbability":0.405934,"selectionKey":"p_collin_morikawa_vs_p_xander_schauffele"},{"label":"Xander Schauffele","modelProbability":0.652222,"rawModelProbability":0.761286,"selectionKey":"p_xander_schauffele_vs_p_collin_morikawa"}]},{"matchupKey":"p_ludvig_aberg_vs_p_viktor_hovland","matchupLabel":"Ludvig Aberg vs Viktor Hovland","quoteCount":6,"quotes":[{"allocationReason":"allocated","americanOdds":118,"edgePct":0.026183,"marketProbNovig":0.438384,"modelProbability":0.464567,"rawModelProbability":0.553248,"recommendedBet":true,"recommendedStakeUsd":59.81,"selectionKey":"p_viktor_hovland_vs_p_ludvig_aberg","selectionLabel":"Viktor Hovland vs Ludvig Aberg","sportsbook":"DraftKings"},{"allocationReason":"below_threshold_or_no_event_capacity","americanOdds":-142,"edgePct":-0.026183,"marketProbNovig":0.561616,"modelProbability":0.535433,"rawModelProbability":0.637641,"recommendedBet":false,"recommendedStakeUsd":0,"selectionKey":"p_ludvig_aberg_vs_p_viktor_hovland","selectionLabel":"Ludvig Aberg vs Viktor Hovland","sportsbook":"DraftKings"},{"allocationReason":"below_threshold_or_no_event_capacity","americanOdds":-137,"edgePct":-0.017512,"marketProbNovig":0.552944,"modelProbability":0.535433,"rawModelProbability":0.637641,"recommendedBet":false,"recommendedStakeUsd":0,"selectionKey":"p_ludvig_aberg_vs_p_viktor_hovland","selectionLabel":"Ludvig Aberg vs Viktor Hovland","sportsbook":"FanDuel"},{"allocationReason":"below_threshold_or_no_event_capacity","americanOdds":114,"edgePct":0.017512,"marketProbNovig":0.447056,"modelProbability":0.464567,"rawModelProbability":0.553248,"recommendedBet":false,"recommendedStakeUsd":0,"selectionKey":"p_viktor_hovland_vs_p_ludvig_aberg","selectionLabel":"Viktor Hovland vs Ludvig Aberg","sportsbook":"FanDuel"},{"allocationReason":"below_threshold_or_no_event_capacity","americanOdds":-128,"edgePct":-0.014176,"marketProbNovig":0.549609,"modelProbability":0.535433,"rawModelProbability":0.637641,"recommendedBet":false,"recommendedStakeUsd":0,"selectionKey":"p_ludvig_aberg_vs_p_viktor_hovland","selectionLabel":"Ludvig Aberg vs Viktor Hovland","sportsbook":"Pinnacle"},{"allocationReason":"below_threshold_or_no_event_capacity","americanOdds":118,"edgePct":0.014176,"marketProbNovig":0.450391,"modelProbability":0.464567,"rawModelProbability":0.553248,"recommendedBet":false,"recommendedStakeUsd":0,"selectionKey":"p_viktor_hovland_vs_p_ludvig_aberg","selectionLabel":"Viktor Hovland vs Ludvig Aberg","sportsbook":"Pinnacle"}],"recommendedExposureUsd":59.81,"recommendedQuoteCount":1,"selections":[{"label":"Ludvig Aberg","modelProbability":0.535433,"rawModelProbability":0.637641,"selectionKey":"p_ludvig_aberg_vs_p_viktor_hovland"},{"label":"Viktor Hovland","modelProbability":0.464567,"rawModelProbability":0.553248,"selectionKey":"p_viktor_hovland_vs_p_ludvig_aberg"}]},{"matchupKey":"p_rory_mcilroy_vs_p_scottie_scheffler","matchupLabel":"Rory Mcilroy vs Scottie Scheffler","quoteCount":6,"quotes":[{"allocationReason":"allocated","americanOdds":137,"edgePct":0.06412,"marketProbNovig":0.404582,"modelProbability":0.468702,"rawModelProbability":0.558318,"recommendedBet":true,"recommendedStakeUsd":200,"selectionKey":"p_rory_mcilroy_vs_p_scottie_scheffler","selectionLabel":"Rory Mcilroy vs Scottie Scheffler","sportsbook":"DraftKings"},{"allocationReason":"allocated","americanOdds":140,"edgePct":0.060719,"marketProbNovig":0.407982,"modelProbability":0.468702,"rawModelProbability":0.558318,"recommendedBet":true,"recommendedStakeUsd":200,"selectionKey":"p_rory_mcilroy_vs_p_scottie_scheffler","selectionLabel":"Rory Mcilroy vs Scottie Scheffler","sportsbook":"Pinnacle"},{"allocationReason":"below_threshold_or_no_event_capacity","americanOdds":-165,"edgePct":-0.06412,"marketProbNovig":0.595418,"modelProbability":0.531298,"rawModelProbability":0.632883,"recommendedBet":false,"recommendedStakeUsd":0,"selectionKey":"p_scottie_scheffler_vs_p_rory_mcilroy","selectionLabel":"Scottie Scheffler vs Rory Mcilroy","sportsbook":"DraftKings"},{"allocationReason":"player_cap_exceeded","americanOdds":123,"edgePct":0.03863,"marketProbNovig":0.430072,"modelProbability":0.468702,"rawModelProbability":0.558318,"recommendedBet":false,"recommendedStakeUsd":0,"selectionKey":"p_rory_mcilroy_vs_p_scottie_scheffler","selectionLabel":"Rory Mcilroy vs Scottie Scheffler","sportsbook":"FanDuel"},{"allocationReason":"below_threshold_or_no_event_capacity","americanOdds":-147,"edgePct":-0.03863,"marketProbNovig":0.569928,"modelProbability":0.531298,"rawModelProbability":0.632883,"recommendedBet":false,"recommendedStakeUsd":0,"selectionKey":"p_scottie_scheffler_vs_p_rory_mcilroy","selectionLabel":"Scottie Scheffler vs Rory Mcilroy","sportsbook":"FanDuel"},{"allocationReason":"below_threshold_or_no_event_capacity","americanOdds":-152,"edgePct":-0.060719,"marketProbNovig":0.592018,"modelProbability":0.531298,"rawModelProbability":0.632883,"recommendedBet":false,"recommendedStakeUsd":0,"selectionKey":"p_scottie_scheffler_vs_p_rory_mcilroy","selectionLabel":"Scottie Scheffler vs Rory Mcilroy","sportsbook":"Pinnacle"}],"recommendedExposureUsd":400,"recommendedQuoteCount":2,"selections":[{"label":"Rory Mcilroy","modelProbability":0.468702,"rawModelProbability":0.558318,"selectionKey":"p_rory_mcilroy_vs_p_scottie_scheffler"},{"label":"Scottie Scheffler","modelProbability":0.531298,"rawModelProbability":0.632883,"selectionKey":"p_scottie_scheffler_vs_p_rory_mcilroy"}]}],"model":{"assumptions":["Odds snapshots before event start are representative and synchronized across books.","Hole archetypes are stable enough across seasons for transferable fit estimates.","Recommended stake sizing is valid only under configured liquidity/rejection/slippage assumptions."],"deploymentRecommendation":"NO_GO","featureSet":["intercept","diff_sg_total_mean","diff_sg_approach_mean","diff_sg_putting_mean","diff_consistency","diff_rounds_used"],"knownFailureModes":["Missing or delayed odds snapshots can suppress valid opportunities.","Execution slippage/rejections can erase model edge even when CLV is positive.","Small-sample walk-forward windows can produce unstable ROI estimates."],"modelName":"golf_h2h_phase2_holefit","performanceSummary":{"walkforward_metrics":{"baseline":{"bets":16,"clv":0.072454,"roi":-0.187938,"drawdown":4.666,"turnover":0.333333,"pnl_units":-3.007},"phase2":{"bets":14,"clv":0.074506,"roi":-0.188071,"drawdown":5.292,"turnover":0.291667,"pnl_units":-2.633}},"promotion_gate_status":"NO_GO","edge_significance":{"interpretation":"FAIL","p_value_two_sided":1,"ci_95":{"lower":-0.039125,"upper":0.0625}}},"primaryMarket":"H2H","runId":"t_2026_players__2026-02-12","targetTournamentId":"t_2026_players"},"performance":{"clv":{"betRows":5,"totalClvDecimal":0,"totalClvProb":0,"totalStakeUsd":859.81},"executionScenarios":[{"expectedPnlUsd":133.966803,"fillRate":1,"filledStakeUsd":859.81,"meanOddsSlippage":0,"rejections":0,"requestedStakeUsd":859.81,"scenario":"base"},{"expectedPnlUsd":43.993445,"fillRate":0.534781,"filledStakeUsd":459.81,"meanOddsSlippage":0.016017,"rejections":2,"requestedStakeUsd":859.81,"scenario":"stress"}]},"predictionsSource":"projection-artifact","providerData":{"datagolfHistorical":{"fetchedAtUtc":"2026-05-05T04:43:03.695225+00:00","firstOddsTimestamp":"2021-02-15T16:00:00+00:00","inputMode":"fixture","latestOddsTimestamp":"2025-03-13T06:05:00+00:00","rowCounts":{"eventResults":8,"oddsSnapshots":16,"playerRounds":32,"players":4,"tournaments":2},"samplePlayers":["Scottie Scheffler","Rory McIlroy","Collin Morikawa","Xander Schauffele"],"sportsbookCount":1,"tournaments":[{"endDate":"2021-02-21","eventName":"Genesis Invitational","eventResultRows":4,"oddsRows":8,"roundRows":16,"season":2021,"startDate":"2021-02-18","tournamentId":"t_dg_pga_2021_535"},{"endDate":"2025-03-16","eventName":"THE PLAYERS Championship","eventResultRows":4,"oddsRows":8,"roundRows":16,"season":2025,"startDate":"2025-03-13","tournamentId":"t_dg_pga_2025_14"}]}},"promotionGate":{"incrementalLift":{"brier":0.000743,"clv":0.002052,"logLoss":0.003205,"roi":-0.000134},"rowsEvaluated":48,"status":"NO_GO"},"recommendedBets":[{"americanOdds":137,"edgePct":0.06412,"marketProbNovig":0.404582,"phase2Prob":0.468702,"recommendedStakeUsd":200,"selectionKey":"p_rory_mcilroy_vs_p_scottie_scheffler","selectionLabel":"Rory Mcilroy vs Scottie Scheffler","sportsbook":"DraftKings"},{"americanOdds":118,"edgePct":0.026183,"marketProbNovig":0.438384,"phase2Prob":0.464567,"recommendedStakeUsd":59.81,"selectionKey":"p_viktor_hovland_vs_p_ludvig_aberg","selectionLabel":"Viktor Hovland vs Ludvig Aberg","sportsbook":"DraftKings"},{"americanOdds":-115,"edgePct":0.139428,"marketProbNovig":0.512794,"phase2Prob":0.652222,"recommendedStakeUsd":200,"selectionKey":"p_xander_schauffele_vs_p_collin_morikawa","selectionLabel":"Xander Schauffele vs Collin Morikawa","sportsbook":"DraftKings"},{"americanOdds":-116,"edgePct":0.137996,"marketProbNovig":0.514226,"phase2Prob":0.652222,"recommendedStakeUsd":200,"selectionKey":"p_xander_schauffele_vs_p_collin_morikawa","selectionLabel":"Xander Schauffele vs Collin Morikawa","sportsbook":"FanDuel"},{"americanOdds":140,"edgePct":0.060719,"marketProbNovig":0.407982,"phase2Prob":0.468702,"recommendedStakeUsd":200,"selectionKey":"p_rory_mcilroy_vs_p_scottie_scheffler","selectionLabel":"Rory Mcilroy vs Scottie Scheffler","sportsbook":"Pinnacle"}],"summary":{"bankrollUsd":10000,"fitWeight":-1,"matchupCount":3,"marketType":"H2H","maxExposurePerMatchupUsd":500,"maxExposurePerPlayerUsd":400,"maxExposureUsd":1200,"predictionRows":18,"quotesPassedFilters":18,"recommendedBets":5,"recommendedExposureUsd":859.81,"targetTournamentId":"t_2026_players"},"tournaments":[{"courseId":"c_riviera","endDate":"2025-02-16","eventName":"Genesis Invitational","fieldStrength":75.31,"season":2025,"startDate":"2025-02-13","tour":"PGA","tournamentId":"t_2025_genesis"},{"courseId":"c_tpc_sawgrass","endDate":"2025-03-09","eventName":"Arnold Palmer Invitational","fieldStrength":67.33,"season":2025,"startDate":"2025-03-06","tour":"PGA","tournamentId":"t_2025_arnold_palmer"},{"courseId":"c_tpc_sawgrass","endDate":"2025-03-16","eventName":"THE PLAYERS Championship","fieldStrength":70.58,"season":2025,"startDate":"2025-03-13","tour":"PGA","tournamentId":"t_2025_players"},{"courseId":"c_riviera","endDate":"2026-02-15","eventName":"Genesis Invitational","fieldStrength":69.9,"season":2026,"startDate":"2026-02-12","tour":"PGA","tournamentId":"t_2026_genesis"},{"courseId":"c_tpc_sawgrass","endDate":"2026-03-08","eventName":"Arnold Palmer Invitational","fieldStrength":76.57,"season":2026,"startDate":"2026-03-05","tour":"PGA","tournamentId":"t_2026_arnold_palmer"},{"courseId":"c_tpc_sawgrass","endDate":"2026-03-15","eventName":"THE PLAYERS Championship","fieldStrength":75.8,"season":2026,"startDate":"2026-03-12","tour":"PGA","tournamentId":"t_2026_players"}],"validations":[{"name":"data_quality_report","passed":true,"status":null},{"name":"phase2_promotion_gate","passed":false,"status":"NO_GO"},{"name":"execution_filters_validation","passed":true,"status":null},{"name":"bankroll_constraints_validation","passed":true,"status":null},{"name":"clv_report_validation","passed":true,"status":null},{"name":"schema_contracts_validation","passed":true,"status":null},{"name":"point_in_time_validation","passed":true,"status":null},{"name":"leakage_fixture_validation","passed":true,"status":null},{"name":"model_card_validation","passed":true,"status":null}]}