The failures that hurt most are silent: a data feed that stops updating while the connection stays open, a strategy thread that deadlocks, a clock that drifts. None of these raise an exception, so nothing in the error path fires.
Implement it as a freshness check on the things that should keep changing: last tick timestamp per instrument, last strategy loop completion, last successful broker query. If any exceeds its expected interval by a margin, alert and consider the kill-switch.
Make the alert reach a human through a channel they will actually notice, and test it monthly. An alerting pipeline that has never fired in production is untested, and the first real firing is not when you want to find out.
Related: kill-switch, strategy-monitoring, missing-data, order-reconciliation