115872aad0
Adds the 4th IAnomalyDetector: flags a sharp drop in the bookmaker's overround (raw implied-probability sum / margin) over a continuous live window. Informational/non-directional — excluded from outcome grading and backtest staking via AnomalyKind.IsDirectional(). - OverroundCompressionDetector: sliding-window scan mirroring SteamMove, score = min(1, compression / 0.10 reference), suspension-gap aware. - MatchWinEvidence.Probabilities gains Overround (pre-normalisation margin); evidence JSON shape unchanged. - Wired into DetectAnomaliesUseCase fan-out; AnomalyOptions + appsettings (window 120s, threshold 0.02); en/ru resx + KindLabel arms. - 11 detector tests incl. score saturation/scaling, inclusive threshold boundary, and a three-way (draw-leg) overround case.
18 lines
515 B
C#
18 lines
515 B
C#
using FluentAssertions;
|
|
using Marathon.Domain.Enums;
|
|
|
|
namespace Marathon.Domain.Tests.Enums;
|
|
|
|
public sealed class AnomalyKindExtensionsTests
|
|
{
|
|
[Theory]
|
|
[InlineData(AnomalyKind.SuspensionFlip, true)]
|
|
[InlineData(AnomalyKind.SteamMove, true)]
|
|
[InlineData(AnomalyKind.SuspensionFreeze, false)]
|
|
[InlineData(AnomalyKind.OverroundCompression, false)]
|
|
public void IsDirectional_Should_ClassifyKinds(AnomalyKind kind, bool expected)
|
|
{
|
|
kind.IsDirectional().Should().Be(expected);
|
|
}
|
|
}
|