fix: canonicalize score brackets and assessments
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
import pytest
|
||||
|
||||
from backtesting import engine as backtest_engine
|
||||
from ml import optimizer
|
||||
from scoring import engine as scoring_engine
|
||||
from scoring import policy
|
||||
|
||||
|
||||
def test_score_brackets_are_contiguous_and_shared_by_all_scoring_paths():
|
||||
assert backtest_engine.BRACKETS is policy.SCORE_BRACKETS
|
||||
assert optimizer.BRACKETS is policy.SCORE_BRACKETS
|
||||
|
||||
for left, right in zip(policy.SCORE_BRACKETS, policy.SCORE_BRACKETS[1:]):
|
||||
assert left[1] == right[0]
|
||||
|
||||
for tenth in range(0, 1001):
|
||||
score = tenth / 10
|
||||
matches = [bracket for bracket in policy.SCORE_BRACKETS if policy.score_in_bracket(score, bracket)]
|
||||
assert len(matches) == 1, f"score {score} matched {matches}"
|
||||
assert policy.assessment_for_score(score) == matches[0][2]
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("score", "assessment"),
|
||||
[
|
||||
(0, "EXTREME CAUTION"),
|
||||
(19.999, "EXTREME CAUTION"),
|
||||
(20, "CAUTION — OVERHEATED"),
|
||||
(35, "NEUTRAL"),
|
||||
(50, "MODERATE OPPORTUNITY"),
|
||||
(65, "STRONG ACCUMULATION ZONE"),
|
||||
(80, "EXTREME ACCUMULATION ZONE"),
|
||||
(100, "EXTREME ACCUMULATION ZONE"),
|
||||
],
|
||||
)
|
||||
def test_assessment_boundaries_match_live_scoring(score, assessment):
|
||||
assert policy.assessment_for_score(score) == assessment
|
||||
assert scoring_engine.assessment_for_score(score) == assessment
|
||||
Reference in New Issue
Block a user