Ask any credit-control team whether their fund covenants passed last period and they will tell you. Ask what each test was run against, and the answer gets slower. Ask how many of those tests have not actually been re-run since March, and the room goes quiet.
That is not a criticism of the teams. It is a description of what most monitoring stacks can and cannot say. They store a result. They rarely store the age of the input, the date the input was due, or whether a newer input exists that nobody has keyed in yet. So the book reports a clean sheet, and the clean sheet is partly made of numbers that are no longer true.
Three failure modes, one symptom
The symptom is the same in every case: a covenant shows as passed. The causes are different and need different responses.
| Failure | What happened | What it looks like on the book |
|---|---|---|
| Stale | A NAV was received and tested, and then nothing newer arrived or was applied. The last figure is still doing the work of the current one. | A pass, dated months ago, with no flag. |
| Late | The reporting obligation has a due date. The date has gone by. No one has chased, or the chase is in someone's inbox. | A pass, because the previous period still shows. |
| Missing | The obligation was never set up, or the fund was added to an umbrella agreement and the deliverable was not. There is no calendar item to be late against. | Nothing at all, which reads as fine. |
Missing is the quiet one. A fund added to an existing umbrella ISDA inherits the triggers on paper and inherits nothing on the calendar. It can sit there for a year with no NAV ever requested, and every report will show it as compliant because no test has ever failed.
Days-stale is a risk metric
Here is the argument we want to make. The age of the NAV behind a test is not a data-operations detail. It is a first-class risk number, on a par with headroom to the trigger, and it should sit next to headroom on every screen and in every committee pack.
A fund 3% from its one-month trigger on a NAV received last week is a watch item. A fund 3% from its trigger on a NAV received in March is an unknown. You do not know whether it is at 3% or through the trigger, and the honest presentation is to say so. A monitoring system that prints the March result without the March date is presenting a guess as a fact.
Stale is a state, not an age. A quarterly fund with a forty-day-old NAV is fine. A daily fund with a five-day-old NAV is not. A fund that has suspended dealing is stale the day the notice lands, whatever the date on the last statement.
That last point matters. The staleness rule has to come from the agreement and from events, not from a global threshold. The reporting frequency in the schedule sets the due date. A suspension notice overrides it. An indicative NAV during a suspension can be recorded but should never be tested as if it were official.
What we do about it
In ExactCov, every deliverable in an agreement becomes a calendar item with a due date and a cure period. Those items move through scheduled, due, overdue and received, and a NAV whose deliverable is overdue is marked stale until a new one lands. The chase log sits on the fund. The morning view lists breaches first, then stale data, so the second question a credit officer asks each day is answered before they ask it.
None of that changes the covenants. It changes what you can say about them. A pass with a date and a source is a fact. A pass without either is a hope, and the book should not be built on hope.