Files
btc-accumulation-monitor/tests/test_score_policy.py
T

39 lines
1.3 KiB
Python

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