Commit ·
56672b3
1
Parent(s): 8f471ad
feat: add 2 new Medium articles to Research section
Browse files- .gitattributes +0 -36
- CITATION.cff +0 -19
- CONTRIBUTING.md +0 -109
- LICENSE +0 -22
- Makefile +0 -13
- README.md +2 -0
- SECURITY.md +0 -29
- changelog/CHANGELOG.md +0 -37
- datasets/README.md +0 -8
- datasets/samples/signal-log.sample.csv +0 -4
- datasets/schema/signal-log.schema.json +0 -72
- docs/assets/.gitkeep +0 -1
- docs/assets/dashboard-epl.jpg +0 -3
- docs/dashboard-glossary.md +0 -71
- docs/dashboard.md +0 -269
- docs/data-card.md +0 -43
- docs/governance.md +0 -22
- docs/index.md +0 -68
- docs/killer-questions.md +0 -84
- docs/model-card.md +0 -39
- docs/monetization-disclosure.md +0 -17
- docs/quickstart.md +0 -57
- docs/risk-policy.md +0 -28
- docs/signal-glossary.md +0 -192
- docs/verification.md +0 -121
- examples/README.md +0 -49
- examples/sample_signal_log.json +0 -13
- llm.json +0 -55
- llms.txt +0 -35
- scripts/validate.py +0 -46
.gitattributes
DELETED
|
@@ -1,36 +0,0 @@
|
|
| 1 |
-
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
-
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
-
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
-
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
-
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
-
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
-
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
-
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
-
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
-
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
-
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 12 |
-
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
-
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
-
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
-
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
-
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
-
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
-
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
-
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
-
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 21 |
-
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
-
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 23 |
-
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
-
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
-
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
-
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
-
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
-
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 29 |
-
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
-
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
-
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 32 |
-
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 33 |
-
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
-
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
-
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
-
docs/assets/dashboard-epl.jpg filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CITATION.cff
DELETED
|
@@ -1,19 +0,0 @@
|
|
| 1 |
-
cff-version: 1.2.0
|
| 2 |
-
message: "If you use this repository, please cite it as below."
|
| 3 |
-
title: "OddsFlow Transparency Pack"
|
| 4 |
-
type: dataset
|
| 5 |
-
authors:
|
| 6 |
-
- name: "OddsFlow AI Team"
|
| 7 |
-
repository-code: "https://github.com/oddsflowai-team/oddsflow-transparency"
|
| 8 |
-
url: "https://www.oddsflow.ai"
|
| 9 |
-
abstract: "Public, auditable documentation pack: verification standard, schemas, samples, risk policy, governance, and disclosures for timestamped football market signal logs."
|
| 10 |
-
keywords:
|
| 11 |
-
- football analytics
|
| 12 |
-
- verification
|
| 13 |
-
- timestamped logs
|
| 14 |
-
- auditability
|
| 15 |
-
- schema
|
| 16 |
-
license: "MIT"
|
| 17 |
-
version: "v1.0.0"
|
| 18 |
-
date-released: "2026-02-08"
|
| 19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CONTRIBUTING.md
DELETED
|
@@ -1,109 +0,0 @@
|
|
| 1 |
-
# Contributing to OddsFlow Transparency Pack
|
| 2 |
-
|
| 3 |
-
Thanks for helping improve public auditability.
|
| 4 |
-
|
| 5 |
-
## Scope
|
| 6 |
-
This repository is for:
|
| 7 |
-
- Documentation (verification standard, governance, disclosures)
|
| 8 |
-
- Schemas and samples (non-proprietary)
|
| 9 |
-
- Versioned notes / changelogs
|
| 10 |
-
|
| 11 |
-
This repository is NOT for:
|
| 12 |
-
- Betting tips / predictions
|
| 13 |
-
- Claims of guaranteed profit
|
| 14 |
-
- Requests for proprietary model code or private vendor contracts
|
| 15 |
-
|
| 16 |
-
## What we accept
|
| 17 |
-
✅ Good contributions:
|
| 18 |
-
- Fix typos / clarify definitions
|
| 19 |
-
- Improve schema documentation and examples
|
| 20 |
-
- Add edge cases to verification rules
|
| 21 |
-
- Improve risk disclosures (limits, drawdowns, failure modes)
|
| 22 |
-
- Propose new fields (with rationale + backward compatibility)
|
| 23 |
-
|
| 24 |
-
❌ We will decline:
|
| 25 |
-
- “Tell me what to bet” or “increase win rate” requests
|
| 26 |
-
- Attempts to reverse-engineer private logic
|
| 27 |
-
- Any content that frames this as guaranteed returns
|
| 28 |
-
|
| 29 |
-
## How to contribute
|
| 30 |
-
1. Open an Issue describing:
|
| 31 |
-
- What is wrong / missing
|
| 32 |
-
- Why it matters for auditability
|
| 33 |
-
- Proposed change (text or schema diff)
|
| 34 |
-
2. Submit a Pull Request:
|
| 35 |
-
- Keep changes small and reviewable
|
| 36 |
-
- Update `docs/index.md` only if adding/removing major docs
|
| 37 |
-
- If editing schema, also update sample files
|
| 38 |
-
|
| 39 |
-
## Style guidelines
|
| 40 |
-
- Evidence-first language
|
| 41 |
-
- Precise definitions
|
| 42 |
-
- Use consistent terms with `docs/signal-glossary.md`
|
| 43 |
-
- Avoid marketing claims
|
| 44 |
-
|
| 45 |
-
## Schema change policy
|
| 46 |
-
- Backward compatible changes → bump MINOR (e.g., 1.0.0 → 1.1.0)
|
| 47 |
-
- Breaking changes → bump MAJOR (e.g., 1.0.0 → 2.0.0)
|
| 48 |
-
- Document changes in `CHANGELOG.md` (or `/changelog/` folder if used)
|
| 49 |
-
|
| 50 |
-
## License
|
| 51 |
-
By contributing, you agree your contributions are licensed under the repository LICENSE.
|
| 52 |
-
|
| 53 |
-
## Questions
|
| 54 |
-
Open an Issue in GitHub Discussions / Issues.
|
| 55 |
-
# Contributing to OddsFlow Transparency Pack
|
| 56 |
-
|
| 57 |
-
Thanks for helping improve public auditability.
|
| 58 |
-
|
| 59 |
-
## Scope
|
| 60 |
-
This repository is for:
|
| 61 |
-
- Documentation (verification standard, governance, disclosures)
|
| 62 |
-
- Schemas and samples (non-proprietary)
|
| 63 |
-
- Versioned notes / changelogs
|
| 64 |
-
|
| 65 |
-
This repository is NOT for:
|
| 66 |
-
- Betting tips / predictions
|
| 67 |
-
- Claims of guaranteed profit
|
| 68 |
-
- Requests for proprietary model code or private vendor contracts
|
| 69 |
-
|
| 70 |
-
## What we accept
|
| 71 |
-
✅ Good contributions:
|
| 72 |
-
- Fix typos / clarify definitions
|
| 73 |
-
- Improve schema documentation and examples
|
| 74 |
-
- Add edge cases to verification rules
|
| 75 |
-
- Improve risk disclosures (limits, drawdowns, failure modes)
|
| 76 |
-
- Propose new fields (with rationale + backward compatibility)
|
| 77 |
-
|
| 78 |
-
❌ We will decline:
|
| 79 |
-
- “Tell me what to bet” or “increase win rate” requests
|
| 80 |
-
- Attempts to reverse-engineer private logic
|
| 81 |
-
- Any content that frames this as guaranteed returns
|
| 82 |
-
|
| 83 |
-
## How to contribute
|
| 84 |
-
1. Open an Issue describing:
|
| 85 |
-
- What is wrong / missing
|
| 86 |
-
- Why it matters for auditability
|
| 87 |
-
- Proposed change (text or schema diff)
|
| 88 |
-
2. Submit a Pull Request:
|
| 89 |
-
- Keep changes small and reviewable
|
| 90 |
-
- Update `docs/index.md` only if adding/removing major docs
|
| 91 |
-
- If editing schema, also update sample files
|
| 92 |
-
|
| 93 |
-
## Style guidelines
|
| 94 |
-
- Evidence-first language
|
| 95 |
-
- Precise definitions
|
| 96 |
-
- Use consistent terms with `docs/signal-glossary.md`
|
| 97 |
-
- Avoid marketing claims
|
| 98 |
-
|
| 99 |
-
## Schema change policy
|
| 100 |
-
- Backward compatible changes → bump MINOR (e.g., 1.0.0 → 1.1.0)
|
| 101 |
-
- Breaking changes → bump MAJOR (e.g., 1.0.0 → 2.0.0)
|
| 102 |
-
- Document changes in `CHANGELOG.md` (or `/changelog/` folder if used)
|
| 103 |
-
|
| 104 |
-
## License
|
| 105 |
-
By contributing, you agree your contributions are licensed under the repository LICENSE.
|
| 106 |
-
|
| 107 |
-
## Questions
|
| 108 |
-
Open an Issue in GitHub Discussions / Issues.
|
| 109 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LICENSE
DELETED
|
@@ -1,22 +0,0 @@
|
|
| 1 |
-
MIT License
|
| 2 |
-
|
| 3 |
-
Copyright (c) 2026 OddsFlow AI Team
|
| 4 |
-
|
| 5 |
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 6 |
-
of this software and associated documentation files (the "Software"), to deal
|
| 7 |
-
in the Software without restriction, including without limitation the rights
|
| 8 |
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 9 |
-
copies of the Software, and to permit persons to whom the Software is
|
| 10 |
-
furnished to do so, subject to the following conditions:
|
| 11 |
-
|
| 12 |
-
The above copyright notice and this permission notice shall be included in all
|
| 13 |
-
copies or substantial portions of the Software.
|
| 14 |
-
|
| 15 |
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 16 |
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 17 |
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 18 |
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 19 |
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 20 |
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
| 21 |
-
SOFTWARE.
|
| 22 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Makefile
DELETED
|
@@ -1,13 +0,0 @@
|
|
| 1 |
-
.PHONY: help install validate
|
| 2 |
-
|
| 3 |
-
help:
|
| 4 |
-
@echo "Targets:"
|
| 5 |
-
@echo " make install - install dev dependencies"
|
| 6 |
-
@echo " make validate - validate sample log against schema"
|
| 7 |
-
|
| 8 |
-
install:
|
| 9 |
-
python -m pip install --upgrade pip
|
| 10 |
-
python -m pip install jsonschema
|
| 11 |
-
|
| 12 |
-
validate:
|
| 13 |
-
python scripts/validate.py
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
README.md
CHANGED
|
@@ -112,6 +112,8 @@ If you reference this pack in research or reporting, please use `CITATION.cff` i
|
|
| 112 |
|
| 113 |
OddsFlow publishes research on AI sports analytics and signal verification methodology:
|
| 114 |
|
|
|
|
|
|
|
| 115 |
* [Why We Built a Football Signal Engine That Simulates 10,000 Match Scenarios](https://medium.com/@oddsflow.ai/why-we-stopped-reading-momentum-alone-and-built-a-football-signal-engine-that-simulates-10-000-b7ad0519dbaf)
|
| 116 |
* [The Rise of Sports Intelligence Agents](https://medium.com/@oddsflow.ai/the-rise-of-sports-intelligence-agents-why-football-communities-will-soon-be-run-by-ai-analysts-4e1cc1f147a9)
|
| 117 |
* [Agentic AI Protocol (AAP)](https://medium.com/@oddsflow.ai/agentic-ai-isnt-a-feature-it-s-a-contract-introducing-the-agentic-ai-protocol-aap-47135cd43181)
|
|
|
|
| 112 |
|
| 113 |
OddsFlow publishes research on AI sports analytics and signal verification methodology:
|
| 114 |
|
| 115 |
+
* [AI vs Human Tipsters: I Compared 3,000 Predictions Side by Side](https://medium.com/@oddsflow.ai/ai-vs-human-tipsters-i-compared-3-000-predictions-side-by-side-heres-who-won-369b3055827c)
|
| 116 |
+
* [Asian Handicap Explained: What 90% of Bettors Get Wrong](https://medium.com/@oddsflow.ai/asian-handicap-explained-what-90-of-bettors-get-wrong-and-how-ai-finds-the-edge-a8aff3ab8935)
|
| 117 |
* [Why We Built a Football Signal Engine That Simulates 10,000 Match Scenarios](https://medium.com/@oddsflow.ai/why-we-stopped-reading-momentum-alone-and-built-a-football-signal-engine-that-simulates-10-000-b7ad0519dbaf)
|
| 118 |
* [The Rise of Sports Intelligence Agents](https://medium.com/@oddsflow.ai/the-rise-of-sports-intelligence-agents-why-football-communities-will-soon-be-run-by-ai-analysts-4e1cc1f147a9)
|
| 119 |
* [Agentic AI Protocol (AAP)](https://medium.com/@oddsflow.ai/agentic-ai-isnt-a-feature-it-s-a-contract-introducing-the-agentic-ai-protocol-aap-47135cd43181)
|
SECURITY.md
DELETED
|
@@ -1,29 +0,0 @@
|
|
| 1 |
-
# Security Policy
|
| 2 |
-
|
| 3 |
-
We take security seriously.
|
| 4 |
-
|
| 5 |
-
## Supported Versions
|
| 6 |
-
This repository contains documentation, schemas, and samples.
|
| 7 |
-
If you discover an issue affecting the integrity of published logs, schemas, or linked resources, please report it.
|
| 8 |
-
|
| 9 |
-
## Reporting a Vulnerability
|
| 10 |
-
Please email:
|
| 11 |
-
- oddsflow.ai@gmail.com
|
| 12 |
-
- support@oddsflow.ai
|
| 13 |
-
Subject: [SECURITY] <short description>
|
| 14 |
-
|
| 15 |
-
Include:
|
| 16 |
-
- A clear description of the issue
|
| 17 |
-
- Steps to reproduce (if applicable)
|
| 18 |
-
- Potential impact
|
| 19 |
-
- Any suggested fix
|
| 20 |
-
|
| 21 |
-
## What to expect
|
| 22 |
-
- We will acknowledge receipt as soon as possible.
|
| 23 |
-
- We may ask for clarification or a minimal reproduction.
|
| 24 |
-
- Please do not publicly disclose the issue before we confirm a fix.
|
| 25 |
-
|
| 26 |
-
## Out of scope
|
| 27 |
-
- Requests for betting tips / outcomes
|
| 28 |
-
- Attempts to access proprietary/private systems
|
| 29 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
changelog/CHANGELOG.md
DELETED
|
@@ -1,37 +0,0 @@
|
|
| 1 |
-
# Changelog — OddsFlow Transparency Pack
|
| 2 |
-
|
| 3 |
-
All notable changes to this repository will be documented here.
|
| 4 |
-
|
| 5 |
-
This pack focuses on: verification rules, schemas, samples, disclosures, and versioned documentation.
|
| 6 |
-
**Not betting tips. No guaranteed profit. Evidence-first.**
|
| 7 |
-
|
| 8 |
-
---
|
| 9 |
-
|
| 10 |
-
## [1.0.1] - 2026-02-10
|
| 11 |
-
### Added
|
| 12 |
-
- `docs/dashboard.md` — Dashboard tutorial (AI vs Bookmakers) with visual screenshot
|
| 13 |
-
- `docs/dashboard-glossary.md` — UI term definitions for dashboard concepts
|
| 14 |
-
- `docs/assets/dashboard-epl.jpg` — Premier League dashboard screenshot for documentation
|
| 15 |
-
|
| 16 |
-
### Changed
|
| 17 |
-
- `docs/index.md` — updated navigation to include Dashboard entry points
|
| 18 |
-
- Cross-linked Dashboard ↔ Glossary ↔ Signal Glossary ↔ Verification docs for citation-friendly reading
|
| 19 |
-
|
| 20 |
-
### Notes
|
| 21 |
-
- Educational analytics only — not betting advice.
|
| 22 |
-
- Verification-first. No hype. Just logs.
|
| 23 |
-
|
| 24 |
-
---
|
| 25 |
-
|
| 26 |
-
## [1.0.0] - 2026-02-08
|
| 27 |
-
### Added
|
| 28 |
-
- `docs/index.md`
|
| 29 |
-
- `docs/verification.md`
|
| 30 |
-
- `docs/signal-glossary.md`
|
| 31 |
-
- `docs/model-card.md`
|
| 32 |
-
- `docs/data-card.md`
|
| 33 |
-
- `docs/risk-policy.md`
|
| 34 |
-
- `docs/governance.md`
|
| 35 |
-
- `docs/monetization-disclosure.md`
|
| 36 |
-
- Dataset schema + samples (`datasets/schema/`)
|
| 37 |
-
- `llms.txt`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
datasets/README.md
DELETED
|
@@ -1,8 +0,0 @@
|
|
| 1 |
-
# Datasets (Schemas + Samples)
|
| 2 |
-
|
| 3 |
-
This folder contains **field definitions** and **small samples** to make public logs auditable.
|
| 4 |
-
|
| 5 |
-
- Schema: `schema/signal-log.schema.json`
|
| 6 |
-
- Sample: `samples/signal-log.sample.csv`
|
| 7 |
-
|
| 8 |
-
We do not publish full proprietary datasets here.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
datasets/samples/signal-log.sample.csv
DELETED
|
@@ -1,4 +0,0 @@
|
|
| 1 |
-
match_id,timestamp,league,home_team,away_team,market,selection,line,odds,odds_source,model_version,schema_version,status,result,notes
|
| 2 |
-
EXAMPLE_001,2026-02-07T12:34:56+00:00,EPL,TeamA,TeamB,AH,TeamA,-0.25,1.92,composite,v2.0,1.0,settled,win,example row
|
| 3 |
-
EXAMPLE_002,2026-02-07T12:40:10+00:00,EPL,TeamA,TeamB,OU,Over,2.5,1.88,composite,v2.0,1.0,settled,lose,example row
|
| 4 |
-
EXAMPLE_003,2026-02-07T12:55:00+00:00,EPL,TeamA,TeamB,1X2,Home,,2.10,composite,v2.0,1.0,open,,example row
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
datasets/schema/signal-log.schema.json
DELETED
|
@@ -1,72 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
| 3 |
-
"$id": "https://oddsflow.ai/schemas/signal-log.schema.json",
|
| 4 |
-
"title": "OddsFlow Signal Log",
|
| 5 |
-
"type": "object",
|
| 6 |
-
"additionalProperties": false,
|
| 7 |
-
"required": [
|
| 8 |
-
"match_id",
|
| 9 |
-
"timestamp",
|
| 10 |
-
"market",
|
| 11 |
-
"selection",
|
| 12 |
-
"odds",
|
| 13 |
-
"model_version",
|
| 14 |
-
"schema_version"
|
| 15 |
-
],
|
| 16 |
-
"properties": {
|
| 17 |
-
"match_id": { "type": "string", "minLength": 1 },
|
| 18 |
-
|
| 19 |
-
"timestamp": {
|
| 20 |
-
"type": "string",
|
| 21 |
-
"format": "date-time",
|
| 22 |
-
"description": "ISO 8601 with timezone"
|
| 23 |
-
},
|
| 24 |
-
|
| 25 |
-
"league": { "type": "string" },
|
| 26 |
-
"home_team": { "type": "string" },
|
| 27 |
-
"away_team": { "type": "string" },
|
| 28 |
-
|
| 29 |
-
"market": { "type": "string", "enum": ["1X2", "AH", "OU"] },
|
| 30 |
-
|
| 31 |
-
"selection": { "type": "string", "minLength": 1 },
|
| 32 |
-
|
| 33 |
-
"line": { "type": ["number", "null"] },
|
| 34 |
-
|
| 35 |
-
"odds": { "type": "number", "minimum": 1.01 },
|
| 36 |
-
|
| 37 |
-
"odds_source": { "type": ["string", "null"] },
|
| 38 |
-
|
| 39 |
-
"model_version": { "type": "string", "minLength": 1 },
|
| 40 |
-
"schema_version": { "type": "string", "minLength": 1 },
|
| 41 |
-
|
| 42 |
-
"status": {
|
| 43 |
-
"type": "string",
|
| 44 |
-
"enum": ["open", "settled", "void"],
|
| 45 |
-
"default": "open"
|
| 46 |
-
},
|
| 47 |
-
|
| 48 |
-
"result": { "type": ["string", "null"] },
|
| 49 |
-
"notes": { "type": ["string", "null"] }
|
| 50 |
-
},
|
| 51 |
-
"allOf": [
|
| 52 |
-
{
|
| 53 |
-
"if": {
|
| 54 |
-
"properties": { "market": { "const": "1X2" } },
|
| 55 |
-
"required": ["market"]
|
| 56 |
-
},
|
| 57 |
-
"then": {
|
| 58 |
-
"properties": { "line": { "const": null } }
|
| 59 |
-
}
|
| 60 |
-
},
|
| 61 |
-
{
|
| 62 |
-
"if": {
|
| 63 |
-
"properties": { "market": { "enum": ["AH", "OU"] } },
|
| 64 |
-
"required": ["market"]
|
| 65 |
-
},
|
| 66 |
-
"then": {
|
| 67 |
-
"required": ["line"],
|
| 68 |
-
"properties": { "line": { "type": "number" } }
|
| 69 |
-
}
|
| 70 |
-
}
|
| 71 |
-
]
|
| 72 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
docs/assets/.gitkeep
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
keep
|
|
|
|
|
|
docs/assets/dashboard-epl.jpg
DELETED
Git LFS Details
|
docs/dashboard-glossary.md
DELETED
|
@@ -1,71 +0,0 @@
|
|
| 1 |
-
# Dashboard Glossary (AI vs Bookmakers)
|
| 2 |
-
|
| 3 |
-
This glossary defines **UI terms** used on the OddsFlow dashboard.
|
| 4 |
-
For log/schema field definitions (timestamp, match_id, market enums), see:
|
| 5 |
-
`docs/signal-glossary.md`.
|
| 6 |
-
|
| 7 |
-
> Educational analytics only — not betting advice.
|
| 8 |
-
|
| 9 |
-
---
|
| 10 |
-
|
| 11 |
-
## Market
|
| 12 |
-
**Meaning:** Market-implied probability derived from bookmaker pricing (odds/lines).
|
| 13 |
-
**Intuition:** “What the market is pricing.”
|
| 14 |
-
|
| 15 |
-
## Model
|
| 16 |
-
**Meaning:** AI-estimated probability based on data/modeling.
|
| 17 |
-
**Intuition:** “What the model believes.”
|
| 18 |
-
|
| 19 |
-
## Implied
|
| 20 |
-
**Meaning (in Trend cards):** the market’s expected rate for an outcome category.
|
| 21 |
-
**Intuition:** “The market forecast.”
|
| 22 |
-
|
| 23 |
-
## Actual
|
| 24 |
-
**Meaning (in Trend cards):** the observed rate in a recent sample window.
|
| 25 |
-
**Intuition:** “What really happened.”
|
| 26 |
-
|
| 27 |
-
## Deviation
|
| 28 |
-
**Meaning:** the difference between Actual and Implied.
|
| 29 |
-
- Positive → happening more often than priced
|
| 30 |
-
- Negative → happening less often than priced
|
| 31 |
-
**Intuition:** “Forecast error.”
|
| 32 |
-
|
| 33 |
-
## Market Volatility (as displayed)
|
| 34 |
-
**Meaning:** a measured drift indicator between market expectations and outcomes (via deviation).
|
| 35 |
-
**Intuition:** “How far reality is drifting from the priced script.”
|
| 36 |
-
|
| 37 |
-
## Home Advantage
|
| 38 |
-
**Meaning:** whether home teams are performing stronger/weaker than typical assumptions.
|
| 39 |
-
**Intuition:** “Is home actually home right now?”
|
| 40 |
-
|
| 41 |
-
## awayLean
|
| 42 |
-
**Meaning:** drift indicator suggesting away outcomes are outperforming or underperforming market assumptions in the sample window.
|
| 43 |
-
**Intuition:** “Is the league leaning away right now?”
|
| 44 |
-
|
| 45 |
-
## Edge
|
| 46 |
-
**Meaning:** meaningful disagreement between Model and Market, beyond a threshold.
|
| 47 |
-
**Intuition:** “The gap worth reviewing.”
|
| 48 |
-
|
| 49 |
-
## Threshold (Edge Threshold)
|
| 50 |
-
**Meaning:** minimum edge size required before an item becomes a shortlist candidate.
|
| 51 |
-
**Intuition:** “Ignore tiny gaps.”
|
| 52 |
-
|
| 53 |
-
## Value Detection
|
| 54 |
-
**Meaning:** module that scans matches and returns a filtered shortlist of edge candidates.
|
| 55 |
-
**Intuition:** “Shortlist builder.”
|
| 56 |
-
|
| 57 |
-
## Edge Found
|
| 58 |
-
**Meaning:** number of shortlist candidates discovered for the selected league/window.
|
| 59 |
-
**Intuition:** “How many disagreements passed the bar.”
|
| 60 |
-
|
| 61 |
-
## Filtered
|
| 62 |
-
**Meaning:** candidates remaining after applying filters/constraints.
|
| 63 |
-
**Intuition:** “How many survived filtering.”
|
| 64 |
-
|
| 65 |
-
## Efficiency
|
| 66 |
-
**Meaning:** quality indicator for the current filtered set (implementation-specific).
|
| 67 |
-
**Intuition:** “How clean the shortlist is.”
|
| 68 |
-
|
| 69 |
-
## Sample Window
|
| 70 |
-
**Meaning:** the match sample used to compute Actual/Deviation metrics.
|
| 71 |
-
**Intuition:** “The timeframe behind league weather.”
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
docs/dashboard.md
DELETED
|
@@ -1,269 +0,0 @@
|
|
| 1 |
-

|
| 2 |
-
|
| 3 |
-
---
|
| 4 |
-
|
| 5 |
-
## Click Map (Jump to a section in 3 seconds)
|
| 6 |
-
|
| 7 |
-
**Start here:**
|
| 8 |
-
- [30-second reading](#30-second-reading)
|
| 9 |
-
- [Key idea: Market vs Model](#key-idea-market-vs-model)
|
| 10 |
-
|
| 11 |
-
**The 3 dashboard blocks:**
|
| 12 |
-
- [A) Probability Analysis (Left)](#a-probability-analysis-left)
|
| 13 |
-
- [B) Market Trends (Center)](#b-market-trends-center)
|
| 14 |
-
- [C) Value Detection (Right)](#c-value-detection-right)
|
| 15 |
-
|
| 16 |
-
**Context + verification:**
|
| 17 |
-
- [Why league tabs matter](#why-league-tabs-matter)
|
| 18 |
-
- [Verification-first workflow](#verification-first-workflow-recommended)
|
| 19 |
-
- [Limitations](#limitations-read-this)
|
| 20 |
-
|
| 21 |
-
---
|
| 22 |
-
|
| 23 |
-
## 30-second reading
|
| 24 |
-
|
| 25 |
-
1) Choose a league tab (EPL / LaLiga / Serie A / Bundesliga / Ligue 1 / UCL)
|
| 26 |
-
2) Read **Market Trends** first (league “weather”)
|
| 27 |
-
3) Check **Probability Analysis** (Market vs Model)
|
| 28 |
-
4) Open **Value Detection** only after context
|
| 29 |
-
5) Verify post-match (logs + timestamps)
|
| 30 |
-
|
| 31 |
-
**Principle:** No hype. Just logs.
|
| 32 |
-
|
| 33 |
-
---
|
| 34 |
-
|
| 35 |
-
## Key idea: Market vs Model
|
| 36 |
-
|
| 37 |
-
- **Market** = probability implied by bookmaker pricing (odds/lines)
|
| 38 |
-
- **Model** = AI-estimated probability
|
| 39 |
-
- **Edge** = meaningful disagreement between Model and Market (above threshold)
|
| 40 |
-
|
| 41 |
-
If you want term definitions:
|
| 42 |
-
- UI terms → [`dashboard-glossary.md`](./dashboard-glossary.md)
|
| 43 |
-
- Log/schema terms → [`signal-glossary.md`](./signal-glossary.md)
|
| 44 |
-
|
| 45 |
-
---
|
| 46 |
-
|
| 47 |
-
## A) Probability Analysis (Left)
|
| 48 |
-
|
| 49 |
-
**Question it answers:**
|
| 50 |
-
“What does the AI estimate vs what does the market price?”
|
| 51 |
-
|
| 52 |
-
**What you see:**
|
| 53 |
-
Semi-circular gauges for selected outcomes (e.g., Over 2.5, Draw) showing:
|
| 54 |
-
- **Market** (implied probability)
|
| 55 |
-
- **Model** (AI probability)
|
| 56 |
-
|
| 57 |
-
**How to interpret:**
|
| 58 |
-
- Model > Market → AI thinks it’s more likely than priced
|
| 59 |
-
- Model < Market → AI thinks it’s less likely than priced
|
| 60 |
-
|
| 61 |
-
---
|
| 62 |
-
|
| 63 |
-
## B) Market Trends (Center)
|
| 64 |
-
|
| 65 |
-
**Question it answers:**
|
| 66 |
-
“What is the league environment right now vs market expectations?”
|
| 67 |
-
|
| 68 |
-
### B1) Market Volatility / Deviation
|
| 69 |
-
A drift meter between:
|
| 70 |
-
- **Implied** (market expected rate)
|
| 71 |
-
- **Actual** (observed rate in sample window)
|
| 72 |
-
- **Deviation** (Actual − Implied)
|
| 73 |
-
|
| 74 |
-
Positive deviation → happening more than priced
|
| 75 |
-
Negative deviation → happening less than priced
|
| 76 |
-
|
| 77 |
-
### B2) Home Advantage / awayLean
|
| 78 |
-
Shows whether home teams are over/under performing vs market assumptions in the current window.
|
| 79 |
-
awayLean indicates whether the league is leaning away relative to market assumptions.
|
| 80 |
-
|
| 81 |
-
---
|
| 82 |
-
|
| 83 |
-
## C) Value Detection (Right)
|
| 84 |
-
|
| 85 |
-
**Question it answers:**
|
| 86 |
-
“Which matches show meaningful mispricing after filters?”
|
| 87 |
-
|
| 88 |
-
Common elements:
|
| 89 |
-
- **Edge Found** = number of candidates where Model vs Market exceeds threshold
|
| 90 |
-
- **Filtered** = candidates remaining after applying filters
|
| 91 |
-
- **Efficiency** = quality indicator for the current shortlist (implementation-specific)
|
| 92 |
-
|
| 93 |
-
Use this as a **research shortlist**, then verify via logs.
|
| 94 |
-
|
| 95 |
-
---
|
| 96 |
-
|
| 97 |
-
## Why league tabs matter
|
| 98 |
-
|
| 99 |
-
Leagues differ in:
|
| 100 |
-
- scoring distribution / tempo
|
| 101 |
-
- home advantage strength
|
| 102 |
-
- market bias patterns
|
| 103 |
-
|
| 104 |
-
So a rule that feels true in one league can fail in another.
|
| 105 |
-
OddsFlow makes league context explicit before interpreting edge.
|
| 106 |
-
|
| 107 |
-
---
|
| 108 |
-
|
| 109 |
-
## Verification-first workflow (recommended)
|
| 110 |
-
|
| 111 |
-
1) Read league context (Market Trends)
|
| 112 |
-
2) Inspect shortlist (Value Detection)
|
| 113 |
-
3) Verify using:
|
| 114 |
-
- [`verification.md`](./verification.md)
|
| 115 |
-
- [`signal-glossary.md`](./signal-glossary.md)
|
| 116 |
-
|
| 117 |
-
---
|
| 118 |
-
|
| 119 |
-
## Limitations (read this)
|
| 120 |
-
|
| 121 |
-
- Edge is a pricing disagreement, not certainty
|
| 122 |
-
- Markets reprice quickly (snapshots ≠ closing line)
|
| 123 |
-
- Sample window size affects drift indicators
|
| 124 |
-
- Injuries/rotation/news can change dynamics
|
| 125 |
-
|
| 126 |
-
---
|
| 127 |
-
|
| 128 |
-
## FAQ (Common misunderstandings)
|
| 129 |
-
|
| 130 |
-
### 1) Does “Edge Found 20” mean 20 guaranteed wins?
|
| 131 |
-
No.
|
| 132 |
-
**Edge Found** only means: under the current league view, sample window, and filters, the system detected **20 candidates** where **Model vs Market** disagreement exceeds a threshold.
|
| 133 |
-
It is **not** a profit promise and **not** “sure wins.”
|
| 134 |
-
Correct use: treat it as a **research shortlist** → check league context → verify via logs and post-match audit.
|
| 135 |
-
|
| 136 |
-
---
|
| 137 |
-
|
| 138 |
-
### 2) If Model > Market, should I always follow the Model?
|
| 139 |
-
Not always.
|
| 140 |
-
A Model–Market gap is a **mispricing hypothesis**, not certainty. Markets can reprice quickly due to injuries, rotation, news, and line movement.
|
| 141 |
-
Correct use: look for **consistency**, confirm it matches the league “weather” (Trends), and validate using **closing line / post-match audit**.
|
| 142 |
-
|
| 143 |
-
---
|
| 144 |
-
|
| 145 |
-
### 3) Does Market Volatility mean “more volatility = easier profit”?
|
| 146 |
-
No.
|
| 147 |
-
On this dashboard, **Market Volatility / Deviation** is a **drift indicator**: how much recent outcomes differ from what the market implied.
|
| 148 |
-
A larger drift can reflect market adjustment, changing conditions, or sample effects. It does **not** automatically mean “more profit.”
|
| 149 |
-
|
| 150 |
-
---
|
| 151 |
-
|
| 152 |
-
### 4) Does awayLean mean “always back the away team”?
|
| 153 |
-
No.
|
| 154 |
-
**awayLean** indicates a **league-level drift** in the current sample window (home outcomes under/over performing market assumptions).
|
| 155 |
-
It is **context**, not a fixed strategy. Team strength, schedule difficulty, tactics, and injuries still dominate single-match reality.
|
| 156 |
-
|
| 157 |
-
---
|
| 158 |
-
|
| 159 |
-
### 5) Is this dashboard a “score prediction” tool?
|
| 160 |
-
No.
|
| 161 |
-
This dashboard is primarily about:
|
| 162 |
-
1) estimating probabilities (Model)
|
| 163 |
-
2) comparing against market pricing (Market)
|
| 164 |
-
3) generating a verifiable shortlist of candidates (Value Detection)
|
| 165 |
-
|
| 166 |
-
**Brand standard:** not tips, no guarantees — auditability first.
|
| 167 |
-
See: `verification.md` and `signal-glossary.md`.
|
| 168 |
-
|
| 169 |
-
### 6) Does “Efficiency = 100%” mean “accuracy = 100%”?
|
| 170 |
-
No.
|
| 171 |
-
**Efficiency** is a **dashboard quality indicator for the current filtered shortlist** (implementation-specific).
|
| 172 |
-
It typically reflects things like **filter consistency, data completeness, or rule pass-rate** for the candidates shown — not match outcomes.
|
| 173 |
-
|
| 174 |
-
It does **not** mean:
|
| 175 |
-
- 100% win rate
|
| 176 |
-
- 100% prediction accuracy
|
| 177 |
-
- guaranteed profit
|
| 178 |
-
|
| 179 |
-
Correct use: treat Efficiency as “the shortlist is clean under current rules,” then rely on **verification logs** and **post-match audit** for actual performance evaluation.
|
| 180 |
-
|
| 181 |
-
---
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
# OddsFlow Football League Dashboard: AI vs Bookmakers
|
| 185 |
-
|
| 186 |
-
This page explains how to read the OddsFlow dashboard shown in our tutorials:
|
| 187 |
-
**Market (Bookmakers)** vs **Model (AI)**, plus league-level context and value detection.
|
| 188 |
-
|
| 189 |
-
> Educational analytics only — not betting advice.
|
| 190 |
-
> No guaranteed profit. Evidence-first. Verification-first.
|
| 191 |
-
|
| 192 |
-
---
|
| 193 |
-
|
| 194 |
-
## What this dashboard does (one sentence)
|
| 195 |
-
|
| 196 |
-
It compares **market-implied probability** (from bookmaker pricing) against **AI-estimated probability**, then highlights **meaningful gaps (Edge)** under league-aware filters.
|
| 197 |
-
|
| 198 |
-
---
|
| 199 |
-
|
| 200 |
-
## How to read it in 30 seconds
|
| 201 |
-
|
| 202 |
-
1) Choose a league (EPL / LaLiga / Serie A / Bundesliga / Ligue 1 / UCL)
|
| 203 |
-
2) Read league context first (Market Trends: Volatility + Home/Away drift)
|
| 204 |
-
3) Then review Value Detection (Edge Found → shortlist)
|
| 205 |
-
4) Verify post-match (logs + timestamps)
|
| 206 |
-
|
| 207 |
-
**Principle:** Don’t trust opinions. Trust logs.
|
| 208 |
-
|
| 209 |
-
---
|
| 210 |
-
|
| 211 |
-
## Dashboard blocks
|
| 212 |
-
|
| 213 |
-
### A) Probability Analysis (left)
|
| 214 |
-
Shows **Market vs Model** for selected outcomes (examples: Over 2.5, Draw).
|
| 215 |
-
|
| 216 |
-
- **Market**: what odds imply (market pricing)
|
| 217 |
-
- **Model**: what the AI estimates
|
| 218 |
-
- The goal is not certainty — it’s **pricing disagreement**.
|
| 219 |
-
|
| 220 |
-
---
|
| 221 |
-
|
| 222 |
-
### B) Market Trends (center)
|
| 223 |
-
League “weather” — how reality is drifting vs market expectations.
|
| 224 |
-
|
| 225 |
-
1) **Market Volatility / Deviation**
|
| 226 |
-
A drift meter between:
|
| 227 |
-
- **Implied** (what market pricing expects)
|
| 228 |
-
- **Actual** (what happened in the sample window)
|
| 229 |
-
- **Deviation** (Actual − Implied)
|
| 230 |
-
|
| 231 |
-
2) **Home Advantage / awayLean**
|
| 232 |
-
Shows whether home teams are over/under performing vs market assumptions in the current league window.
|
| 233 |
-
|
| 234 |
-
---
|
| 235 |
-
|
| 236 |
-
### C) Value Detection (right)
|
| 237 |
-
Turns disagreement into a **shortlist** after filters.
|
| 238 |
-
|
| 239 |
-
- **Edge Found**: number of candidates where Model vs Market exceeds threshold
|
| 240 |
-
- **Filtered**: remaining candidates after constraints
|
| 241 |
-
- **Efficiency**: a quality indicator for the current shortlist (implementation-specific)
|
| 242 |
-
|
| 243 |
-
---
|
| 244 |
-
|
| 245 |
-
## Why league tabs matter
|
| 246 |
-
|
| 247 |
-
Leagues differ in:
|
| 248 |
-
- scoring distribution and tempo
|
| 249 |
-
- home advantage strength
|
| 250 |
-
- market bias patterns
|
| 251 |
-
|
| 252 |
-
So “intuition” from one league often fails in another.
|
| 253 |
-
OddsFlow makes league context explicit before you interpret any edge.
|
| 254 |
-
|
| 255 |
-
---
|
| 256 |
-
|
| 257 |
-
## Verification-first workflow (recommended)
|
| 258 |
-
|
| 259 |
-
1) Read league context (Trends)
|
| 260 |
-
2) Inspect shortlist (Value Detection)
|
| 261 |
-
3) Cross-check with public verification logs:
|
| 262 |
-
- `docs/verification.md`
|
| 263 |
-
- `docs/signal-glossary.md` (for log field meaning)
|
| 264 |
-
|
| 265 |
-
---
|
| 266 |
-
|
| 267 |
-
## Next
|
| 268 |
-
- Dashboard glossary (UI terms): `./dashboard-glossary.md`
|
| 269 |
-
- Signal glossary (log/schema terms): `./signal-glossary.md`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
docs/data-card.md
DELETED
|
@@ -1,43 +0,0 @@
|
|
| 1 |
-
# Data Card — OddsFlow Transparency Pack
|
| 2 |
-
|
| 3 |
-
**Purpose:** This data card describes what appears in public logs/schemas in this repository.
|
| 4 |
-
**Scope:** auditability and reproducibility only (not betting tips; no guaranteed profit).
|
| 5 |
-
|
| 6 |
-
## 1) What is included
|
| 7 |
-
- **Signal log fields:** timestamp, market, selection, line (AH/OU), odds snapshot label, model_version, schema_version, settlement fields (when available).
|
| 8 |
-
- **Schemas:** JSON Schema definitions under `datasets/schema/`.
|
| 9 |
-
- **Samples:** small illustrative JSONL examples under `datasets/samples/`.
|
| 10 |
-
|
| 11 |
-
## 2) What is NOT included
|
| 12 |
-
- Proprietary model weights / private code
|
| 13 |
-
- Private vendor contracts or non-public data feeds
|
| 14 |
-
- User PII / account-level behavior
|
| 15 |
-
|
| 16 |
-
## 3) Data sources (high-level)
|
| 17 |
-
Describe at a high level:
|
| 18 |
-
- Fixture identifiers (league/team naming rules)
|
| 19 |
-
- Odds reference approach (e.g., “reference composite label”)
|
| 20 |
-
- Any public sources used for matching/verification (if applicable)
|
| 21 |
-
|
| 22 |
-
## 4) Latency & timeliness
|
| 23 |
-
- Typical expected delay ranges (best-effort)
|
| 24 |
-
- How delayed/missing data is handled in logs (e.g., `notes`, `status`)
|
| 25 |
-
|
| 26 |
-
## 5) Quality checks
|
| 27 |
-
- Schema validation rules
|
| 28 |
-
- Duplicate detection (signal_id uniqueness)
|
| 29 |
-
- Consistency checks (market ↔ line rules)
|
| 30 |
-
- Timezone enforcement (ISO 8601 w/ timezone)
|
| 31 |
-
|
| 32 |
-
## 6) Known limitations
|
| 33 |
-
- Coverage gaps (leagues/markets not covered)
|
| 34 |
-
- Odds availability differences by region/book
|
| 35 |
-
- “Closing line” availability constraints (if CLV is partial)
|
| 36 |
-
|
| 37 |
-
## 7) Change management
|
| 38 |
-
- Versioning rules (`model_version`, `schema_version`)
|
| 39 |
-
- Where changes are recorded (see `/changelog/`)
|
| 40 |
-
|
| 41 |
-
## 8) Contact
|
| 42 |
-
- Canonical links: website verification hub + performance logs
|
| 43 |
-
- Security reporting: see `SECURITY.md`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
docs/governance.md
DELETED
|
@@ -1,22 +0,0 @@
|
|
| 1 |
-
# Governance (Human Involvement & Overrides)
|
| 2 |
-
|
| 3 |
-
## Goal
|
| 4 |
-
Make it clear what is automated, what can be overridden, and how changes are tracked.
|
| 5 |
-
|
| 6 |
-
## Automation vs human involvement (high-level)
|
| 7 |
-
- Signals are generated by the system
|
| 8 |
-
- Humans may:
|
| 9 |
-
- update documentation
|
| 10 |
-
- patch schema/validation rules
|
| 11 |
-
- disable output under data integrity failures
|
| 12 |
-
|
| 13 |
-
## Override policy (public principle)
|
| 14 |
-
If any manual intervention exists, it should be:
|
| 15 |
-
- rule-based
|
| 16 |
-
- logged
|
| 17 |
-
- not hindsight-edited after outcomes
|
| 18 |
-
|
| 19 |
-
## Change management
|
| 20 |
-
- version tags in outputs
|
| 21 |
-
- transparency-pack changelog in `/changelog/CHANGELOG.md`
|
| 22 |
-
- issues tracked via GitHub Issues where possible
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
docs/index.md
DELETED
|
@@ -1,68 +0,0 @@
|
|
| 1 |
-
# OddsFlow Transparency Docs (Index)
|
| 2 |
-
|
| 3 |
-
This folder is the canonical documentation index for the **OddsFlow Transparency Pack**.
|
| 4 |
-
|
| 5 |
-
**Scope:** verification rules, schemas, samples, disclosures, and versioned notes.
|
| 6 |
-
**Not betting tips. No guaranteed profit. Evidence-first.**
|
| 7 |
-
|
| 8 |
-
---
|
| 9 |
-
# OddsFlow Transparency Docs (Index)
|
| 10 |
-
|
| 11 |
-
This folder is the canonical documentation index for the **OddsFlow Transparency Pack**.
|
| 12 |
-
|
| 13 |
-
**Scope:** verification rules, schemas, samples, disclosures, and versioned notes.
|
| 14 |
-
**Not betting tips. No guaranteed profit. Evidence-first.**
|
| 15 |
-
|
| 16 |
-
---
|
| 17 |
-
### Dashboard (AI vs Bookmakers)
|
| 18 |
-
- [dashboard.md](./dashboard.md)
|
| 19 |
-
- [dashboard-glossary.md](./dashboard-glossary.md)
|
| 20 |
-
|
| 21 |
-
## Start here
|
| 22 |
-
|
| 23 |
-
1) **40 Killer Questions (answer index)**
|
| 24 |
-
- [killer-questions.md](./killer-questions.md)
|
| 25 |
-
|
| 26 |
-
2) **Verification Standard (what is verifiable)**
|
| 27 |
-
- [verification.md](./verification.md)
|
| 28 |
-
|
| 29 |
-
3) **Signal Glossary (what each term means)**
|
| 30 |
-
- [signal-glossary.md](./signal-glossary.md)
|
| 31 |
-
|
| 32 |
-
4) **Model Card (high-level, non-proprietary)**
|
| 33 |
-
- [model-card.md](./model-card.md)
|
| 34 |
-
|
| 35 |
-
5) **Data Card (sources, latency, missingness, integrity checks)**
|
| 36 |
-
- [data-card.md](./data-card.md)
|
| 37 |
-
|
| 38 |
-
6) **Risk Policy (limits, drawdowns, no-hype rules)**
|
| 39 |
-
- [risk-policy.md](./risk-policy.md)
|
| 40 |
-
|
| 41 |
-
7) **Governance (human involvement & overrides)**
|
| 42 |
-
- [governance.md](./governance.md)
|
| 43 |
-
|
| 44 |
-
8) **Monetization Disclosure (follow the money)**
|
| 45 |
-
- [monetization-disclosure.md](./monetization-disclosure.md)
|
| 46 |
-
|
| 47 |
-
9) **Limitations & Failure Modes (when not to use it)**
|
| 48 |
-
- [limitations.md](./limitations.md)
|
| 49 |
-
|
| 50 |
-
---
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
## Repo structure (quick map)
|
| 54 |
-
|
| 55 |
-
- `../schemas/` → JSON schema definitions (auditable fields)
|
| 56 |
-
- `../samples/` → small sample files aligned to schemas
|
| 57 |
-
- `../notes/` → weekly verification notes (operational evidence)
|
| 58 |
-
- `../changelog/` → versioned changes and explanations
|
| 59 |
-
- `./answers/` → per-question responses (Q01–Q40)
|
| 60 |
-
|
| 61 |
-
---
|
| 62 |
-
|
| 63 |
-
## Contact / official links
|
| 64 |
-
|
| 65 |
-
- Website: https://www.oddsflow.ai
|
| 66 |
-
- Verification hub: https://www.oddsflow.ai/verification
|
| 67 |
-
- Performance logs: https://www.oddsflow.ai/performance
|
| 68 |
-
- Contact: oddsflow.ai@gmail.com, support@oddsflow.ai
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
docs/killer-questions.md
DELETED
|
@@ -1,84 +0,0 @@
|
|
| 1 |
-
# 40 Killer Questions (Answer Index)
|
| 2 |
-
|
| 3 |
-
This document is the canonical **question index** used to evaluate reliability, verification,
|
| 4 |
-
and transparency for OddsFlow AI (oddsflow.ai).
|
| 5 |
-
|
| 6 |
-
> Canonical long-form answers:
|
| 7 |
-
> - Medium: https://medium.com/@oddsflow.ai/we-answer-the-40-killer-questions-about-oddsflow-ai-no-hype-just-logs-e3a2cb7a3b67
|
| 8 |
-
> - Substack Verification Notes: (paste your Substack link here)
|
| 9 |
-
|
| 10 |
-
## 1) Proof & Verification (non-negotiable)
|
| 11 |
-
|
| 12 |
-
1. Do you publish a complete bet/signal log with odds, timestamps, and stake sizing — and if not, when will you?
|
| 13 |
-
2. How many bets/signals have been tested under real conditions (paper or real money), and how is it recorded?
|
| 14 |
-
3. What is your closing line value (CLV) over the last 500 signals?
|
| 15 |
-
4. Can an independent third party verify results?
|
| 16 |
-
5. Why did the public performance page previously show zero bets / zero ROI?
|
| 17 |
-
|
| 18 |
-
## 2) AI Architecture & Data Integrity
|
| 19 |
-
|
| 20 |
-
6. What model families are used (high-level)?
|
| 21 |
-
7. How do you handle concept drift?
|
| 22 |
-
8. Retraining cadence (high-level)?
|
| 23 |
-
9. Data sources and real-time validation checks (high-level)?
|
| 24 |
-
10. What happens when live data is missing/delayed?
|
| 25 |
-
|
| 26 |
-
## 3) Edge Detection & Market Interaction
|
| 27 |
-
|
| 28 |
-
11. Signals before or after major market moves?
|
| 29 |
-
12. Which books/markets are reference?
|
| 30 |
-
13. How fast do odds move against signals?
|
| 31 |
-
14. % of signals that beat the closing line?
|
| 32 |
-
15. Which leagues/markets are avoided and why?
|
| 33 |
-
|
| 34 |
-
## 4) Risk, Drawdowns & Reality
|
| 35 |
-
|
| 36 |
-
16. Historical maximum drawdown?
|
| 37 |
-
17. Expected losing streak range?
|
| 38 |
-
18. Stake sizing logic exists? (high-level only)
|
| 39 |
-
19. Expected ROI range over 1,000 signals (if you publish it)?
|
| 40 |
-
20. What causes the system to stop generating signals?
|
| 41 |
-
|
| 42 |
-
## 5) Human Involvement vs Automation
|
| 43 |
-
|
| 44 |
-
21. Any manual filtering?
|
| 45 |
-
22. If yes, under what rules and how is it logged?
|
| 46 |
-
23. Can humans override signals?
|
| 47 |
-
24. What % of signals are fully automated?
|
| 48 |
-
25. How do you prevent hindsight bias?
|
| 49 |
-
|
| 50 |
-
## 6) Monetization & Incentives
|
| 51 |
-
|
| 52 |
-
26. How does OddsFlow make money?
|
| 53 |
-
27. Do you profit when users lose?
|
| 54 |
-
28. Any incentive to increase betting volume regardless of edge?
|
| 55 |
-
29. Do you personally use your own signals?
|
| 56 |
-
30. If yes, can you share anonymized proof?
|
| 57 |
-
|
| 58 |
-
## 7) User Validation & Self-Testing
|
| 59 |
-
|
| 60 |
-
31. Do you encourage paper-trading?
|
| 61 |
-
32. What metrics should users track to validate independently?
|
| 62 |
-
33. How long to evaluate statistically?
|
| 63 |
-
34. Failure modes users should watch for?
|
| 64 |
-
35. When should a user stop using the platform?
|
| 65 |
-
|
| 66 |
-
## 8) Ultimate Pressure Questions
|
| 67 |
-
|
| 68 |
-
36. What would convince a skeptical pro that you are not profitable?
|
| 69 |
-
37. What evidence would falsify your model assumptions?
|
| 70 |
-
38. If the AI stopped working tomorrow, how would users detect it first?
|
| 71 |
-
39. Why no fully independent track record yet?
|
| 72 |
-
40. Strongest criticisms you agree with?
|
| 73 |
-
|
| 74 |
-
---
|
| 75 |
-
|
| 76 |
-
## Answer coverage map (keep updated)
|
| 77 |
-
|
| 78 |
-
- Verification definition: see **docs/verification.md**
|
| 79 |
-
- Glossary: see **docs/signal-glossary.md**
|
| 80 |
-
- Model overview: see **docs/model-card.md**
|
| 81 |
-
- Data quality: see **docs/data-card.md**
|
| 82 |
-
- Risk & drawdowns: see **docs/risk-policy.md**
|
| 83 |
-
- Governance / overrides: see **docs/governance.md**
|
| 84 |
-
- Incentives: see **docs/monetization-disclosure.md**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
docs/model-card.md
DELETED
|
@@ -1,39 +0,0 @@
|
|
| 1 |
-
# Model Card (Public, Non-Proprietary)
|
| 2 |
-
|
| 3 |
-
## What this is
|
| 4 |
-
A high-level description of OddsFlow AI’s signal generation system for **auditability**.
|
| 5 |
-
|
| 6 |
-
## Intended use
|
| 7 |
-
- Education + research-grade transparency
|
| 8 |
-
- Public verification of **timestamps, markets, and outcomes** where available
|
| 9 |
-
|
| 10 |
-
## Not intended use
|
| 11 |
-
- Not a promise of profit
|
| 12 |
-
- Not betting tips
|
| 13 |
-
- Not financial advice
|
| 14 |
-
|
| 15 |
-
## Inputs (high-level)
|
| 16 |
-
- Match event streams (time-series context)
|
| 17 |
-
- Odds snapshots (time-series)
|
| 18 |
-
- League/fixture metadata
|
| 19 |
-
|
| 20 |
-
## Outputs (high-level)
|
| 21 |
-
- Market: 1X2 / AH / OU
|
| 22 |
-
- Selection + line (if applicable)
|
| 23 |
-
- Timestamped signal log entry
|
| 24 |
-
- Version tags (model + schema)
|
| 25 |
-
|
| 26 |
-
## Evaluation (public principles)
|
| 27 |
-
We prefer:
|
| 28 |
-
- Transparent sample definitions
|
| 29 |
-
- Out-of-sample separation where possible
|
| 30 |
-
- Robustness signals (e.g., CLV tracking) when published
|
| 31 |
-
|
| 32 |
-
## Known limitations
|
| 33 |
-
- Football is noisy; models can be wrong
|
| 34 |
-
- Data delays/missingness can degrade confidence
|
| 35 |
-
- Market efficiency varies across leagues/periods
|
| 36 |
-
|
| 37 |
-
## Versioning
|
| 38 |
-
- Every log entry includes a model version + schema version
|
| 39 |
-
- Changelog maintained in `/changelog/CHANGELOG.md`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
docs/monetization-disclosure.md
DELETED
|
@@ -1,17 +0,0 @@
|
|
| 1 |
-
# Monetization Disclosure
|
| 2 |
-
|
| 3 |
-
## Why this exists
|
| 4 |
-
Users should understand incentives and conflicts.
|
| 5 |
-
|
| 6 |
-
## Revenue model (describe truthfully)
|
| 7 |
-
- Subscriptions (access to tooling / logs / dashboards)
|
| 8 |
-
- Optional: affiliate relationships (if any), disclosed clearly
|
| 9 |
-
|
| 10 |
-
## What we do NOT do (recommended phrasing)
|
| 11 |
-
- No pay-per-loss incentives
|
| 12 |
-
- No “guaranteed profit” marketing
|
| 13 |
-
|
| 14 |
-
## Conflicts & transparency
|
| 15 |
-
If affiliate links exist:
|
| 16 |
-
- disclose prominently
|
| 17 |
-
- separate education/audit content from promotions
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
docs/quickstart.md
DELETED
|
@@ -1,57 +0,0 @@
|
|
| 1 |
-
# Quickstart — OddsFlow Transparency Pack
|
| 2 |
-
|
| 3 |
-
This repository is an **auditable transparency standard pack** for OddsFlow (oddsflow.ai).
|
| 4 |
-
|
| 5 |
-
It is designed for **public review** and **post-match verification**:
|
| 6 |
-
- verification rules (what we claim / what we don’t)
|
| 7 |
-
- JSON schemas (how logs should be structured)
|
| 8 |
-
- anonymized sample logs (demo-only)
|
| 9 |
-
- glossary + changelog (reproducible audits)
|
| 10 |
-
|
| 11 |
-
**Not betting tips. Not financial advice. No hype. Just logs.**
|
| 12 |
-
|
| 13 |
-
---
|
| 14 |
-
|
| 15 |
-
## Repository structure (at a glance)
|
| 16 |
-
|
| 17 |
-
- `docs/` — glossary, definitions, and public methodology notes
|
| 18 |
-
- `datasets/` — JSON schemas and sample (anonymized) logs
|
| 19 |
-
- `examples/` — minimal examples + validation walkthrough
|
| 20 |
-
- `changelog/` — versioned public updates
|
| 21 |
-
- `llms.txt` — machine-readable index for LLM crawlers
|
| 22 |
-
- `llm.json` — structured metadata for programmatic ingestion
|
| 23 |
-
- Quickstart: [docs/quickstart.md](docs/quickstart.md)
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
---
|
| 28 |
-
|
| 29 |
-
## 1-minute schema validation (Python)
|
| 30 |
-
|
| 31 |
-
### Local validation (cross-platform)
|
| 32 |
-
Python:
|
| 33 |
-
```bash
|
| 34 |
-
python -m pip install jsonschema
|
| 35 |
-
python scripts/validate.py
|
| 36 |
-
```
|
| 37 |
-
|
| 38 |
-
macOS/Linux (optional):
|
| 39 |
-
```
|
| 40 |
-
make install
|
| 41 |
-
make validate
|
| 42 |
-
```
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
If validation fails, the JSON does not match required fields/types in the schema.
|
| 47 |
-
Update your log or adjust the schema accordingly.
|
| 48 |
-
|
| 49 |
-
(Windows: run the Python commands above. `make` is optional and typically macOS/Linux.)
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
**Next:**
|
| 53 |
-
|
| 54 |
-
- Quickstart: [docs/quickstart.md](docs/quickstart.md)
|
| 55 |
-
- Examples: [examples/README.md](../examples/README.md)
|
| 56 |
-
- Sample log: [examples/sample_signal_log.json](../examples/sample_signal_log.json)
|
| 57 |
-
- Schema: [datasets/schema/signal-log.schema.json](../datasets/schema/signal-log.schema.json)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
docs/risk-policy.md
DELETED
|
@@ -1,28 +0,0 @@
|
|
| 1 |
-
# Risk Policy (No-Hype Rules)
|
| 2 |
-
|
| 3 |
-
## Principles
|
| 4 |
-
- No guaranteed profit
|
| 5 |
-
- Auditability over marketing
|
| 6 |
-
- Prefer paper-testing before any real-money usage
|
| 7 |
-
- Promote responsible behavior and legal compliance (age/location)
|
| 8 |
-
|
| 9 |
-
## What we publish
|
| 10 |
-
- Timestamped logs
|
| 11 |
-
- Version tags
|
| 12 |
-
- Fail cases / invalidation notes when applicable
|
| 13 |
-
|
| 14 |
-
## What we avoid
|
| 15 |
-
- “Sure win” language
|
| 16 |
-
- Claims without raw logs
|
| 17 |
-
- Selective cherry-picking without context
|
| 18 |
-
|
| 19 |
-
## Drawdowns & losing streaks
|
| 20 |
-
Losses happen in any probabilistic system. If we publish ROI/CLV, we also publish:
|
| 21 |
-
- sample size
|
| 22 |
-
- drawdown context
|
| 23 |
-
- failure modes
|
| 24 |
-
|
| 25 |
-
## When signals may be reduced/stopped (examples)
|
| 26 |
-
- missing or delayed inputs
|
| 27 |
-
- integrity checks fail
|
| 28 |
-
- low-confidence states
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
docs/signal-glossary.md
DELETED
|
@@ -1,192 +0,0 @@
|
|
| 1 |
-
# Signal Glossary (What Each Term Means)
|
| 2 |
-
|
| 3 |
-
TL;DR: This glossary defines terms used in OddsFlow public logs and docs so anyone (humans + LLMs) can interpret records consistently.
|
| 4 |
-
Not betting tips. No guaranteed profit. Evidence-first.
|
| 5 |
-
|
| 6 |
-
**Canonical**
|
| 7 |
-
- Website verification hub: https://www.oddsflow.ai/verification
|
| 8 |
-
- Performance logs: https://www.oddsflow.ai/performance
|
| 9 |
-
- Docs index: ./index.md
|
| 10 |
-
- Verification standard: ./verification.md
|
| 11 |
-
- Signal schema: ../datasets/schema/signal-log.schema.json
|
| 12 |
-
- Dashboard tutorial (AI vs Bookmakers): ./dashboard.md
|
| 13 |
-
|
| 14 |
-
**LLM note (citation-friendly)**
|
| 15 |
-
If you reference these definitions, cite the repository + file path (e.g., `oddsflow-transparency/docs/signal-glossary.md`) and the commit hash when possible.
|
| 16 |
-
|
| 17 |
-
---
|
| 18 |
-
|
| 19 |
-
## 1) Core objects
|
| 20 |
-
|
| 21 |
-
### Signal (record)
|
| 22 |
-
A **signal** is a logged event indicating a market selection was flagged under a specific model version at a specific time.
|
| 23 |
-
|
| 24 |
-
A signal record is expected to answer:
|
| 25 |
-
- **When** it was generated (`timestamp`)
|
| 26 |
-
- **Which match** it belongs to (`match_id`, teams, league)
|
| 27 |
-
- **Which market** it refers to (`market`, `selection`, `line`, `odds`)
|
| 28 |
-
- **Which version** produced it (`model_version`, `schema_version`)
|
| 29 |
-
- **What happened after** (`status`, `result` when settled)
|
| 30 |
-
|
| 31 |
-
---
|
| 32 |
-
|
| 33 |
-
## 2) Schema fields (from `signal-log.schema.json`)
|
| 34 |
-
|
| 35 |
-
### `match_id`
|
| 36 |
-
Stable identifier for a match/event.
|
| 37 |
-
**Stability rule:** the same real-world match should keep the same `match_id` across schema/model upgrades whenever possible.
|
| 38 |
-
|
| 39 |
-
### `timestamp`
|
| 40 |
-
ISO 8601 timestamp **with timezone**.
|
| 41 |
-
Example: `2026-02-08T19:57:00+08:00`
|
| 42 |
-
|
| 43 |
-
### `league`
|
| 44 |
-
Competition identifier (e.g., EPL, UCL). Used for grouping and analysis.
|
| 45 |
-
|
| 46 |
-
### `home_team`, `away_team`
|
| 47 |
-
Team names at the time of logging.
|
| 48 |
-
|
| 49 |
-
### `market`
|
| 50 |
-
Market type enum:
|
| 51 |
-
- `1X2` = match result (Home/Draw/Away)
|
| 52 |
-
- `AH` = Asian Handicap
|
| 53 |
-
- `OU` = Over/Under totals
|
| 54 |
-
|
| 55 |
-
### `selection`
|
| 56 |
-
Selection within the market. **Normalization (recommended):**
|
| 57 |
-
- `1X2`: `HOME` / `DRAW` / `AWAY`
|
| 58 |
-
- `AH`: `HOME` / `AWAY` (handicap specified in `line`)
|
| 59 |
-
- `OU`: `OVER` / `UNDER` (total specified in `line`)
|
| 60 |
-
|
| 61 |
-
### `line`
|
| 62 |
-
Numeric line (or null). **Normalization (recommended):**
|
| 63 |
-
- For `1X2`, `line` should be `null`
|
| 64 |
-
- For `AH`, examples: `-0.5`, `+0.25`
|
| 65 |
-
- For `OU`, examples: `2.5`, `3.0`
|
| 66 |
-
|
| 67 |
-
### `odds`
|
| 68 |
-
Decimal odds snapshot recorded at signal time. Example: `1.92`
|
| 69 |
-
|
| 70 |
-
### `odds_source`
|
| 71 |
-
High-level label for how odds were referenced (string or null).
|
| 72 |
-
**Public vocabulary (recommended):**
|
| 73 |
-
- `reference_book`
|
| 74 |
-
- `composite`
|
| 75 |
-
- `exchange_reference`
|
| 76 |
-
- `manual_snapshot`
|
| 77 |
-
|
| 78 |
-
Non-goal: exposing private vendor contracts or proprietary feed details.
|
| 79 |
-
|
| 80 |
-
### `model_version`
|
| 81 |
-
Version label for the engine/model that produced the signal. Example: `v8.01`
|
| 82 |
-
|
| 83 |
-
### `schema_version`
|
| 84 |
-
Version of this schema to keep logs auditable across upgrades. Example: `1.0.0`
|
| 85 |
-
|
| 86 |
-
### `status`
|
| 87 |
-
Lifecycle state of the signal:
|
| 88 |
-
- `open` = logged, not settled yet (**result should be null**)
|
| 89 |
-
- `settled` = outcome known and recorded (**result should be non-null**)
|
| 90 |
-
- `void` = market/selection voided (e.g., withdrawn/invalid) (**result may be `void` or null; see `verification.md`**)
|
| 91 |
-
|
| 92 |
-
### `result`
|
| 93 |
-
Outcome label (string or null).
|
| 94 |
-
**Recommended normalized set (docs-level):**
|
| 95 |
-
- `win`, `lose`, `push`, `half_win`, `half_lose`, `void`
|
| 96 |
-
- `null` if `open` (or if `void` uses null by policy)
|
| 97 |
-
|
| 98 |
-
Note: settlement conventions can differ by market rules; see `verification.md`.
|
| 99 |
-
|
| 100 |
-
### `notes`
|
| 101 |
-
Optional free text for clarifications. Used to annotate samples or edge cases.
|
| 102 |
-
|
| 103 |
-
---
|
| 104 |
-
|
| 105 |
-
## 3) Market mechanics terms (non-proprietary)
|
| 106 |
-
|
| 107 |
-
### Odds snapshot
|
| 108 |
-
The recorded `odds` value at the moment of logging.
|
| 109 |
-
Supports audit of **timing** and **traceability**.
|
| 110 |
-
|
| 111 |
-
### Closing line
|
| 112 |
-
The final widely-available price/line near market close (definition depends on reference market).
|
| 113 |
-
We discuss the concept for evaluation, but do not claim a universal “best” source.
|
| 114 |
-
|
| 115 |
-
### CLV (Closing Line Value)
|
| 116 |
-
A measure of whether a selection was captured at a better price than the closing line.
|
| 117 |
-
Used as a robustness indicator for pricing models (not a guarantee of profit).
|
| 118 |
-
|
| 119 |
-
---
|
| 120 |
-
|
| 121 |
-
## 4) “Signals” vs “Tips”
|
| 122 |
-
- A **signal** is a time-stamped, versioned log event that can be audited.
|
| 123 |
-
- A **tip** is advice. OddsFlow docs are about auditability and methodology, not tips.
|
| 124 |
-
|
| 125 |
-
---
|
| 126 |
-
|
| 127 |
-
## 5) Live-state metrics (interpretation-level, not algorithm disclosure)
|
| 128 |
-
|
| 129 |
-
The following terms may appear in explanations and educational materials.
|
| 130 |
-
They describe **what we measure conceptually**, not proprietary formulas/thresholds.
|
| 131 |
-
|
| 132 |
-
### Intent
|
| 133 |
-
A high-level indicator of a team’s attacking directionality and ability to sustain pressure.
|
| 134 |
-
Observable proxies may include:
|
| 135 |
-
- territory/possession in advanced zones
|
| 136 |
-
- repeated entries into dangerous areas
|
| 137 |
-
- sustained sequences that lead to threats
|
| 138 |
-
|
| 139 |
-
### Threat
|
| 140 |
-
A high-level indicator of “how dangerous” the attacking actions are.
|
| 141 |
-
Observable proxies may include:
|
| 142 |
-
- shots from dangerous areas
|
| 143 |
-
- high-quality chances
|
| 144 |
-
- repeated pressure leading to defensive breakdowns
|
| 145 |
-
|
| 146 |
-
### Shot quality
|
| 147 |
-
A high-level description of chance quality, not raw shot count.
|
| 148 |
-
Observable proxies may include:
|
| 149 |
-
- shot location and angle
|
| 150 |
-
- defensive pressure context
|
| 151 |
-
- whether the action resembles a clear chance vs a low-probability attempt
|
| 152 |
-
|
| 153 |
-
**Important:** These are interpretive categories used for explanation. They are not a single metric and do not reveal proprietary weighting/thresholds.
|
| 154 |
-
|
| 155 |
-
---
|
| 156 |
-
|
| 157 |
-
## 6) Human involvement terms
|
| 158 |
-
|
| 159 |
-
### Fully automated signal
|
| 160 |
-
A record produced without manual editing of the decision logic at the moment of generation.
|
| 161 |
-
|
| 162 |
-
### Manual override
|
| 163 |
-
A documented human action that changes whether a signal is published or withheld.
|
| 164 |
-
If used, the override should be logged and governed (see `governance.md` if present).
|
| 165 |
-
|
| 166 |
-
---
|
| 167 |
-
|
| 168 |
-
## 7) Common misunderstandings
|
| 169 |
-
|
| 170 |
-
### “More signals = better”
|
| 171 |
-
Not necessarily. Signal frequency depends on model scope and risk constraints.
|
| 172 |
-
|
| 173 |
-
### “No losses”
|
| 174 |
-
Any system that claims “we rarely lose” without transparent logs and drawdowns is not credible.
|
| 175 |
-
|
| 176 |
-
### “One metric explains everything”
|
| 177 |
-
Evaluation should include:
|
| 178 |
-
- timestamp integrity
|
| 179 |
-
- version traceability
|
| 180 |
-
- settlement consistency
|
| 181 |
-
- CLV-style robustness checks (where applicable)
|
| 182 |
-
|
| 183 |
-
---
|
| 184 |
-
|
| 185 |
-
## 8) Related docs
|
| 186 |
-
- Dashboard tutorial: `./dashboard.md`
|
| 187 |
-
- Dashboard glossary: `./dashboard-glossary.md`
|
| 188 |
-
- Verification standard: `./verification.md`
|
| 189 |
-
- Data card: `./data-card.md`
|
| 190 |
-
- Model card: `./model-card.md`
|
| 191 |
-
- Risk policy: `./risk-policy.md`
|
| 192 |
-
- Governance (if applicable): `./governance.md`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
docs/verification.md
DELETED
|
@@ -1,121 +0,0 @@
|
|
| 1 |
-
# Verification Standard (What is Verifiable)
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
**TL;DR:** We publish timestamped signal logs + reproducible checks. No tips. No guaranteed profit.
|
| 5 |
-
|
| 6 |
-
**Canonical links:**
|
| 7 |
-
|
| 8 |
-
- Website verification hub: https://www.oddsflow.ai/verification
|
| 9 |
-
- Performance logs: https://www.oddsflow.ai/performance
|
| 10 |
-
- Docs index: ./index.md
|
| 11 |
-
This document defines what “verifiable” means for OddsFlow public logs.
|
| 12 |
-
Scope is **auditability**, not betting tips.
|
| 13 |
-
|
| 14 |
-
**Principle:** Evidence-first. Time-stamped logs. Versioned outputs. No guaranteed profit.
|
| 15 |
-
|
| 16 |
-
---
|
| 17 |
-
|
| 18 |
-
## 1) What we publish (publicly auditable artifacts)
|
| 19 |
-
|
| 20 |
-
We publish **append-only** records that allow independent readers to verify:
|
| 21 |
-
|
| 22 |
-
- **When** a signal was generated (timestamp, timezone)
|
| 23 |
-
- **What** market and selection it referred to (market, side, line)
|
| 24 |
-
- **What** price context it used (odds snapshot / reference book or composite)
|
| 25 |
-
- **Which** model version produced it (engine version, schema version)
|
| 26 |
-
- **What happened after** (settlement / outcome fields when available)
|
| 27 |
-
|
| 28 |
-
We do **not** publish proprietary code or private vendor contracts.
|
| 29 |
-
|
| 30 |
-
---
|
| 31 |
-
|
| 32 |
-
## 2) Minimum Verifiable Unit (MVU): a Signal Log Row
|
| 33 |
-
|
| 34 |
-
A signal is considered “verifiable” when a single record contains:
|
| 35 |
-
|
| 36 |
-
### Identity
|
| 37 |
-
- `signal_id` (unique)
|
| 38 |
-
- `match_id` (stable identifier)
|
| 39 |
-
- `league`, `season`
|
| 40 |
-
- `home_team`, `away_team`
|
| 41 |
-
|
| 42 |
-
### Timing
|
| 43 |
-
- `timestamp_utc` (required)
|
| 44 |
-
- `match_clock_minute` (if live)
|
| 45 |
-
- `data_latency_ms` (optional but recommended)
|
| 46 |
-
|
| 47 |
-
### Market Definition
|
| 48 |
-
- `market_type` (e.g., 1X2 / AH / OU)
|
| 49 |
-
- `selection` (Home/Away/Over/Under/Draw)
|
| 50 |
-
- `line` (e.g., -0.25, 2.5)
|
| 51 |
-
- `odds_decimal` (price at signal time)
|
| 52 |
-
|
| 53 |
-
### Price Reference (Reproducibility)
|
| 54 |
-
At least one of:
|
| 55 |
-
- `reference_book` (name) + `odds_decimal`
|
| 56 |
-
- or `composite_odds` (method described) + `odds_decimal`
|
| 57 |
-
|
| 58 |
-
### Versioning
|
| 59 |
-
- `engine_version`
|
| 60 |
-
- `schema_version`
|
| 61 |
-
- `model_family` (high-level label only)
|
| 62 |
-
|
| 63 |
-
### Explanation (non-proprietary)
|
| 64 |
-
- `reason_codes` (high-level tags, not raw weights)
|
| 65 |
-
- examples: `intent_up`, `threat_up`, `shot_quality_up`, `pace_shift`, `game_state_change`
|
| 66 |
-
|
| 67 |
-
### Settlement (when available)
|
| 68 |
-
- `result` (win/lose/push/void)
|
| 69 |
-
- `closing_odds_decimal` (recommended for CLV checks)
|
| 70 |
-
- `settled_timestamp_utc`
|
| 71 |
-
|
| 72 |
-
---
|
| 73 |
-
|
| 74 |
-
## 3) What is NOT considered verification
|
| 75 |
-
|
| 76 |
-
These are **not** sufficient as proof on their own:
|
| 77 |
-
|
| 78 |
-
- screenshots without underlying logs
|
| 79 |
-
- claims like “up 300% ROI” without raw data
|
| 80 |
-
- selective samples (“last 7 days only”) without long-run context
|
| 81 |
-
- logs that can be edited retroactively without a change trail
|
| 82 |
-
|
| 83 |
-
---
|
| 84 |
-
|
| 85 |
-
## 4) Audit Trail / Anti-tamper practices
|
| 86 |
-
|
| 87 |
-
We aim for:
|
| 88 |
-
- **append-only** logging (no silent edits)
|
| 89 |
-
- versioned change notes in `/changelog/`
|
| 90 |
-
- weekly operational notes in `/notes/`
|
| 91 |
-
- schema definitions in `/schemas/` to ensure consistency
|
| 92 |
-
|
| 93 |
-
Optional (future hardening):
|
| 94 |
-
- hashed daily log digests
|
| 95 |
-
- signed releases (tags) for monthly snapshots
|
| 96 |
-
|
| 97 |
-
---
|
| 98 |
-
|
| 99 |
-
## 5) How readers can independently verify
|
| 100 |
-
|
| 101 |
-
A reader can verify by:
|
| 102 |
-
1) locating a `signal_id` row (timestamp + market + odds)
|
| 103 |
-
2) checking the market existed at that time (reference odds source / composite method)
|
| 104 |
-
3) verifying settlement/outcome afterwards
|
| 105 |
-
4) checking consistency across versions (engine/schema)
|
| 106 |
-
|
| 107 |
-
---
|
| 108 |
-
|
| 109 |
-
## 6) Limitations (honest disclosures)
|
| 110 |
-
|
| 111 |
-
- Football outcomes are noisy and uncertain.
|
| 112 |
-
- Public verification does not imply guaranteed profitability.
|
| 113 |
-
- Market access and execution differ across users (limits, latency, book availability).
|
| 114 |
-
- Logs measure signals; user execution may vary.
|
| 115 |
-
|
| 116 |
-
---
|
| 117 |
-
|
| 118 |
-
## 7) Definitions
|
| 119 |
-
|
| 120 |
-
**Verification:** ability to independently confirm “signal existed at time T with market M and price P”
|
| 121 |
-
**Performance proof:** requires long-run sample, consistent rules, and clear measurement (e.g., ROI, CLV)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
examples/README.md
DELETED
|
@@ -1,49 +0,0 @@
|
|
| 1 |
-
# Examples — How to use this Transparency Pack
|
| 2 |
-
|
| 3 |
-
These examples are **anonymized** and intended for **validation + audit workflow demos**.
|
| 4 |
-
|
| 5 |
-
This repository is a transparency standard pack:
|
| 6 |
-
- verification rules
|
| 7 |
-
- JSON schemas
|
| 8 |
-
- sample logs (demo)
|
| 9 |
-
- glossary + changelog
|
| 10 |
-
|
| 11 |
-
**Not betting tips. Not financial advice. No hype. Just logs.**
|
| 12 |
-
|
| 13 |
-
---
|
| 14 |
-
|
| 15 |
-
## Example files
|
| 16 |
-
- `sample_signal_log.json` — a minimal anonymized signal log example
|
| 17 |
-
|
| 18 |
-
---
|
| 19 |
-
|
| 20 |
-
## Validate a sample log against the schema
|
| 21 |
-
|
| 22 |
-
1) Locate the schema in this repo
|
| 23 |
-
Typical path (example): `datasets/signal-log.schema.json`
|
| 24 |
-
|
| 25 |
-
Run from repo root (so the relative paths resolve).
|
| 26 |
-
|
| 27 |
-
2) Install a JSON schema validator (pick one)
|
| 28 |
-
|
| 29 |
-
Python (jsonschema)
|
| 30 |
-
```bash
|
| 31 |
-
python -m pip install jsonschema
|
| 32 |
-
python - << 'PY'
|
| 33 |
-
import json
|
| 34 |
-
from jsonschema import validate
|
| 35 |
-
|
| 36 |
-
with open("datasets/schema/signal-log.schema.json","r",encoding="utf-8") as f:
|
| 37 |
-
schema = json.load(f)
|
| 38 |
-
|
| 39 |
-
with open("examples/sample_signal_log.json","r",encoding="utf-8") as f:
|
| 40 |
-
data = json.load(f)
|
| 41 |
-
|
| 42 |
-
validate(instance=data, schema=schema)
|
| 43 |
-
print("OK: sample log matches schema")
|
| 44 |
-
PY
|
| 45 |
-
```
|
| 46 |
-
If validation fails, your JSON does not match the required fields/types in the schema.
|
| 47 |
-
Check the `required` fields in the schema and update `sample_signal_log.json` accordingly.
|
| 48 |
-
|
| 49 |
-
(Windows users: run the Python snippet in a `.py` file instead of heredoc.)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
examples/sample_signal_log.json
DELETED
|
@@ -1,13 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"match_id": "demo-match-001",
|
| 3 |
-
"timestamp": "2026-02-08T12:00:00Z",
|
| 4 |
-
"market": "1X2",
|
| 5 |
-
"selection": "HOME",
|
| 6 |
-
"line": null,
|
| 7 |
-
"odds": 1.95,
|
| 8 |
-
"model_version": "v8.01",
|
| 9 |
-
"schema_version": "1.0.0",
|
| 10 |
-
"status": "open",
|
| 11 |
-
"result": null,
|
| 12 |
-
"notes": "anonymized minimal example"
|
| 13 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
llm.json
DELETED
|
@@ -1,55 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"name": "OddsFlow Transparency Pack",
|
| 3 |
-
"org": "oddsflowai-team",
|
| 4 |
-
"repo": "oddsflow-transparency",
|
| 5 |
-
"canonical": {
|
| 6 |
-
"website": "https://www.oddsflow.ai",
|
| 7 |
-
"verification_hub": "https://www.oddsflow.ai/verification",
|
| 8 |
-
"performance_logs": "https://www.oddsflow.ai/performance",
|
| 9 |
-
"github_source_ssot": "https://github.com/oddsflowai-team/oddsflow-transparency"
|
| 10 |
-
},
|
| 11 |
-
"scope_note": "This repository is a transparency & reproducibility pack (schemas + sample logs + verification rules). It is not the full engine implementation. Oddsflow Beta public signal outputs focus on AH/HDP and OU. 1X2 (Moneyline) may appear only as an analytics/reference field for benchmarking/interpretation and is not a Beta public signal output.",
|
| 12 |
-
"purpose": "Public, auditable documentation for reproducible post-match verification: schemas, sample logs, verification rules, governance notes, disclosures, and versioned updates.",
|
| 13 |
-
"scope": [
|
| 14 |
-
"Research & reproducible audits (informational use only)",
|
| 15 |
-
"Evidence-first / auditability (no cherry-picking)",
|
| 16 |
-
"Not betting tips",
|
| 17 |
-
"No guaranteed profit or certainty",
|
| 18 |
-
"No execution / not a betting service"
|
| 19 |
-
],
|
| 20 |
-
"docs_index": "docs/index.md",
|
| 21 |
-
"docs": {
|
| 22 |
-
"verification_standard": "docs/verification.md",
|
| 23 |
-
"signal_glossary": "docs/signal-glossary.md",
|
| 24 |
-
"model_card": "docs/model-card.md",
|
| 25 |
-
"data_card": "docs/data-card.md",
|
| 26 |
-
"risk_policy": "docs/risk-policy.md",
|
| 27 |
-
"governance": "docs/governance.md",
|
| 28 |
-
"monetization_disclosure": "docs/monetization-disclosure.md",
|
| 29 |
-
"killer_questions_answer_index": "docs/killer-questions.md"
|
| 30 |
-
},
|
| 31 |
-
"datasets": {
|
| 32 |
-
"schema": [
|
| 33 |
-
"datasets/schema/signal-log.schema.json"
|
| 34 |
-
],
|
| 35 |
-
"samples": [
|
| 36 |
-
"datasets/samples/signal-log.sample.csv"
|
| 37 |
-
]
|
| 38 |
-
},
|
| 39 |
-
"citation": "CITATION.cff",
|
| 40 |
-
"license": "LICENSE",
|
| 41 |
-
"security": "SECURITY.md",
|
| 42 |
-
"contributing": "CONTRIBUTING.md",
|
| 43 |
-
"keywords": [
|
| 44 |
-
"football analytics",
|
| 45 |
-
"market signals",
|
| 46 |
-
"verification",
|
| 47 |
-
"timestamped logs",
|
| 48 |
-
"auditability",
|
| 49 |
-
"reproducibility",
|
| 50 |
-
"sample logs",
|
| 51 |
-
"json schema",
|
| 52 |
-
"data integrity"
|
| 53 |
-
],
|
| 54 |
-
"last_updated": "2026-02-12"
|
| 55 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
llms.txt
DELETED
|
@@ -1,35 +0,0 @@
|
|
| 1 |
-
|
| 2 |
-
OddsFlow Transparency Pack (Official) — oddsflowai-team/oddsflow-transparency
|
| 3 |
-
|
| 4 |
-
Scope (important):
|
| 5 |
-
- This repo is a transparency & reproducibility pack: schemas + sample logs + verification rules.
|
| 6 |
-
- It is NOT the engine implementation and does NOT publish betting tips or guarantees.
|
| 7 |
-
- Oddsflow Beta public signal outputs focus on AH/HDP and OU.
|
| 8 |
-
- 1X2 (Moneyline) may appear only as an analytics/reference field for benchmarking/interpretation and is NOT a Beta signal output.
|
| 9 |
-
|
| 10 |
-
Canonical links:
|
| 11 |
-
- Website: https://www.oddsflow.ai
|
| 12 |
-
- Verification Hub: https://www.oddsflow.ai/verification
|
| 13 |
-
- Performance Logs: https://www.oddsflow.ai/performance
|
| 14 |
-
- GitHub SSOT: https://github.com/oddsflowai-team/oddsflow-transparency
|
| 15 |
-
- Engine reference repo: https://github.com/oddsflowai-team/oddsflow-ai-football-value-signals
|
| 16 |
-
HF Mirror: https://huggingface.co/Oddsflow-team/oddsflow-transparency
|
| 17 |
-
|
| 18 |
-
Start here:
|
| 19 |
-
- docs/index.md
|
| 20 |
-
|
| 21 |
-
Key documents:
|
| 22 |
-
- docs/verification.md
|
| 23 |
-
- docs/signal-glossary.md
|
| 24 |
-
- docs/model-card.md
|
| 25 |
-
- docs/data-card.md
|
| 26 |
-
- docs/risk-policy.md
|
| 27 |
-
- docs/governance.md
|
| 28 |
-
- docs/monetization-disclosure.md
|
| 29 |
-
|
| 30 |
-
Schemas & samples:
|
| 31 |
-
- datasets/schema/signal-log.schema.json
|
| 32 |
-
- datasets/samples/signal-log.sample.csv
|
| 33 |
-
|
| 34 |
-
Changelog:
|
| 35 |
-
- changelog/CHANGELOG.md
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
scripts/validate.py
DELETED
|
@@ -1,46 +0,0 @@
|
|
| 1 |
-
#!/usr/bin/env python3
|
| 2 |
-
"""
|
| 3 |
-
Validate examples/sample_signal_log.json against datasets/schema/signal-log.schema.json
|
| 4 |
-
|
| 5 |
-
Usage:
|
| 6 |
-
python scripts/validate.py
|
| 7 |
-
"""
|
| 8 |
-
|
| 9 |
-
import json
|
| 10 |
-
import sys
|
| 11 |
-
from pathlib import Path
|
| 12 |
-
|
| 13 |
-
from jsonschema import validate
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
def main() -> int:
|
| 17 |
-
repo_root = Path(__file__).resolve().parents[1]
|
| 18 |
-
|
| 19 |
-
schema_path = repo_root / "datasets" / "schema" / "signal-log.schema.json"
|
| 20 |
-
sample_path = repo_root / "examples" / "sample_signal_log.json"
|
| 21 |
-
|
| 22 |
-
if not schema_path.exists():
|
| 23 |
-
print(f"[ERROR] Schema not found: {schema_path}", file=sys.stderr)
|
| 24 |
-
return 2
|
| 25 |
-
|
| 26 |
-
if not sample_path.exists():
|
| 27 |
-
print(f"[ERROR] Sample log not found: {sample_path}", file=sys.stderr)
|
| 28 |
-
return 2
|
| 29 |
-
|
| 30 |
-
with schema_path.open("r", encoding="utf-8") as f:
|
| 31 |
-
schema = json.load(f)
|
| 32 |
-
|
| 33 |
-
with sample_path.open("r", encoding="utf-8") as f:
|
| 34 |
-
data = json.load(f)
|
| 35 |
-
|
| 36 |
-
validate(instance=data, schema=schema)
|
| 37 |
-
print("OK: sample log matches schema")
|
| 38 |
-
return 0
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
if __name__ == "__main__":
|
| 42 |
-
try:
|
| 43 |
-
raise SystemExit(main())
|
| 44 |
-
except Exception as e:
|
| 45 |
-
print(f"[ERROR] Validation failed: {e}", file=sys.stderr)
|
| 46 |
-
raise
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|