Retire completed GTL tuning harnesses
This commit is contained in:
@@ -252,52 +252,6 @@ def test_generate_targets_spreads_across_distance_bands():
|
||||
assert any(m > 4.6 for m in multiples), "expected an aggressive (far) target"
|
||||
|
||||
|
||||
def test_generate_targets_research_candidate_limit_can_expand_or_disable_cap():
|
||||
levels = [
|
||||
_SRLevelStub(
|
||||
id=index,
|
||||
price_level=100.0 + index * 2.0,
|
||||
type="resistance",
|
||||
strength=50 + index,
|
||||
)
|
||||
for index in range(1, 9)
|
||||
]
|
||||
|
||||
default = target_generator.generate_targets(
|
||||
"long", 100.0, 97.0, levels, 2.0 # type: ignore[arg-type]
|
||||
)
|
||||
expanded = target_generator.generate_targets(
|
||||
"long", 100.0, 97.0, levels, 2.0, # type: ignore[arg-type]
|
||||
max_targets=8,
|
||||
)
|
||||
uncapped = target_generator.generate_targets(
|
||||
"long", 100.0, 97.0, levels, 2.0, # type: ignore[arg-type]
|
||||
max_targets=None,
|
||||
)
|
||||
|
||||
assert len(default) == 5
|
||||
assert len(expanded) == 8
|
||||
assert len(uncapped) == 8
|
||||
assert [row["price"] for row in uncapped] == sorted(
|
||||
row["price"] for row in uncapped
|
||||
)
|
||||
|
||||
|
||||
def test_generate_targets_research_max_atr_override_is_universal():
|
||||
levels = [
|
||||
_SRLevelStub(id=1, price_level=110.0, type="resistance", strength=60),
|
||||
_SRLevelStub(id=2, price_level=112.0, type="resistance", strength=60),
|
||||
]
|
||||
|
||||
targets = target_generator.generate_targets(
|
||||
"long", 100.0, 97.0, levels, 2.0, # type: ignore[arg-type]
|
||||
max_targets=None,
|
||||
max_atr_multiple_override=5.5,
|
||||
)
|
||||
|
||||
assert [row["price"] for row in targets] == [110.0]
|
||||
|
||||
|
||||
def test_probability_decreases_with_distance():
|
||||
"""A far target must be far less likely than a near one — no 90% at +39%."""
|
||||
config = {
|
||||
@@ -377,23 +331,6 @@ def test_zone_representative_levels_singletons_unchanged():
|
||||
assert {round(r.price_level) for r in reps} == {120, 150}
|
||||
|
||||
|
||||
def test_zone_representative_levels_accepts_research_tolerance():
|
||||
from types import SimpleNamespace
|
||||
from app.services.recommendation_service import _zone_representative_levels
|
||||
|
||||
levels = [
|
||||
SimpleNamespace(id=1, price_level=110.0, type="resistance", strength=50),
|
||||
SimpleNamespace(id=2, price_level=111.5, type="resistance", strength=50),
|
||||
]
|
||||
|
||||
tight = _zone_representative_levels(levels, 100.0, tolerance=0.01)
|
||||
wide = _zone_representative_levels(levels, 100.0, tolerance=0.02)
|
||||
|
||||
assert len(tight) == 2
|
||||
assert len(wide) == 1
|
||||
assert wide[0].price_level == 110.0
|
||||
|
||||
|
||||
def test_zone_representative_levels_soft_strength_avoids_resaturation():
|
||||
from types import SimpleNamespace
|
||||
from app.services.recommendation_service import _zone_representative_levels
|
||||
|
||||
Reference in New Issue
Block a user