Skip to content

Risk signal detection

Watching for emerging market stress while filtering out scheduled, routine coverage.

A desk wants to hear about sovereign debt and emerging market stress as it surfaces — but not about the scheduled rate decisions that dominate the same vocabulary every month.

MATCH DIRECTION(["sovereign debt concern", "emerging market stress"]) CONE 0.4
  AND CONTRAST(
        ATTRACT ["credit spreads", "bond yields"],
        REPEL   ["routine monetary policy", "scheduled rate decision"]
      )
NAMESPACE "org:hedgefund", GLOBAL
{
  "match": {
    "and": [
      { "direction": { "toward": ["sovereign debt concern", "emerging market stress"], "cone": 0.4 } },
      { "contrast": {
          "attract": ["credit spreads", "bond yields"],
          "repel": ["routine monetary policy", "scheduled rate decision"] } }
    ]
  },
  "namespace": { "include": ["org:hedgefund"], "global": true }
}

Why each clause is there

DIRECTION, not DISTANCE. The signal being watched for is a theme, and it arrives at wildly different intensities — a clause in a longer note, or a piece entirely about it. A cone catches both; a sphere would favour the second and miss the first, which is the one with time value.

CONTRAST does the filtering. Scheduled policy coverage and genuine stress coverage share almost all their vocabulary, so no keyword exclusion separates them. Repelling from "routine monetary policy" and "scheduled rate decision" moves the composite away from the calendar-driven register while keeping the credit vocabulary.

No WITHIN on the contrast. Without a floor the clause contributes to the score without hard-rejecting anything, so DIRECTION decides membership and CONTRAST shapes the ranking. Adding WITHIN 0.7 would make it a filter instead — a reasonable change once you have seen what actually matches.

GLOBAL alongside the private namespace. Market-moving news arrives from outside the organisation. Including only "org:hedgefund" would restrict the query to what the desk had already written down.

What to adjust first

Widen CONE before touching anything else. 0.4 radians is about 23°, which is fairly tight for a two-concept mean; if the query is quiet, 0.5 is the first thing to try.

If it is noisy instead, the usual cause is the repel set being too close to the attract set — see CONTRAST.