FactorExposures

FactorExposures#

class sigtech.framework.analytics.optimization.factor_exposure.FactorExposures

A class implementing estimation methods for exposures to factors for a selection of instruments, i.e. performing a series of multivariate time-series regressions based on a configuration.

The configuration is created by adding steps to the object.

  • A fit() method executes the steps on the data provided, calculating the factor loadings across the instruments.

  • A report() method is available to generate a report summarizing the results.

Here is an example of configuring an object to perform a multivariate regression across a dataframe of factors, followed by a single regression of a factor series against the remaining residual.

>>> factor_exposure = sig.FactorExposures()
>>> factor_exposure.add_regression_factors(FACTOR_DATAFRAME)
>>> factor_exposure.add_regression_factors(FACTOR_SERIES)
>>> factor_exposure.fit(RETURNS_DATA_DICTIONARY)
>>> factor_exposure.report()
DEFAULT_FACTOR_TS_METHODS = {}
add_cross_score(name, old_name)

Add a factor which uses the percentile of another base factor.

Parameters:
  • name – Factor name

  • old_name – Base factor name.

Returns:

add_factor_exposure_method(name, method, method_kwargs=None)

Add a factor exposure method.

Parameters:
  • name – Name to use for the factor.

  • method – Method mapping (instrument name, instrument timeseries) to factor exposure.

  • method_kwargs – kwargs for method.

add_factor_exposures(set_exposures)

Set the factor exposure overrides.

Parameters:

set_exposures – Dictionary of factor-keyed dictionaries giving exposures on each instrument.

add_raw_factor_labels(label_identifiers, factor_name=None)

Add a raw factor flag to identify instruments with a specified label.

Parameters:
  • label_identifiers – list of label names and required result tuples.

  • factor_name – name of factor.

Returns:

name of factor (string)

add_raw_factor_timeseries(name, method=None, history_field=None, fundamental_field=None, sector_ids=None, zscore_period=None, fundamental_freq=None, method_kwargs=None)

Add a data timeseries to use for a factor. This can be generated via a method, from a stock history, fundamental data or using a sector. If a period is supplied a z-score mapping is also applied.

Parameters:
  • name – Factor name

  • method – Optional method use to generate timeseries from instrument.

  • history_field – Optional history field.

  • fundamental_field – Optional fundamental field.

  • zscore_period – Optional z-score period length.

  • fundamental_freq – Optional frequency for fundamental data.

  • method_kwargs – Optional kwargs for a supplied method.

Returns:

add_regression_factors(ts, names=None, include_in_fit=True, fit_params=None)

Add timeseries factors to the calculation.

Parameters:
  • ts – DataFrame or Series of factor values.

  • names – List of names given to the factors.

  • include_in_fit – Boolean flag to determine if a regression step is added (default is True).

  • fit_params – Parameters for the regression step.

add_step(factor_names, params_dict=None)

Add a regression step to the fitting process.

Parameters:
  • factor_names – List of timeseries factors to include in the regression step.

  • params_dict – Dictionary of parameters for the regression.

AVAILABLE_COV_ESTIMATORS

Baseclasses: str, Enum

alias of CovEstimators

clear_steps()

Clear the configuration of regressions to perform.

construct_replicating_basket_strategy(rep_ts, currency='USD', name=None, start_date=None, freq='1BD')

Construct a basket strategy that replicates the series returns using factors.

Parameters:
  • rep_ts – Input timeseries.

  • currency – Currency identifier.

  • name – Basket strategy name (optional).

  • start_date – Basket strategy start date (optional).

  • freq – (optional, default is '1BD').

Returns:

BasketStrategy object.

covariance_estimator(df, missing=None)

Covariance estimator used in the report. It defaults to the classical maximum likelihood estimator.

Parameters:
  • df – Input DataFrame.

  • missing – Identifier for missing data behaviour: 'drop', 'fill' or 'fill_scaled' (optional).

Returns:

Covariance data.

factor_covariance(start=None, end=None)

Covariance estimate for timeseries factors.

Parameters:
  • start – Period start date (optional).

  • end – Period end date (optional).

Returns:

Covariance data.

fit(instrument_data, dt=None)

Run the regression steps to evaluate the loadings and residuals against a series of inputs.

Parameters:

instrument_data – Series, DataFrame or dictionary of instruments and their return series.

Returns:

DataFrame of exposure, DataFrame of residuals.

recover_prior_fit()

Recover the stored fit data.

report(portfolio_weights=None)

Generate a report for the exposures of a portfolio using the fitted factor loadings.

Parameters:

portfolio_weights – Dictionary or Series of allocation in portfolio (optional).

residual_covariance()

Covariance estimate for residuals.

rolling_exposures(portfolio_df, instrument_df=None, window=None)

Evaluate historical exposures by providing a DataFrame of historical allocations.

If no instrument data is provided, then the previously fit exposures are used historically. If a window is provided, then a rolling fit is performed to calculate the exposures.

Parameters:
  • portfolio_df – DataFrame or allocations.

  • instrument_df – DataFrame of instrument data (optional).

  • window – Rolling window length (optional).

Returns:

DataFrame of exposures.

store_prior_fit()

Store a backup of prior fit to recover later.