T09 · Insecure Skill Coding Practices
- Location
trader.py:316- Finding
Configured Financial Safeguards Are Not Fully Enforced
- Content
View full analysis
tuple[str | None, float, str]: """ Returns (side, size, reasoning) or (None, 0, skip_reason). Conviction-based sizing per CLAUDE.md: - YES: conviction = (YES_THRESHOLD - p) / YES_THRESHOLD - NO: conviction = (p - NO_THRESHOLD) / (1 - NO_THRESHOLD) - size = max(MIN_TRADE, conviction * MAX_POSITION) """ p = getattr(market, "current_probability", None) if not isinstance(p, (int, float)): return None, 0, "missing probability" # Spread gate spread_cents = getattr(market, "spread_cents", None) if isinstance(spread_cents, (int, float)) and spread_cents / 100 > MAX_SPREAD: return None, 0, f"Spread {spread_cents/100:.1%} > {MAX_SPREAD:.1%}" # Days-to-resolution gate resolves_at = getattr(market, "resolves_at", None) if resolves_at: try: resolves = datetime.fromisoformat(resolves_at.replace("Z", "+00:00")) days = (resolves - datetime.now(timezone.utc)).days if days < MIN_DAYS: return None, 0, f"Only {days} days to resolve" except Exception: pass ...[truncated 3203 chars]- Remediation
View remediation
