z_score

Defined in fynance.features.metrics

z_score(X, w=0, kind='s', axis=0, dtype=None)[source]

Compute the Z-score of each X’ series.

Parameters:
Xnp.ndarray[dtype, ndim=1 or 2]

Series of index, prices or returns.

wint, optional

Size of the lagged window of the moving averages, must be positive. If w is None or w=0, then w=X.shape[axis]. Default is None.

kind{‘e’, ‘s’, ‘w’}
  • If ‘e’ then use exponential moving average, see ema for details.

  • If ‘s’ (default) then use simple moving average, see sma for details.

  • If ‘w’ then use weighted moving average, see wma for details.

axis{0, 1}, optional

Axis along wich the computation is done. Default is 0.

dtypenp.dtype, optional

The type of the output array. If dtype is not given, infer the data type from X input.

Returns:
dtype or np.ndarray[dtype, ndim=1]

Value of Z-score for each series.

See also

roll_z_score, mdd, calmar, drawdown, sharpe

Notes

Compute the z-score function for a specific average and standard deviation function such that:

\[z = \frac{X_t - \mu_t}{\sigma_t}\]

Where \(\mu_t\) is the average and \(\sigma_t\) is the standard deviation.

Examples

>>> X = np.array([70, 100, 80, 120, 160, 80]).astype(np.float64)
>>> z_score(X, w=3, kind='e')
-1.0443574118998766
>>> z_score(X, w=3)
-1.224744871391589
>>> z_score(X.reshape([6, 1]), w=3)
array([-1.22474487])