DIONYSUS optimization troubleshooting

Empty universes, validation errors, timeouts, and confusing diagnostics—practical checks before you escalate.

Quick triage (do this first)

  1. Time — Note UTC time and whether markets were open; analysis freshness matters.
  2. trace_id — If the API returned one, include it in support tickets (log correlation).
  3. Capital — Confirm total_capital ≥ $1,000 and currency matches your expectation.
  4. Risk settingsmax_positions, max_position_size, max_risk_per_trade not accidentally 100× off (percent vs fraction).
  5. Status — IRIS /status or your deployment’s health for Firestore, DIONYSUS, ATHENA pipelines.

“No suitable symbols” / empty candidate set

Cause: After signal and price filters, no symbols left—or quality/SATA thresholds removed everyone.

Checks:

  • Batch analysis — Has your universe been analyzed recently? Stale or missing docs reduce the pool.
  • Signals — Only BUY, ADD, HOLD (with SATA gates) participate. If the market is defensive, few names may pass.
  • Indicators — Quality scoring needs critical fields (e.g. SATA, Mansfield RS paths). Missing data → symbol skipped.
  • Universe — Watchlists and screeners define what can enter Firestore; tiny universes yield tiny outputs.

See How DIONYSUS filters and ranks symbols.

400 validation errors

Common cases:

  • total_capital below minimum.
  • Malformed JSON or wrong types (string where number expected).
  • Invalid enum for allocation_strategy (must match allowed literals exactly).

Fix the payload; compare to the current IRIS API schema for your deployment.

401 / 403

  • Session expired — Re-authenticate in IRIS.
  • Direct DIONYSUS call without Bearer / OIDC — expected failure; use IRIS or proper service identity.

502 / 503 / 504

Upstream unavailable or timeout (DIONYSUS, Firestore, or identity). Back off; read FAQ and troubleshooting for generic proxy guidance.

“No viable positions” / capital errors after candidates exist

Cause: Per-line sizing could not place whole shares within risk and greedy limits, or greedy dropped everything.

Checks:

  • Raise total_capital or lower max_positions.
  • Relax max_position_size only if your policy allows (concentration risk).
  • High-priced stocks — thin slices may not afford one share (see Position sizing, stops, and targets).

Diagnostics look confusing

optimizer_diagnostics.binding_notes may mention:

  • max_position_size merged with sector_caps.DEFAULT
  • Softmax temperature scaled by vol target
  • Sector rebalancing notes
  • Turnover blend notes on rebalance

Read line-by-line against Constraint packs and optimizer diagnostics—they are factual, not recommendations.

Results differ from Hunt

Expected. Hunt and DIONYSUS use different endpoints, objectives, and ARTEMIS-specific heuristics vs full-book optimization. Compare Hunt, Cash Hunt, and optimization.

Still broken?

Gather: portfolio name, approximate capital, risk preset, screenshot of error, trace_id, and whether first-time vs rebalance optimize. Use Disclosures for support contacts.

Progress is saved in this browser. Cloud sync requires PUBLIC_IRIS_API_BASE, IRIS CORS allowlist, and window.__trinityIdToken.