59 lines
1.7 KiB
Go
59 lines
1.7 KiB
Go
package probability
|
|
|
|
import (
|
|
"log/slog"
|
|
|
|
"github.com/costap/quarkshologridledger/tongo-core/internal/domain/entity"
|
|
)
|
|
|
|
// Calculator recalculates market probabilities from match state.
|
|
type Calculator struct {
|
|
logger *slog.Logger
|
|
}
|
|
|
|
// New creates a new Calculator instance.
|
|
func New(logger *slog.Logger) *Calculator {
|
|
return &Calculator{
|
|
logger: logger,
|
|
}
|
|
}
|
|
|
|
// RecalculateAll recomputes probabilities for all markets in a match.
|
|
func (c *Calculator) RecalculateAll(match *entity.Match) {
|
|
c.logger.Debug("Recalculating all market probabilities for match", "id", match.ID)
|
|
}
|
|
|
|
// matchWinner calculates Model A (Match Winner).
|
|
func (c *Calculator) matchWinner(match *entity.Match) (homeProb, awayProb float64) {
|
|
return 0.5, 0.5
|
|
}
|
|
|
|
// kineticYield calculates Model B (Total Kinetic Yield).
|
|
func (c *Calculator) kineticYield(match *entity.Match, line float64) (overProb, underProb float64) {
|
|
return 0.5, 0.5
|
|
}
|
|
|
|
// firstBreach calculates Model C (First Shield Breach).
|
|
func (c *Calculator) firstBreach(match *entity.Match) (homeFirstProb, awayFirstProb float64) {
|
|
return 0.5, 0.5
|
|
}
|
|
|
|
// duration calculates Model D (Engagement Duration).
|
|
func (c *Calculator) duration(match *entity.Match, line float64) (overProb, underProb float64) {
|
|
return 0.5, 0.5
|
|
}
|
|
|
|
// comeback calculates Model E (Comeback Victory).
|
|
func (c *Calculator) comeback(match *entity.Match) (homeProb, awayProb float64) {
|
|
return 0.05, 0.05
|
|
}
|
|
|
|
// mutualDestruction calculates Model F (Mutual Destruction).
|
|
func (c *Calculator) mutualDestruction(match *entity.Match) float64 {
|
|
return 0.01
|
|
}
|
|
|
|
// subspaceAnomaly calculates Model G (Subspace Anomaly).
|
|
func (c *Calculator) subspaceAnomaly(match *entity.Match) (anomalyProb, cleanProb float64) {
|
|
return 0.1, 0.9
|
|
}
|