Browse documentation

Share Class Evolution

Check each share class against a reference class and flag unexpected drift.

Share Class Evolution checks each share class's NAV return against a chosen reference share class of the same sub-fund, flagging share classes that drift in statistically unexpected ways. It spots the anomaly without needing to fully recalculate every impact. It answers: is this share class moving out of line with its reference class after accounting for FX, fees, and hedging?

How it works

It looks for pricing errors at the share-class level by studying how each share class's NAV return deviates from a single reference class in the same sub-fund. Rather than fully recalculating every impact, it uses regression and time-series analysis to account for the legitimate reasons two classes diverge (FX and hedging, fees, distribution and flow policy), then examines the residual deviation. It sets robust statistical bounds on the NAV-per-share return and flags a breach when the return falls outside them.

What you get

  • The deviation over time between a share class's return and its reference class's return.
  • Analysis that accounts for the usual sources of legitimate difference (FX and hedging, fees, distribution and flow policy).
  • Statistical bounds for an acceptable NAV-per-share return, also expressed as a NAV-per-share price corridor.
  • A breach flag when the return falls outside its bounds, with a model status and its reason, and the fit's R² score.

In SPARK

The results arrive in a Share Class Evolution Signals data object (slug ngt_share_class_evolution_signals), created from the Share Class Evolution Signal template, version 1.0.0, in the template picker's Analytics group. Each row is one share class on one date, linked to its Share Class; reach the sub-fund through the share class. Every return column is in the share class's local currency.

ColumnSlugWhat it holds
Is breachis_breachTrue when the return is outside its bounds
Model status, Model status reasonmodel_status, model_status_reasonHow reliable the row's model is, and why
NAV per share returnreturnThe day's NAV-per-share return
Return lower / upper boundreturn_lower_bound, return_upper_boundThe acceptable return range
Return deviationreturn_deviationThe return's deviation from the peer-implied reference
Predicted deviationpredicted_deviationThe deviation the model predicted
NAV per share total return, Total return deviationtotal_return, total_return_deviationThe same, including the dividend effect
Bounds widthbounds_widthHow wide the range is
NAV per share price lower / upper boundnav_per_share_price_lower_bound, nav_per_share_price_upper_boundThe range as NAV-per-share price levels
R2 scorer2_scoreThe model fit, shown to 4 decimals
AUM groupaum_groupThe share class's AUM bucket

Return columns show as percentages by default. There is no separate major breach any more: the earlier template's major bounds, NAV impact and model-error diagnostics were removed as fit output rather than signal output.

The Exception Framework raises events on this object with NGT's rules sce.nav_breach (any breach) and sce.return_deviation (a total return deviation beyond 20 bp), and its SCE Potential NAV Breach exception turns the two together into a task. Track the rows in a data view or on a canvas.