{
 "schema_name": "page",
 "schema_version": "2.0",
 "page_type": "author",
 "url": "/authors/patrick-madden/",
 "canonical": "/authors/patrick-madden/",
 "language": "en",
 "hreflang": [],
 "translations": [],
 "heading": "Patrick Madden: Football Prediction Record",
 "description": "3 settled picks by Patrick Madden archived before kick-off across 3 matches, 6 Nov 2025: won 0 of 3, reconstructed at archived prices.",
 "first_paragraph": {
  "body": "Forecast Record restored 3 settled archived picks by Patrick Madden from copies archived before kick-off, across 3 matches on 6 November 2025. Reconstructed at archived prices: won 0 of 3 settled archived picks. Of the 3 predictions we hold for Patrick Madden, 3 were archived before kick-off by an independent web archive. Figures as of 7 November 2026.",
  "key_number": "3",
  "data": "2026-11-07",
  "source_info": "our own evidence archive and market snapshot",
  "brand": "Forecast Record"
 },
 "indexable": false,
 "noindex_reason": "too_few_settled",
 "indexing_threshold": {
  "settled_count": 3,
  "date_count": 1,
  "required_settled": 10,
  "required_dates": 2,
  "live_count": 0,
  "restored_count": 3,
  "of_them_archived": 3
 },
 "data_date": "2026-11-07T19:52:23.438Z",
 "built_at": "2026-11-07T19:52:23.438Z",
 "lastmod": "2026-11-08T02:12:33.000Z",
 "content_hash": null,
 "meaning_hash": "6fa570ddf1924374886d27973f0628bcab2b9926b322e6bc6c3a65c59d7a8076",
 "dependency_group": "author:e-5468574286cd70d623e7799b",
 "release_id": "20261107-195223",
 "markup": [
  {
   "type_code": "WebPage",
   "allowed": true,
   "cause": null
  },
  {
   "type_code": "Organization",
   "allowed": true,
   "cause": null
  },
  {
   "type_code": "Person",
   "allowed": true,
   "cause": null
  }
 ],
 "exports": [
  {
   "type_code": "json",
   "url": "/authors/patrick-madden/index.json",
   "bytes": null
  },
  {
   "type_code": "csv",
   "url": "/authors/patrick-madden/picks.csv",
   "bytes": null
  }
 ],
 "modules": {
  "affiliate": true,
  "api": true,
  "compare_yourself": false
 },
 "affiliate_block": {
  "container": true,
  "request_url": "/partnery/moi",
  "disclosure": "Some links below are affiliate links and are marked as such. They never affect what you see above: the order of any table is computed before any commission is known.",
  "page_category": "author"
 },
 "restrictions": {
  "name_withdrawn": false,
  "tracker_number": null,
  "withdrawn_quotes": [],
  "removed_at": null,
  "cause": null,
  "suspended_records": [],
  "withdrawal_log_number": 0
 },
 "page_links": {
  "methodology": "/methodology/",
  "right_of_reply": "/right-of-reply/",
  "source_coverage": "/coverage/",
  "corrections_log": "/corrections/",
  "api": "/api/",
  "claim": "/claim/"
 },
 "entity": {
  "id": "e-5468574286cd70d623e7799b",
  "public_name": "Patrick Madden",
  "tracker_number": 2019,
  "status": "active",
  "inactive_since": null,
  "verified_creator": false,
  "observation_period": {
   "since": "2026-10-01",
   "until": "2026-10-01"
  },
  "platform_list": [
   {
    "medium": "website",
    "handle": null,
    "url": null,
    "link_confirmed": false,
    "show": true
   }
  ],
  "comment": null
 },
 "headline_number": {
  "metric": {
   "metric_id": "p-e-5468574286cd70d623e7799b-roi-market-price-90d-z99",
   "code_name": "roi_market_price",
   "display_name": "Return on stakes at an independent odds snapshot",
   "window_kind": "90d",
   "window_from": "2026-08-09",
   "window_to": "2026-11-07",
   "amount": null,
   "unit": "percent",
   "data_status": "unknown",
   "cause": "no pick in this window has been settled",
   "n_bets": 0,
   "n_events": 0,
   "n_void": null,
   "ci_low": null,
   "ci_high": null,
   "ci_method": "not_estimated",
   "price_source": "market_price",
   "coverage_percent": null,
   "breakdown": [],
   "methodology_version": "2.2",
   "data_date": "2026-11-07T19:52:23.438Z",
   "enough_for_ranking": false,
   "series_key": "market_price",
   "series_label": "At an independent odds snapshot"
  },
  "byline": "Return on stakes at an independent odds snapshot over 90 days: 0 settled picks across 0 matches",
  "average_odds": null,
  "odds_from_author": null,
  "odds_from_snapshot": null
 },
 "metrics": [],
 "history": [],
 "simulation": {
  "series_key": null,
  "series_label": "No level stake placed",
  "bankroll_hundredths": 1000000,
  "reserve_hundredths": 0,
  "issued_total_hundredths": 1000000,
  "initial_hundredths": 1000000,
  "stake_hundredths": 10000,
  "top_up_count": 0,
  "profit_hundredths": 0,
  "rewards_off": null,
  "data_points": [],
  "top_ups": [],
  "rule": "Every tracked author starts with 10,000 points and stakes 100 per qualifying pick. This author has 0 settled bets, so the bankroll stands at its starting value."
 },
 "simulations": [],
 "completeness": {
  "detected": 4,
  "recognised": 3,
  "accepted": 3,
  "executed": 3,
  "calculated": 3,
  "gaps": []
 },
 "record_counts": {
  "dictionary_version": "1",
  "statements": 4,
  "of_them_restored": 4,
  "not_predictions": {
   "opinions": 0,
   "not_about_a_match": 1,
   "unclassified": 0
  },
  "predictions": 3,
  "predictions_restored": 3,
  "matches": 0,
  "admitted": 3,
  "qualifying_picks": 3,
  "qualifying_picks_restored": 3,
  "settled_picks": 3,
  "settled_picks_restored": 3,
  "series_list": [
   {
    "code_name": "retro_author_price",
    "derived": false,
    "is_restored": true,
    "qualifying_picks": 3,
    "settled_picks": 3,
    "void": 0,
    "pending_picks": 0,
    "matches": 3,
    "operations_settled": 3,
    "stakes_hundredths": [
     10000
    ],
    "methodologies": [
     "retro-1.0"
    ],
    "display_name": "Restored, at the author's stated price"
   },
   {
    "code_name": "retro_market_closing_sm",
    "derived": false,
    "is_restored": true,
    "qualifying_picks": 3,
    "settled_picks": 3,
    "void": 0,
    "pending_picks": 0,
    "matches": 3,
    "operations_settled": 3,
    "stakes_hundredths": [
     10000
    ],
    "methodologies": [
     "retro-1.1"
    ],
    "display_name": "Restored, at the last pre-match price in archive (~8–15 h before kick-off)"
   }
  ],
  "gaps": [],
  "duplicates": 0,
  "junk": {
   "ads": 1
  },
  "dictionary_url": "/methodology/#words"
 },
 "evidence_items": [
  {
   "observation_id": "n-1f2a93bf256fc988850c0061",
   "url": "/evidence/?pick=n-1f2a93bf256fc988850c0061",
   "quote_text": "NEW CUSTOMER OFFER\n\n£50 In Free Acca Bets When You Place A £10 Acca (5+ legs)",
   "fragment_from": 1691,
   "fragment_to": 1768,
   "quote_allowed": true,
   "source_info": {
    "medium": "website",
    "url": "https://web.archive.org/web/20251105192256id_/https://www.racingpost.com/sport/football-tips/europa-league/thursdays-europa-league-matchday-four-predictions-odds-and-betting-tips-real-betis-and-lyon-look-closely-matched-aFtkq1Q0VShk/",
    "display_name": null,
    "speaker": "Patrick Madden",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "5011db144705df87f21fbf850f389178dd27a19a1f889c7bd9424a1253ea29de",
    "material_removed": false
   },
   "published_at": "2025-11-05T16:00:00.000Z",
   "detected_at": "2026-10-01T00:48:04.340Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "ambiguous",
   "cause": "",
   "cause_code": "ambiguous",
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "restored_archive",
   "provenance_words": "Archived before kick-off",
   "dates": {
    "fragment_at": "2025-11-05T16:00:00.000Z",
    "fragment_basis": "page",
    "source_page_at": "2025-11-05T16:00:00.000Z",
    "detected_at": "2026-10-01T00:48:04.340Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "prematch_web_archive",
   "origin_detail": null,
   "origin_words": "Archived before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-aa71f1d7bc8fa5db99833df0",
   "url": "/authors/patrick-madden/#pick-n-aa71f1d7bc8fa5db99833df0",
   "quote_text": "Stuttgart to win and both teams to score vs Feyenoord\nDiscovery+, 8pm Thursday\n2pts 23-10 Hills",
   "fragment_from": 1551,
   "fragment_to": 1646,
   "quote_allowed": true,
   "source_info": {
    "medium": "website",
    "url": "https://web.archive.org/web/20251105192256id_/https://www.racingpost.com/sport/football-tips/europa-league/thursdays-europa-league-matchday-four-predictions-odds-and-betting-tips-real-betis-and-lyon-look-closely-matched-aFtkq1Q0VShk/",
    "display_name": null,
    "speaker": "Patrick Madden",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "5011db144705df87f21fbf850f389178dd27a19a1f889c7bd9424a1253ea29de",
    "material_removed": false
   },
   "published_at": "2025-11-05T16:00:00.000Z",
   "detected_at": "2026-10-01T00:48:04.340Z",
   "executed_at": "2026-11-07T18:22:26.709Z",
   "statement_class": "priced",
   "status": "too_late",
   "cause": "counted in the restored-history series",
   "cause_code": null,
   "event": {
    "event_id": null,
    "display_name": "VfB Stuttgart v Feyenoord",
    "competition_name": "UEFA Europa League",
    "starts_at": "2025-11-06T20:00:00.000Z",
    "url": null,
    "scoreline": "2-0"
   },
   "market_label": "Match result and both teams to score",
   "outcome_label": "VfB Stuttgart win, both teams to score: yes",
   "odds_set": {
    "by_author": "3.3",
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": "3.0500",
    "closing_source": "last pre-match price in archive (~8–15 h before kick-off)"
   },
   "stake_hundredths": 10000,
   "result": "loss",
   "simulation_change_hundredths": -10000,
   "bankroll_after_hundredths": null,
   "executed_by": "ours",
   "series_label": "Restored, at the last pre-match price in archive (~8–15 h before kick-off)",
   "withdrawn": false,
   "provenance": "restored_archive",
   "provenance_words": "Archived before kick-off",
   "archive_snapshot_at": "2025-11-05T19:22:56.000Z",
   "dates": {
    "fragment_at": "2025-11-05T16:00:00.000Z",
    "fragment_basis": "page",
    "source_page_at": "2025-11-05T16:00:00.000Z",
    "detected_at": "2026-10-01T00:48:04.340Z",
    "archive_snapshot_at": "2025-11-05T19:22:56.000Z",
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "prematch_web_archive",
   "origin_detail": null,
   "origin_words": "Archived before kick-off",
   "added_on": "Added to our record on 1 Oct 2026",
   "late_publication": null,
   "author_claim": {
    "market_label": "Match result and both teams to score",
    "choice": "VfB Stuttgart win, both teams to score: yes",
    "author_odds": "3.3",
    "market_key": "both_teams_score_and_result",
    "choice_key": "1-yes",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Match result and both teams to score: VfB Stuttgart win, both teams to score: yes at 3.3"
   },
   "author_claim_outcome": {
    "result": "loss",
    "scoreline": "2-0",
    "data_status": "measured",
    "cause": null,
    "methodology_version": "retro-1.0",
    "in_words": "Lost: the final score was VfB Stuttgart 2-0 Feyenoord."
   },
   "settlements": [
    {
     "operation_id": "6e3561515331c748bb8d1029119822cb8e1e83ee80b1566ad17ad5dd9ca23151",
     "series_key": "retro_author_price",
     "series_label": "Restored, at the author's stated price",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "Match result and both teams to score",
     "choice": "VfB Stuttgart win, both teams to score: yes",
     "decimal_odds": "3.3",
     "odds_role": "author_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "loss",
     "result_words": "Lost",
     "change_hundredths": -10000,
     "executed_at": "2026-11-07T18:22:26.699Z",
     "methodology_version": "retro-1.0",
     "on_claim_market": true,
     "replaced": false
    },
    {
     "operation_id": "2ecc934b699a34004b93615641b9c9da79c433d783d23de3bd53dfdbfbc06e65",
     "series_key": "retro_market_closing_sm",
     "series_label": "Restored, at the last pre-match price in archive (~8–15 h before kick-off)",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "Match result and both teams to score",
     "choice": "VfB Stuttgart win, both teams to score: yes",
     "decimal_odds": "3.0500",
     "odds_role": "closing_odds",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "loss",
     "result_words": "Lost",
     "change_hundredths": -10000,
     "executed_at": "2026-11-07T18:22:26.709Z",
     "methodology_version": "retro-1.1",
     "on_claim_market": true,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "settled_pick",
   "authorship": {
    "material_author": "Patrick Madden",
    "publisher": "racingpost.com",
    "forecaster": "Patrick Madden",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.racingpost.com/sport/football-tips/europa-league/thursdays-europa-league-matchday-four-predictions-odds-and-betting-tips-real-betis-and-lyon-look-closely-matched-aFtkq1Q0VShk/",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-e258e3c76e0b47329e640d81",
   "url": "/authors/patrick-madden/#pick-n-e258e3c76e0b47329e640d81",
   "quote_text": "PAOK to win and both teams to score vs Young Boys\nDiscovery+, 8pm Thursday\n2pts 9-4 Hills",
   "fragment_from": 1460,
   "fragment_to": 1549,
   "quote_allowed": true,
   "source_info": {
    "medium": "website",
    "url": "https://web.archive.org/web/20251105192256id_/https://www.racingpost.com/sport/football-tips/europa-league/thursdays-europa-league-matchday-four-predictions-odds-and-betting-tips-real-betis-and-lyon-look-closely-matched-aFtkq1Q0VShk/",
    "display_name": null,
    "speaker": "Patrick Madden",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "5011db144705df87f21fbf850f389178dd27a19a1f889c7bd9424a1253ea29de",
    "material_removed": false
   },
   "published_at": "2025-11-05T16:00:00.000Z",
   "detected_at": "2026-10-01T00:48:04.340Z",
   "executed_at": "2026-11-07T18:22:26.688Z",
   "statement_class": "priced",
   "status": "too_late",
   "cause": "counted in the restored-history series",
   "cause_code": null,
   "event": {
    "event_id": null,
    "display_name": "PAOK v BSC Young Boys",
    "competition_name": "UEFA Europa League",
    "starts_at": "2025-11-06T20:00:00.000Z",
    "url": null,
    "scoreline": "4-0"
   },
   "market_label": "Match result and both teams to score",
   "outcome_label": "PAOK win, both teams to score: yes",
   "odds_set": {
    "by_author": "3.25",
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": "2.7500",
    "closing_source": "last pre-match price in archive (~8–15 h before kick-off)"
   },
   "stake_hundredths": 10000,
   "result": "loss",
   "simulation_change_hundredths": -10000,
   "bankroll_after_hundredths": null,
   "executed_by": "ours",
   "series_label": "Restored, at the last pre-match price in archive (~8–15 h before kick-off)",
   "withdrawn": false,
   "provenance": "restored_archive",
   "provenance_words": "Archived before kick-off",
   "archive_snapshot_at": "2025-11-05T19:22:56.000Z",
   "dates": {
    "fragment_at": "2025-11-05T16:00:00.000Z",
    "fragment_basis": "page",
    "source_page_at": "2025-11-05T16:00:00.000Z",
    "detected_at": "2026-10-01T00:48:04.340Z",
    "archive_snapshot_at": "2025-11-05T19:22:56.000Z",
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "prematch_web_archive",
   "origin_detail": null,
   "origin_words": "Archived before kick-off",
   "added_on": "Added to our record on 1 Oct 2026",
   "late_publication": null,
   "author_claim": {
    "market_label": "Match result and both teams to score",
    "choice": "PAOK win, both teams to score: yes",
    "author_odds": "3.25",
    "market_key": "both_teams_score_and_result",
    "choice_key": "1-yes",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Match result and both teams to score: PAOK win, both teams to score: yes at 3.25"
   },
   "author_claim_outcome": {
    "result": "loss",
    "scoreline": "4-0",
    "data_status": "measured",
    "cause": null,
    "methodology_version": "retro-1.0",
    "in_words": "Lost: the final score was PAOK 4-0 BSC Young Boys."
   },
   "settlements": [
    {
     "operation_id": "d158e195d7002b6136a0f891d1970edaab21fbb5ce7b57ca9f76c486cd5a7de2",
     "series_key": "retro_author_price",
     "series_label": "Restored, at the author's stated price",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "Match result and both teams to score",
     "choice": "PAOK win, both teams to score: yes",
     "decimal_odds": "3.25",
     "odds_role": "author_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "loss",
     "result_words": "Lost",
     "change_hundredths": -10000,
     "executed_at": "2026-11-07T18:22:26.681Z",
     "methodology_version": "retro-1.0",
     "on_claim_market": true,
     "replaced": false
    },
    {
     "operation_id": "0c61017baf5fb5bb25947fbe4863fc1dd4610d9c053714170abf696f6775f05b",
     "series_key": "retro_market_closing_sm",
     "series_label": "Restored, at the last pre-match price in archive (~8–15 h before kick-off)",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "Match result and both teams to score",
     "choice": "PAOK win, both teams to score: yes",
     "decimal_odds": "2.7500",
     "odds_role": "closing_odds",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "loss",
     "result_words": "Lost",
     "change_hundredths": -10000,
     "executed_at": "2026-11-07T18:22:26.688Z",
     "methodology_version": "retro-1.1",
     "on_claim_market": true,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "settled_pick",
   "authorship": {
    "material_author": "Patrick Madden",
    "publisher": "racingpost.com",
    "forecaster": "Patrick Madden",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.racingpost.com/sport/football-tips/europa-league/thursdays-europa-league-matchday-four-predictions-odds-and-betting-tips-real-betis-and-lyon-look-closely-matched-aFtkq1Q0VShk/",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-60a1419279a9873daeee325b",
   "url": "/authors/patrick-madden/#pick-n-60a1419279a9873daeee325b",
   "quote_text": "Draw in Real Betis vs Lyon\nDiscovery+, 8pm Thursday\n2pts 14-5 Betfair, Paddy Power",
   "fragment_from": 1376,
   "fragment_to": 1458,
   "quote_allowed": true,
   "source_info": {
    "medium": "website",
    "url": "https://web.archive.org/web/20251105192256id_/https://www.racingpost.com/sport/football-tips/europa-league/thursdays-europa-league-matchday-four-predictions-odds-and-betting-tips-real-betis-and-lyon-look-closely-matched-aFtkq1Q0VShk/",
    "display_name": null,
    "speaker": "Patrick Madden",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "5011db144705df87f21fbf850f389178dd27a19a1f889c7bd9424a1253ea29de",
    "material_removed": false
   },
   "published_at": "2025-11-05T16:00:00.000Z",
   "detected_at": "2026-10-01T00:48:04.340Z",
   "executed_at": "2026-11-07T18:22:26.671Z",
   "statement_class": "priced",
   "status": "too_late",
   "cause": "counted in the restored-history series",
   "cause_code": null,
   "event": {
    "event_id": null,
    "display_name": "Real Betis v Olympique Lyonnais",
    "competition_name": "UEFA Europa League",
    "starts_at": "2025-11-06T20:00:00.000Z",
    "url": null,
    "scoreline": "2-0"
   },
   "market_label": "1X2, match result",
   "outcome_label": "draw",
   "odds_set": {
    "by_author": "3.8",
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": "4.2000",
    "closing_source": "last pre-match price in archive (~8–15 h before kick-off)"
   },
   "stake_hundredths": 10000,
   "result": "loss",
   "simulation_change_hundredths": -10000,
   "bankroll_after_hundredths": null,
   "executed_by": "ours",
   "series_label": "Restored, at the last pre-match price in archive (~8–15 h before kick-off)",
   "withdrawn": false,
   "provenance": "restored_archive",
   "provenance_words": "Archived before kick-off",
   "archive_snapshot_at": "2025-11-05T19:22:56.000Z",
   "dates": {
    "fragment_at": "2025-11-05T16:00:00.000Z",
    "fragment_basis": "page",
    "source_page_at": "2025-11-05T16:00:00.000Z",
    "detected_at": "2026-10-01T00:48:04.340Z",
    "archive_snapshot_at": "2025-11-05T19:22:56.000Z",
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "prematch_web_archive",
   "origin_detail": null,
   "origin_words": "Archived before kick-off",
   "added_on": "Added to our record on 1 Oct 2026",
   "late_publication": null,
   "author_claim": {
    "market_label": "1X2, match result",
    "choice": "draw",
    "author_odds": "3.8",
    "market_key": "1x2",
    "choice_key": "X",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "1X2, match result: draw at 3.8"
   },
   "author_claim_outcome": {
    "result": "loss",
    "scoreline": "2-0",
    "data_status": "measured",
    "cause": null,
    "methodology_version": "retro-1.0",
    "in_words": "Lost: the final score was Real Betis 2-0 Olympique Lyonnais."
   },
   "settlements": [
    {
     "operation_id": "790a817d68ebc6e2f357d9df75b5240cced23ec824bbdc27181e135c12193b80",
     "series_key": "retro_author_price",
     "series_label": "Restored, at the author's stated price",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "1X2, match result",
     "choice": "draw",
     "decimal_odds": "3.8",
     "odds_role": "author_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "loss",
     "result_words": "Lost",
     "change_hundredths": -10000,
     "executed_at": "2026-11-07T18:22:26.658Z",
     "methodology_version": "retro-1.0",
     "on_claim_market": true,
     "replaced": false
    },
    {
     "operation_id": "a630ffe4adbda1c1171d49704b6f555041b1359850c417cf4f745aede2fcbe07",
     "series_key": "retro_market_closing_sm",
     "series_label": "Restored, at the last pre-match price in archive (~8–15 h before kick-off)",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "1X2, match result",
     "choice": "draw",
     "decimal_odds": "4.2000",
     "odds_role": "closing_odds",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "loss",
     "result_words": "Lost",
     "change_hundredths": -10000,
     "executed_at": "2026-11-07T18:22:26.671Z",
     "methodology_version": "retro-1.1",
     "on_claim_market": true,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "settled_pick",
   "authorship": {
    "material_author": "Patrick Madden",
    "publisher": "racingpost.com",
    "forecaster": "Patrick Madden",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.racingpost.com/sport/football-tips/europa-league/thursdays-europa-league-matchday-four-predictions-odds-and-betting-tips-real-betis-and-lyon-look-closely-matched-aFtkq1Q0VShk/",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  }
 ],
 "excluded_from_feed": {
  "ads": 1,
  "service": 0,
  "ruleset_version": "3"
 },
 "standing": null,
 "retro": {
  "restored_total": 3,
  "of_them_archived_pre_match": 3,
  "found_post_match": 0,
  "of_them_source_reported": 0,
  "live_count": 0,
  "date_count": 1,
  "span_from": "2025-11-06",
  "span_to": "2025-11-06",
  "line_text": "restored history: 3, of which pre-match archive 3",
  "body": "We re-read what this author published before Europa League matches on 6 November 2025 and settled it against the final score. Restored picks: 3. Backed by a copy of the page in an independent web archive taken before kick-off: 3. Found after the match, with the publication date as stated by the source: 0. The market price at the moment of publication cannot be reconstructed, so restored picks are shown as reconstructed at archived prices (~8–15 h before kick-off), not at the closing price, for the pre-match archive and the later finds separately; the author's quoted price and, where it exists, the aggregator closing price are compared with it on the same picks. Authors can delete losing picks, so restored history may look better than it was.",
  "precision": {
   "n": 3,
   "share": "0.0"
  },
  "series_list": [
   {
    "code_name": "retro_author_price",
    "display_name": "Restored, at the author's stated price",
    "n": 3,
    "roi": "-100.0000",
    "ci_low": null,
    "ci_high": null,
    "data_status": "calculated",
    "methodology_version": "retro-1.0",
    "cause": null
   },
   {
    "code_name": "retro_market_closing",
    "display_name": "Restored, at the closing market price",
    "n": 0,
    "roi": null,
    "ci_low": null,
    "ci_high": null,
    "data_status": "unknown",
    "methodology_version": "retro-1.0",
    "cause": "no restored pick with this price"
   },
   {
    "code_name": "retro_market_closing_sm",
    "display_name": "Restored, at the last pre-match price in archive (~8–15 h before kick-off)",
    "n": 3,
    "roi": "-100.0000",
    "ci_low": null,
    "ci_high": null,
    "data_status": "calculated",
    "methodology_version": "retro-1.1",
    "cause": null
   }
  ],
  "clv": {
   "data_status": "unknown",
   "cause": "the market price at the moment of publication is unknown for restored picks; the author's quoted price against the aggregator closing price is compared on the same picks in each part of the record above"
  },
  "methodology_version": "retro-1.0",
  "leagues": [
   "Europa League"
  ],
  "source_list": "Results: the official regulation-time score, checked against a second data provider for 0 settled restored picks and forecasts, and the two agree; 3 come from one provider only. Prices: the aggregator closing price and the second data provider's last pre-match price in archive (~8–15 h before kick-off), as a separate series; each provider is its own series and they are never averaged."
 },
 "late": null,
 "price_vs_market": null,
 "record_summary": {
  "contract_version": "1",
  "entity_type": "person",
  "entity_words": "Individual author",
  "source": {
   "name": "racingpost.com",
   "url": "https://web.archive.org/web/20251105192256id_/https://www.racingpost.com/sport/football-tips/europa-league/thursdays-europa-league-matchday-four-predictions-odds-and-betting-tips-real-betis-and-lyon-look-closely-matched-aFtkq1Q0VShk/"
  },
  "observed_from": "2026-10-01",
  "observed_to": "2026-10-01",
  "data_as_of": "2026-11-07",
  "state": "settled",
  "series_code": "retro_market_closing_sm",
  "series": "Archived before kick-off, reconstructed at archived prices (~8–15 h before kick-off)",
  "restored": true,
  "headline_kind": "historical_simulation",
  "headline_part": "archived",
  "settled_picks": 3,
  "matches": 3,
  "void": 0,
  "net_points_hundredths": -30000,
  "staked_hundredths": 30000,
  "return_percent": "-100.00",
  "stake_per_pick_hundredths": 10000,
  "period_from": "2025-11-06",
  "period_to": "2025-11-06",
  "status": "calculated",
  "method_version": "retro-1.1",
  "short_history": true,
  "reason": null,
  "reasons": [],
  "sentence": "Forecast Record restored 3 settled archived picks by Patrick Madden from copies archived before kick-off, across 3 matches on 6 November 2025. Reconstructed at archived prices: won 0 of 3 settled archived picks. Of the 3 predictions we hold for Patrick Madden, 3 were archived before kick-off by an independent web archive. Figures as of 7 November 2026.",
  "numbers": [
   {
    "label": "Settled archived picks",
    "value": "3",
    "anchor": "/methodology/#settled-pick",
    "note": null
   },
   {
    "label": "Matches",
    "value": "3",
    "anchor": "/methodology/#match",
    "note": null
   },
   {
    "label": "Net result",
    "value": "−300 points",
    "anchor": "/methodology/#settlement",
    "note": "100 points per pick"
   },
   {
    "label": "Reconstructed at archived prices",
    "value": "−100.0%",
    "anchor": "/methodology/#roi",
    "note": null
   }
  ],
  "limitations": [
   "Reconstructed at archived prices: these picks were restored from copies of the author’s pages that an independent web archive saved before kick-off, at the last pre-match archive prices, bookmaker margin included."
  ],
  "other_series": [],
  "return_over_time": [],
  "return_over_time_parts": {
   "live": null,
   "archived": {
    "part": "archived",
    "label": "Reconstructed at archived prices",
    "series_code": "retro_market_closing_sm",
    "price_rule": "Reconstructed at archived prices",
    "x_axis": "match_date",
    "dated_note": "Dated by match day. These picks were restored from copies an independent web archive saved before kick-off; the line shows how they settled at archived prices.",
    "settled_picks": 3,
    "matches": 3,
    "match_dates": 1,
    "period_from": "2025-11-06",
    "period_to": "2025-11-06",
    "stake_per_pick_hundredths": 10000,
    "final_points_hundredths": -30000,
    "low": {
     "date": "2025-11-06",
     "cumulative_points_hundredths": -30000,
     "after_picks": 3
    },
    "high": {
     "date": "2025-11-06",
     "cumulative_points_hundredths": -30000,
     "after_picks": 3
    },
    "line_drawn": false,
    "steps": [
     {
      "date": "2025-11-06",
      "cumulative_points_hundredths": -30000,
      "n": 3,
      "picks": 3
     }
    ]
   }
  },
  "author_response": null,
  "cite": {
   "text": "Forecast Record restored 3 settled archived picks by Patrick Madden from copies archived before kick-off, across 3 matches on 6 November 2025. Reconstructed at archived prices: won 0 of 3 settled archived picks. Of the 3 predictions we hold for Patrick Madden, 3 were archived before kick-off by an independent web archive. Figures as of 7 November 2026.",
   "url": "https://forecastrecord.com/authors/patrick-madden/",
   "data_as_of": "2026-11-07",
   "method_version": "retro-1.1"
  },
  "origin": {
   "contract_version": "1",
   "predictions": 3,
   "under_review": 0,
   "no_match_linked": 0,
   "proven_predictions": 3,
   "proven_checked": 3,
   "proven_measured": 3,
   "proven_dates": 1,
   "parts": [
    {
     "code": "live",
     "title": "Recorded before kick-off",
     "explanation": "Saved by us from the source before kick-off.",
     "predictions": 0,
     "checked": 0,
     "price_rule": "Return at our recorded market price",
     "series_code": "market_price",
     "main": null,
     "same_picks": [],
     "score": {
      "score_forecasts": 0,
      "exact_hits": 0,
      "exact_rate": null,
      "outcome_checked": 0,
      "outcome_hits": 0,
      "outcome_rate": null,
      "baseline_matches": 0,
      "baseline_distinct_matches": 0,
      "outcome_hits_on_baseline": 0,
      "outcome_rate_on_baseline": null,
      "favourite_hits": 0,
      "favourite_rate": null,
      "price_basis": null,
      "pending": 0,
      "void": 0,
      "recorded_after_kickoff": 0,
      "lines": []
     },
     "eligible": {
      "checked": 0,
      "priced": 0
     },
     "accuracy": null
    },
    {
     "code": "archived",
     "title": "Archived before kick-off",
     "explanation": "Restored from a copy saved by an independent web archive before kick-off.",
     "predictions": 3,
     "checked": 3,
     "price_rule": "Reconstructed at archived prices",
     "series_code": "retro_market_closing_sm",
     "main": {
      "settled_picks": 3,
      "void": 0,
      "matches": 3,
      "net_points_hundredths": -30000,
      "staked_hundredths": 30000,
      "return_percent": "-100.00",
      "interval_low": null,
      "interval_high": null,
      "interval_note": "too few independent matches to estimate an interval",
      "period_from": "2025-11-06",
      "period_to": "2025-11-06",
      "method_version": "retro-1.1"
     },
     "same_picks": [
      {
       "price": "Author-quoted price",
       "series_code": "retro_author_price",
       "picks": 3,
       "return_main_percent": "-100.00",
       "return_other_percent": "-100.00",
       "settled_excluding_void": 3,
       "net_main_points_hundredths": -30000,
       "net_other_points_hundredths": -30000,
       "period_from": "2025-11-06",
       "period_to": "2025-11-06"
      }
     ],
     "score": {
      "score_forecasts": 0,
      "exact_hits": 0,
      "exact_rate": null,
      "outcome_checked": 0,
      "outcome_hits": 0,
      "outcome_rate": null,
      "baseline_matches": 0,
      "baseline_distinct_matches": 0,
      "outcome_hits_on_baseline": 0,
      "outcome_rate_on_baseline": null,
      "favourite_hits": 0,
      "favourite_rate": null,
      "price_basis": null,
      "pending": 0,
      "void": 0,
      "recorded_after_kickoff": 0,
      "lines": []
     },
     "eligible": {
      "checked": 3,
      "priced": 3
     },
     "accuracy": {
      "picks": 3,
      "won": 0,
      "won_percent": "0.0",
      "implied_percent": "31.0",
      "left_out": 0,
      "by_market": [
       {
        "market": "Result and both teams to score",
        "won": 0,
        "picks": 2,
        "implied_percent": "34.6"
       },
       {
        "market": "Match result",
        "won": 0,
        "picks": 1,
        "implied_percent": "23.8"
       }
      ]
     }
    },
    {
     "code": "found_after",
     "title": "Found after the match",
     "explanation": "First found after the match; the date is the one the source states.",
     "predictions": 0,
     "checked": 0,
     "price_rule": "Reconstructed at archived prices",
     "series_code": "retro_market_closing_sm",
     "main": null,
     "same_picks": [],
     "score": {
      "score_forecasts": 0,
      "exact_hits": 0,
      "exact_rate": null,
      "outcome_checked": 0,
      "outcome_hits": 0,
      "outcome_rate": null,
      "baseline_matches": 0,
      "baseline_distinct_matches": 0,
      "outcome_hits_on_baseline": 0,
      "outcome_rate_on_baseline": null,
      "favourite_hits": 0,
      "favourite_rate": null,
      "price_basis": null,
      "pending": 0,
      "void": 0,
      "recorded_after_kickoff": 0,
      "lines": []
     },
     "eligible": {
      "checked": 0,
      "priced": 0
     },
     "accuracy": null
    }
   ]
  },
  "live_alongside": null,
  "headline_record_ids": [
   "n-60a1419279a9873daeee325b",
   "n-aa71f1d7bc8fa5db99833df0",
   "n-e258e3c76e0b47329e640d81"
  ],
  "interval_low": null,
  "interval_high": null,
  "caption": "Archived before kick-off, reconstructed at archived prices (~8–15 h before kick-off) · 100 points per pick · 6 November 2025 · Calculated · picks settled under reconstruction method 1.1",
  "record_from": "2025-11-06",
  "record_to": "2025-11-06"
 },
 "recorded_picks": [
  {
   "record_id": "n-aa71f1d7bc8fa5db99833df0",
   "url": "/authors/patrick-madden/#pick-n-aa71f1d7bc8fa5db99833df0",
   "match": "VfB Stuttgart v Feyenoord",
   "match_url": null,
   "kickoff": "2025-11-06T20:00:00.000Z",
   "competition": "UEFA Europa League",
   "lead_hours": -7876.8,
   "market_code": "both_teams_score_and_result",
   "author_said": "Match result and both teams to score: VfB Stuttgart win, both teams to score: yes at 3.3",
   "quote": null,
   "group": "settled",
   "outcome": "Lost",
   "claim_outcome": "Lost",
   "final_score": "2-0",
   "reason": null,
   "reason_code": null,
   "points_hundredths": -10000,
   "series_code": "retro_market_closing_sm",
   "series_short": "last pre-match archive price, restored",
   "author_price": "3.3",
   "settled_price": "3.0500",
   "published_at": "2025-11-05T16:00:00.000Z",
   "recorded_at": "2026-10-01T00:48:04.340Z",
   "origin": "Archived before kick-off",
   "record_part": "archived",
   "record_part_words": "Archived before kick-off",
   "in_headline": true,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-aa71f1d7bc8fa5db99833df0",
    "quote_text": "Stuttgart to win and both teams to score vs Feyenoord\nDiscovery+, 8pm Thursday\n2pts 23-10 Hills",
    "fragment_from": 1551,
    "fragment_to": 1646,
    "quote_allowed": true,
    "source_info": {
     "medium": "website",
     "url": "https://web.archive.org/web/20251105192256id_/https://www.racingpost.com/sport/football-tips/europa-league/thursdays-europa-league-matchday-four-predictions-odds-and-betting-tips-real-betis-and-lyon-look-closely-matched-aFtkq1Q0VShk/",
     "display_name": null,
     "speaker": "Patrick Madden",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "5011db144705df87f21fbf850f389178dd27a19a1f889c7bd9424a1253ea29de",
     "material_removed": false
    },
    "published_at": "2025-11-05T16:00:00.000Z",
    "detected_at": "2026-10-01T00:48:04.340Z",
    "executed_at": "2026-11-07T18:22:26.709Z",
    "statement_class": "priced",
    "status": "too_late",
    "cause": "counted in the restored-history series",
    "cause_code": null,
    "event": {
     "event_id": null,
     "display_name": "VfB Stuttgart v Feyenoord",
     "competition_name": "UEFA Europa League",
     "starts_at": "2025-11-06T20:00:00.000Z",
     "url": null,
     "scoreline": "2-0"
    },
    "market_label": "Match result and both teams to score",
    "outcome_label": "VfB Stuttgart win, both teams to score: yes",
    "odds_set": {
     "by_author": "3.3",
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": "3.0500",
     "closing_source": "last pre-match price in archive (~8–15 h before kick-off)"
    },
    "stake_hundredths": 10000,
    "result": "loss",
    "simulation_change_hundredths": -10000,
    "bankroll_after_hundredths": null,
    "executed_by": "ours",
    "series_label": "Restored, at the last pre-match price in archive (~8–15 h before kick-off)",
    "withdrawn": false,
    "provenance": "restored_archive",
    "provenance_words": "Archived before kick-off",
    "archive_snapshot_at": "2025-11-05T19:22:56.000Z",
    "dates": {
     "fragment_at": "2025-11-05T16:00:00.000Z",
     "fragment_basis": "page",
     "source_page_at": "2025-11-05T16:00:00.000Z",
     "detected_at": "2026-10-01T00:48:04.340Z",
     "archive_snapshot_at": "2025-11-05T19:22:56.000Z",
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "prematch_web_archive",
    "origin_detail": null,
    "origin_words": "Archived before kick-off",
    "added_on": "Added to our record on 1 Oct 2026",
    "late_publication": null,
    "author_claim": {
     "market_label": "Match result and both teams to score",
     "choice": "VfB Stuttgart win, both teams to score: yes",
     "author_odds": "3.3",
     "market_key": "both_teams_score_and_result",
     "choice_key": "1-yes",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Match result and both teams to score: VfB Stuttgart win, both teams to score: yes at 3.3"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "2-0",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "retro-1.0",
     "in_words": "Lost: the final score was VfB Stuttgart 2-0 Feyenoord."
    },
    "settlements": [
     {
      "operation_id": "6e3561515331c748bb8d1029119822cb8e1e83ee80b1566ad17ad5dd9ca23151",
      "series_key": "retro_author_price",
      "series_label": "Restored, at the author's stated price",
      "derived": false,
      "site_simulation": true,
      "author_words": true,
      "market_label": "Match result and both teams to score",
      "choice": "VfB Stuttgart win, both teams to score: yes",
      "decimal_odds": "3.3",
      "odds_role": "author_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-11-07T18:22:26.699Z",
      "methodology_version": "retro-1.0",
      "on_claim_market": true,
      "replaced": false
     },
     {
      "operation_id": "2ecc934b699a34004b93615641b9c9da79c433d783d23de3bd53dfdbfbc06e65",
      "series_key": "retro_market_closing_sm",
      "series_label": "Restored, at the last pre-match price in archive (~8–15 h before kick-off)",
      "derived": false,
      "site_simulation": true,
      "author_words": true,
      "market_label": "Match result and both teams to score",
      "choice": "VfB Stuttgart win, both teams to score: yes",
      "decimal_odds": "3.0500",
      "odds_role": "closing_odds",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-11-07T18:22:26.709Z",
      "methodology_version": "retro-1.1",
      "on_claim_market": true,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "settled_pick",
    "authorship": {
     "material_author": "Patrick Madden",
     "publisher": "racingpost.com",
     "forecaster": "Patrick Madden",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.racingpost.com/sport/football-tips/europa-league/thursdays-europa-league-matchday-four-predictions-odds-and-betting-tips-real-betis-and-lyon-look-closely-matched-aFtkq1Q0VShk/",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "VfB Stuttgart win, both teams to score: yes"
   }
  },
  {
   "record_id": "n-e258e3c76e0b47329e640d81",
   "url": "/authors/patrick-madden/#pick-n-e258e3c76e0b47329e640d81",
   "match": "PAOK v BSC Young Boys",
   "match_url": null,
   "kickoff": "2025-11-06T20:00:00.000Z",
   "competition": "UEFA Europa League",
   "lead_hours": -7876.8,
   "market_code": "both_teams_score_and_result",
   "author_said": "Match result and both teams to score: PAOK win, both teams to score: yes at 3.25",
   "quote": null,
   "group": "settled",
   "outcome": "Lost",
   "claim_outcome": "Lost",
   "final_score": "4-0",
   "reason": null,
   "reason_code": null,
   "points_hundredths": -10000,
   "series_code": "retro_market_closing_sm",
   "series_short": "last pre-match archive price, restored",
   "author_price": "3.25",
   "settled_price": "2.7500",
   "published_at": "2025-11-05T16:00:00.000Z",
   "recorded_at": "2026-10-01T00:48:04.340Z",
   "origin": "Archived before kick-off",
   "record_part": "archived",
   "record_part_words": "Archived before kick-off",
   "in_headline": true,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-e258e3c76e0b47329e640d81",
    "quote_text": "PAOK to win and both teams to score vs Young Boys\nDiscovery+, 8pm Thursday\n2pts 9-4 Hills",
    "fragment_from": 1460,
    "fragment_to": 1549,
    "quote_allowed": true,
    "source_info": {
     "medium": "website",
     "url": "https://web.archive.org/web/20251105192256id_/https://www.racingpost.com/sport/football-tips/europa-league/thursdays-europa-league-matchday-four-predictions-odds-and-betting-tips-real-betis-and-lyon-look-closely-matched-aFtkq1Q0VShk/",
     "display_name": null,
     "speaker": "Patrick Madden",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "5011db144705df87f21fbf850f389178dd27a19a1f889c7bd9424a1253ea29de",
     "material_removed": false
    },
    "published_at": "2025-11-05T16:00:00.000Z",
    "detected_at": "2026-10-01T00:48:04.340Z",
    "executed_at": "2026-11-07T18:22:26.688Z",
    "statement_class": "priced",
    "status": "too_late",
    "cause": "counted in the restored-history series",
    "cause_code": null,
    "event": {
     "event_id": null,
     "display_name": "PAOK v BSC Young Boys",
     "competition_name": "UEFA Europa League",
     "starts_at": "2025-11-06T20:00:00.000Z",
     "url": null,
     "scoreline": "4-0"
    },
    "market_label": "Match result and both teams to score",
    "outcome_label": "PAOK win, both teams to score: yes",
    "odds_set": {
     "by_author": "3.25",
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": "2.7500",
     "closing_source": "last pre-match price in archive (~8–15 h before kick-off)"
    },
    "stake_hundredths": 10000,
    "result": "loss",
    "simulation_change_hundredths": -10000,
    "bankroll_after_hundredths": null,
    "executed_by": "ours",
    "series_label": "Restored, at the last pre-match price in archive (~8–15 h before kick-off)",
    "withdrawn": false,
    "provenance": "restored_archive",
    "provenance_words": "Archived before kick-off",
    "archive_snapshot_at": "2025-11-05T19:22:56.000Z",
    "dates": {
     "fragment_at": "2025-11-05T16:00:00.000Z",
     "fragment_basis": "page",
     "source_page_at": "2025-11-05T16:00:00.000Z",
     "detected_at": "2026-10-01T00:48:04.340Z",
     "archive_snapshot_at": "2025-11-05T19:22:56.000Z",
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "prematch_web_archive",
    "origin_detail": null,
    "origin_words": "Archived before kick-off",
    "added_on": "Added to our record on 1 Oct 2026",
    "late_publication": null,
    "author_claim": {
     "market_label": "Match result and both teams to score",
     "choice": "PAOK win, both teams to score: yes",
     "author_odds": "3.25",
     "market_key": "both_teams_score_and_result",
     "choice_key": "1-yes",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Match result and both teams to score: PAOK win, both teams to score: yes at 3.25"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "4-0",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "retro-1.0",
     "in_words": "Lost: the final score was PAOK 4-0 BSC Young Boys."
    },
    "settlements": [
     {
      "operation_id": "d158e195d7002b6136a0f891d1970edaab21fbb5ce7b57ca9f76c486cd5a7de2",
      "series_key": "retro_author_price",
      "series_label": "Restored, at the author's stated price",
      "derived": false,
      "site_simulation": true,
      "author_words": true,
      "market_label": "Match result and both teams to score",
      "choice": "PAOK win, both teams to score: yes",
      "decimal_odds": "3.25",
      "odds_role": "author_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-11-07T18:22:26.681Z",
      "methodology_version": "retro-1.0",
      "on_claim_market": true,
      "replaced": false
     },
     {
      "operation_id": "0c61017baf5fb5bb25947fbe4863fc1dd4610d9c053714170abf696f6775f05b",
      "series_key": "retro_market_closing_sm",
      "series_label": "Restored, at the last pre-match price in archive (~8–15 h before kick-off)",
      "derived": false,
      "site_simulation": true,
      "author_words": true,
      "market_label": "Match result and both teams to score",
      "choice": "PAOK win, both teams to score: yes",
      "decimal_odds": "2.7500",
      "odds_role": "closing_odds",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-11-07T18:22:26.688Z",
      "methodology_version": "retro-1.1",
      "on_claim_market": true,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "settled_pick",
    "authorship": {
     "material_author": "Patrick Madden",
     "publisher": "racingpost.com",
     "forecaster": "Patrick Madden",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.racingpost.com/sport/football-tips/europa-league/thursdays-europa-league-matchday-four-predictions-odds-and-betting-tips-real-betis-and-lyon-look-closely-matched-aFtkq1Q0VShk/",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "PAOK win, both teams to score: yes"
   }
  },
  {
   "record_id": "n-60a1419279a9873daeee325b",
   "url": "/authors/patrick-madden/#pick-n-60a1419279a9873daeee325b",
   "match": "Real Betis v Olympique Lyonnais",
   "match_url": null,
   "kickoff": "2025-11-06T20:00:00.000Z",
   "competition": "UEFA Europa League",
   "lead_hours": -7876.8,
   "market_code": "1x2",
   "author_said": "1X2, match result: draw at 3.8",
   "quote": null,
   "group": "settled",
   "outcome": "Lost",
   "claim_outcome": "Lost",
   "final_score": "2-0",
   "reason": null,
   "reason_code": null,
   "points_hundredths": -10000,
   "series_code": "retro_market_closing_sm",
   "series_short": "last pre-match archive price, restored",
   "author_price": "3.8",
   "settled_price": "4.2000",
   "published_at": "2025-11-05T16:00:00.000Z",
   "recorded_at": "2026-10-01T00:48:04.340Z",
   "origin": "Archived before kick-off",
   "record_part": "archived",
   "record_part_words": "Archived before kick-off",
   "in_headline": true,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-60a1419279a9873daeee325b",
    "quote_text": "Draw in Real Betis vs Lyon\nDiscovery+, 8pm Thursday\n2pts 14-5 Betfair, Paddy Power",
    "fragment_from": 1376,
    "fragment_to": 1458,
    "quote_allowed": true,
    "source_info": {
     "medium": "website",
     "url": "https://web.archive.org/web/20251105192256id_/https://www.racingpost.com/sport/football-tips/europa-league/thursdays-europa-league-matchday-four-predictions-odds-and-betting-tips-real-betis-and-lyon-look-closely-matched-aFtkq1Q0VShk/",
     "display_name": null,
     "speaker": "Patrick Madden",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "5011db144705df87f21fbf850f389178dd27a19a1f889c7bd9424a1253ea29de",
     "material_removed": false
    },
    "published_at": "2025-11-05T16:00:00.000Z",
    "detected_at": "2026-10-01T00:48:04.340Z",
    "executed_at": "2026-11-07T18:22:26.671Z",
    "statement_class": "priced",
    "status": "too_late",
    "cause": "counted in the restored-history series",
    "cause_code": null,
    "event": {
     "event_id": null,
     "display_name": "Real Betis v Olympique Lyonnais",
     "competition_name": "UEFA Europa League",
     "starts_at": "2025-11-06T20:00:00.000Z",
     "url": null,
     "scoreline": "2-0"
    },
    "market_label": "1X2, match result",
    "outcome_label": "draw",
    "odds_set": {
     "by_author": "3.8",
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": "4.2000",
     "closing_source": "last pre-match price in archive (~8–15 h before kick-off)"
    },
    "stake_hundredths": 10000,
    "result": "loss",
    "simulation_change_hundredths": -10000,
    "bankroll_after_hundredths": null,
    "executed_by": "ours",
    "series_label": "Restored, at the last pre-match price in archive (~8–15 h before kick-off)",
    "withdrawn": false,
    "provenance": "restored_archive",
    "provenance_words": "Archived before kick-off",
    "archive_snapshot_at": "2025-11-05T19:22:56.000Z",
    "dates": {
     "fragment_at": "2025-11-05T16:00:00.000Z",
     "fragment_basis": "page",
     "source_page_at": "2025-11-05T16:00:00.000Z",
     "detected_at": "2026-10-01T00:48:04.340Z",
     "archive_snapshot_at": "2025-11-05T19:22:56.000Z",
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "prematch_web_archive",
    "origin_detail": null,
    "origin_words": "Archived before kick-off",
    "added_on": "Added to our record on 1 Oct 2026",
    "late_publication": null,
    "author_claim": {
     "market_label": "1X2, match result",
     "choice": "draw",
     "author_odds": "3.8",
     "market_key": "1x2",
     "choice_key": "X",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "1X2, match result: draw at 3.8"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "2-0",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "retro-1.0",
     "in_words": "Lost: the final score was Real Betis 2-0 Olympique Lyonnais."
    },
    "settlements": [
     {
      "operation_id": "790a817d68ebc6e2f357d9df75b5240cced23ec824bbdc27181e135c12193b80",
      "series_key": "retro_author_price",
      "series_label": "Restored, at the author's stated price",
      "derived": false,
      "site_simulation": true,
      "author_words": true,
      "market_label": "1X2, match result",
      "choice": "draw",
      "decimal_odds": "3.8",
      "odds_role": "author_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-11-07T18:22:26.658Z",
      "methodology_version": "retro-1.0",
      "on_claim_market": true,
      "replaced": false
     },
     {
      "operation_id": "a630ffe4adbda1c1171d49704b6f555041b1359850c417cf4f745aede2fcbe07",
      "series_key": "retro_market_closing_sm",
      "series_label": "Restored, at the last pre-match price in archive (~8–15 h before kick-off)",
      "derived": false,
      "site_simulation": true,
      "author_words": true,
      "market_label": "1X2, match result",
      "choice": "draw",
      "decimal_odds": "4.2000",
      "odds_role": "closing_odds",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-11-07T18:22:26.671Z",
      "methodology_version": "retro-1.1",
      "on_claim_market": true,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "settled_pick",
    "authorship": {
     "material_author": "Patrick Madden",
     "publisher": "racingpost.com",
     "forecaster": "Patrick Madden",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.racingpost.com/sport/football-tips/europa-league/thursdays-europa-league-matchday-four-predictions-odds-and-betting-tips-real-betis-and-lyon-look-closely-matched-aFtkq1Q0VShk/",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "a draw"
   }
  }
 ],
 "lead_time": {
  "contract_version": 1,
  "threshold_hours": 2.0,
  "picks": 3,
  "before_kickoff": 0,
  "after_kickoff": 3,
  "at_least_2h": 0,
  "share_2h_plus": 0.0,
  "median_hours": null,
  "min_hours": null,
  "max_hours": null,
  "words": "Hours between the moment we recorded the pick and kick-off; the share counts picks recorded at least two hours before kick-off."
 },
 "baseline": {
  "contract_version": 1,
  "series_code": "market_price",
  "rule": "recorded-line-1.0",
  "state": "none",
  "picks": 0,
  "settled_picks_all": 0,
  "excluded": {
   "market_without_favourite": 0,
   "no_recorded_line": 0,
   "favourite_not_settled": 0
  },
  "staked_hundredths": 0,
  "author_net_hundredths": 0,
  "favourite_net_hundredths": 0,
  "difference_hundredths": 0,
  "author_return_percent": null,
  "favourite_return_percent": null,
  "author_hit_rate": null,
  "favourite_hit_rate": null,
  "picked_favourite_share": null,
  "by_market": [],
  "return_over_time": [],
  "words": "Same stakes, same matches, same recorded moment: the author’s picks against backing the market favourite by the recorded line. Only markets with a single shortest price count (match result, over/under, both teams to score, handicap); correct score and combined markets are left out."
 },
 "pagination": {
  "per_page": 20,
  "total": 3,
  "pages": 1,
  "page_urls": [
   "/authors/patrick-madden/"
  ],
  "groups": {
   "settled": 3,
   "pending": 0,
   "excluded": 0
  },
  "continuation": "by_time",
  "page": 1,
  "first": 1,
  "last": 3,
  "author_url": "/authors/patrick-madden/",
  "current": false
 },
 "title_tag": "Patrick Madden Predictions: Verified Record, Results and Sources",
 "calculator": null,
 "person": {
  "person_id": "o-5468574286cd70d623e7799b",
  "type_code": "individual",
  "name_shown": "Patrick Madden",
  "main_entity": "e-5468574286cd70d623e7799b",
  "identity": {
   "status": "not_verified",
   "is_verified": false,
   "when": null,
   "source_list": []
  },
  "platform_list": [
   {
    "entity_ref": "e-5468574286cd70d623e7799b",
    "medium": "Racing Post",
    "channel": "section pages",
    "domain": "racingpost.com",
    "source_info": "racing-post",
    "byline": "Patrick Madden",
    "url": "/sources/racing-post/",
    "summary": {
     "statements": 4,
     "predictions": 3,
     "settled_picks": 3,
     "headline_kind": "historical_simulation",
     "return_percent": -100.0,
     "headline_part": "archived",
     "period_from": "2026-10-01",
     "period_to": "2026-10-01"
    }
   }
  ],
  "previously": [],
  "trust_tier": "probation"
 },
 "data_revision": {
  "data_version": "2026-10-09.2",
  "updated": "2026-10-09",
  "current_release": "2026-11-07.2",
  "data_as_of": "2026-11-07",
  "method_version": "retro-1.1",
  "price_rule": "reconstructed at archived prices (~8–15 h before kick-off), archived before kick-off only",
  "series_code": "retro_market_closing_sm:archived",
  "sample": {
   "settled_picks": 3,
   "matches": 3,
   "void": 0,
   "period_from": "2025-11-06",
   "period_to": "2025-11-06",
   "composition_hash": "e2e23dae6922867212b526f1b37647127c596892c454938a59ace82bfbee320f"
  },
  "changes_url": "#changes",
  "corrections_url": "/corrections/"
 },
 "number_changes": [
  {
   "id": "zc-9b4edf716cbf46869c92",
   "at": "2026-10-09T12:49:36.723Z",
   "data_version": "2026-10-09.2",
   "previous_data_version": "2026-10-09.1",
   "url": "/authors/patrick-madden/",
   "category": "method_changed",
   "category_words": "Method changed",
   "before": {
    "data_version": "2026-10-09.1",
    "return_percent": "-100.00",
    "settled_picks": 3,
    "matches": 3,
    "void": 0,
    "series_code": "retro_author_price",
    "price_rule": "author's stated odds, restored",
    "method_version": "retro-1.0",
    "composition_hash": "e2e23dae6922867212b526f1b37647127c596892c454938a59ace82bfbee320f",
    "text": "−300.00 points on 3 settled picks across 3 matches · author's stated odds, restored · method retro-1.0"
   },
   "after": {
    "data_version": "2026-10-09.2",
    "return_percent": "-100.00",
    "settled_picks": 3,
    "matches": 3,
    "void": 0,
    "series_code": "retro_market_closing_sm:archived",
    "price_rule": "historical simulation at the last pre-match archive price (~8–15 h before kick-off), archived before kick-off only",
    "method_version": "retro-1.1",
    "composition_hash": "e2e23dae6922867212b526f1b37647127c596892c454938a59ace82bfbee320f",
    "text": "−300.00 points on 3 settled picks across 3 matches · historical simulation at the last pre-match archive price (~8–15 h before kick-off), archived before kick-off only · method retro-1.1"
   },
   "reason": "The headline rule changed on 9 October 2026: the headline is the live record at our recorded market price; without one, a historical simulation at the last pre-match archive price (~8–15 h before kick-off) on picks archived before kick-off only. Picks first found after the match no longer enter the headline number. Was: author's stated odds, restored (3 settled picks). Now: historical simulation at the last pre-match archive price (~8–15 h before kick-off), archived before kick-off only (3 settled picks).",
   "checked_by": "comparison of data versions",
   "affected_records": {
    "added": 0,
    "removed": 0,
    "changed": 0
   },
   "correction_id": "i-81172dd824003b98333c"
  },
  {
   "id": "zc-ea2ff9025733b526f31e",
   "at": "2026-10-09T11:08:54.367Z",
   "data_version": "2026-10-09.1",
   "previous_data_version": "2026-09-30.1",
   "url": "/authors/patrick-madden/",
   "category": "coverage_extended",
   "category_words": "Coverage extended",
   "before": null,
   "after": {
    "data_version": "2026-10-09.1",
    "return_percent": "-100.00",
    "settled_picks": 3,
    "matches": 3,
    "void": 0,
    "series_code": "retro_author_price",
    "price_rule": "author's stated odds, restored",
    "method_version": "retro-1.0",
    "composition_hash": "e2e23dae6922867212b526f1b37647127c596892c454938a59ace82bfbee320f",
    "text": "−300.00 points on 3 settled picks across 3 matches · author's stated odds, restored · method retro-1.0"
   },
   "reason": "First headline number for this record: 3 settled picks in the series “author's stated odds, restored”.",
   "checked_by": "comparison of data versions",
   "affected_records": {
    "added": 3,
    "removed": 0,
    "changed": 0
   },
   "correction_id": null
  }
 ],
 "counts_by_slice": {
  "portions": [
   {
    "code": "archived",
    "title": "Archived before kick-off",
    "price_rule": "Reconstructed at archived prices",
    "settled_picks": 3,
    "total_check": true,
    "market_list": [
     {
      "code_name": "both_teams_score_and_result",
      "in_words": "Result and both teams to score",
      "url": null,
      "settled_picks": 2,
      "won": 0,
      "void": 0,
      "net_points_hundredths": -20000,
      "return_percent": "-100.0",
      "period_from": "2025-11-06",
      "period_to": "2025-11-06",
      "small_sample": true,
      "average_odds": "3.27",
      "odds_from_author": 2,
      "odds_from_snapshot": 0
     },
     {
      "code_name": "1x2",
      "in_words": "Match result",
      "url": null,
      "settled_picks": 1,
      "won": 0,
      "void": 0,
      "net_points_hundredths": -10000,
      "return_percent": "-100.0",
      "period_from": "2025-11-06",
      "period_to": "2025-11-06",
      "small_sample": true,
      "average_odds": "3.80",
      "odds_from_author": 1,
      "odds_from_snapshot": 0
     }
    ],
    "leagues": [
     {
      "code_name": "UEFA Europa League",
      "in_words": "UEFA Europa League",
      "url": "/football/competitions/uefa-europa-league/",
      "settled_picks": 3,
      "won": 0,
      "void": 0,
      "net_points_hundredths": -30000,
      "return_percent": "-100.0",
      "period_from": "2025-11-06",
      "period_to": "2025-11-06",
      "small_sample": true,
      "average_odds": "3.45",
      "odds_from_author": 3,
      "odds_from_snapshot": 0,
      "league_markets": [
       {
        "code_name": "both_teams_score_and_result",
        "in_words": "Result and both teams to score",
        "settled_picks": 2,
        "won": 0,
        "void": 0,
        "net_points_hundredths": -20000,
        "return_percent": null,
        "period_from": "2025-11-06",
        "period_to": "2025-11-06",
        "small_sample": true,
        "average_odds": "3.27",
        "odds_from_author": 2,
        "odds_from_snapshot": 0
       },
       {
        "code_name": "1x2",
        "in_words": "Match result",
        "settled_picks": 1,
        "won": 0,
        "void": 0,
        "net_points_hundredths": -10000,
        "return_percent": null,
        "period_from": "2025-11-06",
        "period_to": "2025-11-06",
        "small_sample": true,
        "average_odds": "3.80",
        "odds_from_author": 1,
        "odds_from_snapshot": 0
       }
      ]
     }
    ],
    "best_slice": null
   }
  ],
  "best_slice": null
 },
 "author_card": {
  "body": "Record tracked by Forecast Record since 1 October 2026 · 3 predictions · last change 1 October 2026",
  "url": "https://forecastrecord.com/authors/patrick-madden/",
  "s": "2026-10-01",
  "prediction_count": 3,
  "refreshed_at": "2026-10-01",
  "html": "<a href=\"https://forecastrecord.com/authors/patrick-madden/\">Record tracked by Forecast Record since 1 October 2026 · 3 predictions · last change 1 October 2026</a>"
 },
 "trust": {
  "tier": "probation",
  "in_words": "Probation",
  "settled_count": 3,
  "days": 1,
  "weeks": 1,
  "archive": false,
  "in_review": false,
  "own_page": false,
  "won_count": 0,
  "first_settled_on": "2025-11-06",
  "products_in_level": 1,
  "rule": {
   "tracked": {
    "min_settled": 30,
    "min_days": 30,
    "min_distinct_weeks": 2,
    "no_violations": true
   },
   "established": {
    "min_settled": 100,
    "min_days": 90
   }
  },
  "show": true
 },
 "colleagues": [
  {
   "source_code": "racing-post",
   "source_name": "Racing Post",
   "source_url": "/sources/racing-post/",
   "label": "Also at Racing Post",
   "authors_total": 15,
   "authors": [
    {
     "name": "James Milton",
     "url": "/authors/james-milton/",
     "headline_part": "archived",
     "settled_picks": 124,
     "return_percent": null,
     "small_sample": true,
     "average_odds": null,
     "odds_from_author": null,
     "odds_from_snapshot": null
    },
    {
     "name": "Liam Flin",
     "url": "/authors/liam-flin/",
     "headline_part": "archived",
     "settled_picks": 58,
     "return_percent": null,
     "small_sample": true,
     "average_odds": null,
     "odds_from_author": null,
     "odds_from_snapshot": null
    },
    {
     "name": "Jack Ogalbe",
     "url": "/authors/jack-ogalbe/",
     "headline_part": "archived",
     "settled_picks": 44,
     "return_percent": null,
     "small_sample": true,
     "average_odds": null,
     "odds_from_author": null,
     "odds_from_snapshot": null
    },
    {
     "name": "Ian Wilkerson",
     "url": "/authors/ian-wilkerson/",
     "headline_part": "archived",
     "settled_picks": 37,
     "return_percent": null,
     "small_sample": true,
     "average_odds": null,
     "odds_from_author": null,
     "odds_from_snapshot": null
    },
    {
     "name": "Dan Childs",
     "url": "/authors/dan-childs/",
     "headline_part": "live",
     "settled_picks": 24,
     "return_percent": null,
     "small_sample": true,
     "average_odds": null,
     "odds_from_author": null,
     "odds_from_snapshot": null
    },
    {
     "name": "Joe Casey",
     "url": "/authors/joe-casey/",
     "headline_part": "live",
     "settled_picks": 19,
     "return_percent": null,
     "small_sample": true,
     "average_odds": null,
     "odds_from_author": null,
     "odds_from_snapshot": null
    },
    {
     "name": "Aaron Ashley",
     "url": "/authors/aaron-ashley/",
     "headline_part": "live",
     "settled_picks": 15,
     "return_percent": null,
     "small_sample": true,
     "average_odds": null,
     "odds_from_author": null,
     "odds_from_snapshot": null
    },
    {
     "name": "James Mason",
     "url": "/authors/james-mason/",
     "headline_part": "archived",
     "settled_picks": 14,
     "return_percent": "16.1",
     "small_sample": false,
     "average_odds": "4.00",
     "odds_from_author": 10,
     "odds_from_snapshot": 4
    },
    {
     "name": "Steve Davies",
     "url": "/authors/steve-davies/",
     "headline_part": "archived",
     "settled_picks": 14,
     "return_percent": null,
     "small_sample": true,
     "average_odds": null,
     "odds_from_author": null,
     "odds_from_snapshot": null
    },
    {
     "name": "Jamie Griffith",
     "url": "/authors/jamie-griffith/",
     "headline_part": "live",
     "settled_picks": 12,
     "return_percent": null,
     "small_sample": true,
     "average_odds": null,
     "odds_from_author": null,
     "odds_from_snapshot": null
    },
    {
     "name": "Tom Hill",
     "url": "/authors/tom-hill/",
     "headline_part": "archived",
     "settled_picks": 11,
     "return_percent": null,
     "small_sample": true,
     "average_odds": null,
     "odds_from_author": null,
     "odds_from_snapshot": null
    },
    {
     "name": "Tom McGarry",
     "url": "/authors/tom-mcgarry/",
     "headline_part": "archived",
     "settled_picks": 11,
     "return_percent": null,
     "small_sample": true,
     "average_odds": null,
     "odds_from_author": null,
     "odds_from_snapshot": null
    }
   ]
  }
 ],
 "author_type": "Pundit",
 "data_changes": {
  "added_later": "3 records added on 1 Oct 2026 from archived copies. The current numbers include them; numbers published earlier, including the record before each match, do not change.",
  "records_corrected": 0,
  "last_correction_at": "2026-10-09T12:49:36.723Z",
  "corrections_url": "/corrections/"
 },
 "entity_id": "person:o-5468574286cd70d623e7799b",
 "source_revision": 207,
 "related": [
  {
   "url": "/cards/e-5468574286cd70d623e7799b-bank/",
   "name": "Bankroll card — Patrick Madden",
   "detail": null,
   "source_group": "cards"
  },
  {
   "url": "/cards/e-5468574286cd70d623e7799b-said-vs-happened/",
   "name": "Said → happened — Patrick Madden",
   "detail": null,
   "source_group": "cards"
  }
 ],
 "number_sets": [
  {
   "set": "profile.settled",
   "entity": "e-5468574286cd70d623e7799b",
   "value": 3,
   "where": "coverage",
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "profile.predictions",
   "entity": "e-5468574286cd70d623e7799b",
   "value": 3,
   "where": "coverage",
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "profile.part.live",
   "entity": "e-5468574286cd70d623e7799b",
   "value": 0,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "profile.part.archived",
   "entity": "e-5468574286cd70d623e7799b",
   "value": 3,
   "where": "origin",
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "profile.part.found_after",
   "entity": "e-5468574286cd70d623e7799b",
   "value": 0,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "profile.checked.live",
   "entity": "e-5468574286cd70d623e7799b",
   "value": 0,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "profile.checked.archived",
   "entity": "e-5468574286cd70d623e7799b",
   "value": 3,
   "where": "origin",
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "profile.checked",
   "entity": "e-5468574286cd70d623e7799b",
   "value": 3,
   "where": "trust-level",
   "as_of": "2026-11-07T19:52:23.438Z",
   "label": true
  }
 ]
}
