Analysis rules
Calculation Audit
The current rule thresholds, scoring weights, and known overlap risks behind Thunderstrike Market deals.
Canonical module
Shared outputs
The shared backend home is market_rules.py. Item Intelligence and rule payloads should use this module for deal quality, Price Bait/reset detection, market regime, confidence, and starter budget guidance.
- Likely Price Bait: current price greater than 4.0x market average, or above the 400% difference guardrail.
- Reset risk: current price greater than 1.6x market average while current supply is 3 or fewer.
- Thin demand: sold/day below 2, or regional sales rate between 0 and 0.03.
- Opportunity feed gate: at least 1g profit, unless sold/day is greater than 500.
- Cross-faction profit: sell-side price is reduced by the 15% auction-house cut before subtracting the buy-side price.
Deal Quality Score
- Score is capped to 0-100.
- Demand contributes up to 25 points from sold/day or sales rate.
- Discount or route profit contributes up to 26 points.
- Stability contributes up to 18 points.
- Supply contributes up to 16 points.
- Trend contributes up to 12 points.
- Positive profit context contributes 10 points.
- Likely Price Bait caps normal deal quality at 18 so outliers cannot become high-score buys.
Labels: Excellent is 78+, Good is 62-77, Speculative is 45-61, and Weak is below 45.
Confidence And Regime
- Confidence checks history depth, market average, demand data, stability, and Price Bait status.
- High confidence requires all 5 checks. Medium requires 3-4. Low is 0-2.
- Market regime labels include volatile uptrend, volatile market, supply squeeze, markdown phase, oversupplied, liquid stable, and range-bound.
- Budget guidance scales first-entry sizing by score and confidence, and drops to zero for likely Price Bait.
Known Overlap Risks
- Some CLI/report paths in tsm_market.py still carry legacy scoring and market-state logic. Migrate those toward market_rules.py when those outputs are next touched.
- Some Market Command and report rankings still use section-specific weights. That is acceptable for ordering, but hard exclusion gates should stay aligned with market_rules.py.
- LLM commentary is an explanation layer only. It should explain rule-shortlisted rows and should not choose winners from the whole market without pre-filtering.
Next Improvements
- Add reason-code icons for every shared signal.
- Expose exact reason codes in more tables, not only item pages.
- Add a backtest report that records which buy signals would have cleared after later snapshots.
- Open Signal Backtest for the current historical check.
- Tune thresholds from observed outcomes rather than visual inspection alone.