Monitor open spreads with live Greeks and typed health.

FerroSpread does not stop at the fill. A saved spread gets live position Greeks and a health readout that flags when it needs attention — the same monitoring behind the position views in the MorphIQ Labs spread products.

Why this is an engine problem, not a UI filter

!

A ranked candidate is a pre-trade artifact; an open position needs its own current Greeks and decay, not a stale entry score.

!

Position risk hides until someone looks — time stops, max-loss lines, and stale theses need to raise a flag on their own.

!

A dashboard needs one status and an alarm count, not six unaggregated signals.

How FerroSpread handles it

01

Read position analytics

compute_saved_spread_analytics returns net and per-leg Greeks, theta decay per day, short-strike distance from spot, and target progress for a saved spread.

02

Grade against the plan

compute_health_components scores the position on profit target, max loss, time stop, triggers, thesis staleness, and liquidity.

03

Aggregate and alert

aggregate_status reduces the components to the worst case and alarmed_count drives the alert — one status the UI can act on.

What makes this FerroSpread-shaped

compute_saved_spread_analytics and compute_health_components are public entry points of the spread-analytics engine.

Fail-loud: a missing mark or IV yields an Unavailable confidence, never a fabricated Greek.

HealthStatus carries a .worse() combinator (Alarm > Watch > Ok), so the aggregate always reflects the most urgent component.

Common concerns

Is this the same as ranking a candidate?

No. Ranking is pre-trade scoring of constructed candidates; monitoring operates on a saved, open spread and reports its current Greeks and health.

What does the health readout cover?

Profit target, max loss, time stop (DTE), exit triggers, thesis staleness, and liquidity — each a typed component, rolled into one aggregate status plus an alarm count.