FactorRiskModel

class FactorRiskModel(id_, name, coverage, term, universe_identifier, vendor, version, universe_size=None, entitlements=None, description=None, expected_update_time=None)[source]

Factor Risk Model used for calculating asset level factor risk

Methods

__init__(id_, name, coverage, term, universe_identifier, vendor, version, universe_size=None, entitlements=None, description=None, expected_update_time=None)[source]

Create new factor risk model object

Parameters:
  • id – risk model id (cannot be changed)

  • name (str) – risk model name

  • coverage (RiskModelCoverage) – coverage of risk model asset universe

  • term (RiskModelTerm) – horizon term

  • universe_identifier (RiskModelUniverseIdentifier) – identifier used in asset universe upload (cannot be changed)

  • vendor (str) – risk model vendor

  • version (float) – version of model

  • universe_size (Optional[int]) – total rough expected universe size (rounding up to nearest 1k)

  • entitlements (Union[Dict, Entitlements, None]) – entitlements associated with risk model

  • description (Optional[str]) – risk model description

  • expected_update_time (Optional[time]) – time when risk model daily data is expected to be uploaded

Returns:

FactorRiskModel object

delete()

Delete existing risk model object from Marquee

delete_factor_metadata(factor_id)

Delete a factor’s metadata from a risk model

Parameters:

factor_id (str) – factor id associated with risk model’s factor

classmethod from_many_targets(models)
classmethod from_target(model)[source]
classmethod get(model_id)

Get a risk model from Marquee :type model_id: str :param model_id: risk model id corresponding to Marquee Risk Model

Returns:

Risk Model object

get_asset_universe(start_date, end_date=None, assets=<gs_quant.target.risk_models.RiskModelDataAssetsRequest object>, format=ReturnFormat.DATA_FRAME)

Get asset universe data for existing risk model

Parameters:
  • start_date (date) – Start date for data request. Must be equal to end_date if universe array in DataAssetsRequest is empty.

  • end_date (Optional[date]) – End date for data request. Must be equal to start_date if universe array in DataAssetsRequest is empty.

  • assets (RiskModelDataAssetsRequest) – DataAssetsRequest object with identifier and list of assets to retrieve for request

  • format (ReturnFormat) – Which format to return the results in

Return type:

Union[List[Dict], DataFrame]

Returns:

Risk model universe data in a pandas dataframe or dict

Usage

Get the assets covered by the model between start date and end date.

Examples

>>> from gs_quant.models.risk_model import FactorRiskModel, DataAssetsRequest,         ...                      RiskModelUniverseIdentifierRequest as UniverseIdentifier, ReturnFormat
>>> import datetime as dt
>>>
>>> start_date = dt.date(2022, 1, 1)
>>> end_date = dt.date(2022, 5, 2)
>>> universe = ['GS UN']
>>> model = FactorRiskModel.get("MODEL_ID")
>>> asset_universe = model.get_asset_universe(start_date, end_date,
...                                           DataAssetsRequest(UniverseIdentifier.bbid, universe))

See also

get_specific_risk() get_universe_factor_exposure() get_total_risk()

get_calendar(start_date=None, end_date=None)

Get risk model calendar for existing risk model between start and end date

Parameters:
  • start_date (Optional[date]) – List returned including and after start_date

  • end_date (Optional[date]) – List returned up to and including end_date

Return type:

RiskModelCalendar

Returns:

RiskModelCalendar for model

Usage

Get the risk model calendar.

Examples

>>> from gs_quant.models.risk_model import FactorRiskModel
>>> import datetime as dt
>>>
>>> start_date = dt.date(2022, 1, 1)
>>> end_date = dt.date(2022, 5, 2)
>>> model = FactorRiskModel.get("MODEL_ID")
>>> model_calendar = model.get_calendar(start_date, end_date)

See also

get_most_recent_date_from_calendar() get_dates() get_missing_dates()

get_covariance_matrix(start_date, end_date=None, assets=None, format=ReturnFormat.DATA_FRAME)[source]

Get covariance matrix data for existing risk model

Parameters:
  • start_date (date) – start date for data request

  • end_date (Optional[date]) – end date for data request

  • assets (Optional[RiskModelDataAssetsRequest]) – DataAssetsRequest object with identifier and list of assets to limit the covariance matrix by

  • format (ReturnFormat) – which format to return the results in

Return type:

Union[Dict, DataFrame]

Returns:

covariance matrix of daily factor returns

Usage

Get the covariance matrix of daily factor returns

Examples

>>> from gs_quant.models.risk_model import MacroRiskModel, DataAssetsRequest,         ...                      RiskModelUniverseIdentifierRequest as UniverseIdentifier
>>> import datetime as dt
>>>
>>> start_date = dt.date(2022, 1, 1)
>>> end_date = dt.date(2022, 5, 2)
>>> model = FactorRiskModel.get("MODEL_ID")
>>> covariance_matrix = model.get_covariance_matrix(start_date, end_date,
...                                                 DataAssetsRequest(UniverseIdentifier.bbid, ['GS UN']))

See also

get_factor_returns_by_name() get_factor_returns_by_id()

get_daily_return(start_date, end_date=None, assets=<gs_quant.target.risk_models.RiskModelDataAssetsRequest object>, format=ReturnFormat.DATA_FRAME)[source]

Get daily asset total return data

Parameters:
  • start_date (date) – Start date for data request

  • end_date (Optional[date]) – End date for data request

  • assets (RiskModelDataAssetsRequest) – DataAssetsRequest object with identifier and list of assets to retrieve for request

  • format (ReturnFormat) – Which format to return the results in

Return type:

Union[List[Dict], DataFrame]

Returns:

Daily asset total return data

Usage

Get daily return data for assets specified in assets between start_date and end_date

Example >>> from gs_quant.models.risk_model import FactorRiskModel, DataAssetsRequest, … RiskModelUniverseIdentifierRequest as UniverseIdentifier >>> import datetime as dt >>> start_date = dt.date(2022, 1, 1) >>> end_date = dt.date(2022, 5, 2) >>> model = FactorRiskModel.get(“MODEL_ID”) >>> daily_returns = model.get_daily_return(start_date, end_date, … DataAssetsRequest(UniverseIdentifier.bbid, [‘GS UN’]))

See also get_specific_risk() get_universe_factor_exposure() :func: get_specific_return

get_data(measures, start_date, end_date=None, assets=<gs_quant.target.risk_models.RiskModelDataAssetsRequest object>, limit_factors=True)

Get data for multiple measures for existing risk model

Parameters:
  • measures (List[RiskModelDataMeasure]) – list of measures for general risk model data request

  • start_date (date) – start date for data request

  • end_date (Optional[date]) – end date for data request

  • assets (RiskModelDataAssetsRequest) – DataAssetsRequest object with identifier and list of assets to retrieve for request

  • limit_factors (bool) – limit factors included in factorData and covariance matrix to only include factors which the input universe has non-zero exposure to

Return type:

Dict

Returns:

risk model data or MqRequestError if query is too large for the service

get_dates(start_date=None, end_date=None, event_type=None)

Get dates between start_date and end_date for which risk model data is present

Parameters:
  • start_date (Optional[date]) – List returned including and after start_date

  • end_date (Optional[date]) – List returned up to and including end_date

  • event_type (Optional[RiskModelEventType]) – Which event type to retrieve dates for

Return type:

List[date]

Returns:

A list of dates where risk model data is present

Usage

Get all the dates for which risk model data is present over start_date and end_date (inclusive).

Examples

>>> from gs_quant.models.risk_model import FactorRiskModel, RiskModelEventType
>>> import datetime as dt
>>>
>>> start_date = dt.date(2022, 1, 1)
>>> end_date = dt.date(2022, 5, 2)
>>> model = FactorRiskModel.get("MODEL_ID")
>>> dates = model.get_dates(start_date, end_date)

See also

get_missing_dates() get_calendar() get_most_recent_date_from_calendar()

get_estimation_universe_weights(start_date, end_date=None, assets=<gs_quant.target.risk_models.RiskModelDataAssetsRequest object>, format=ReturnFormat.DATA_FRAME)[source]

Get estimation universe data for existing risk model

Parameters:
  • start_date (date) – Start date for data request. Must be equal to end_date if universe array in DataAssetsRequest is empty.

  • end_date (Optional[date]) – End date for data request. Must be equal to start_date if universe array in DataAssetsRequest is empty.

  • assets (RiskModelDataAssetsRequest) – DataAssetsRequest object with identifier and list of assets to retrieve for request

  • format (ReturnFormat) – Which format to return the results in

Return type:

Union[Dict, DataFrame]

Returns:

Estimation Universe data in a pandas dataframe or dict

Usage

Get the assets that are in the estimation universe of the model and their weights.

Examples

>>> from gs_quant.models.risk_model import FactorRiskModel, DataAssetsRequest,            ...                      RiskModelUniverseIdentifierRequest as UniverseIdentifier
>>> import datetime as dt
>>>
>>> start_date = dt.date(2022, 1, 1)
>>> end_date = dt.date(2022, 5, 2)
>>> universe = ['GS UN']
>>> model = FactorRiskModel.get("MODEL_ID")
>>> estimation_universe_weights = model.get_estimation_universe_weights(start_date, end_date,
...                                           DataAssetsRequest(UniverseIdentifier.bbid, universe))

See also

get_asset_universe() get_specific_risk()

get_factor(name, start_date=None, end_date=None)

Get risk model factor from its name

Parameters:
  • name (str) – Factor name associated with risk model

  • start_date (Optional[date]) – Start date of when to search for factor (optional, default to last month)

  • end_date (Optional[date]) – End date of when to search for factor (optional, default to today)

Return type:

Factor

Returns:

Factor object

get_factor_data(start_date=None, end_date=None, identifiers=None, include_performance_curve=False, category_filter=None, factor_type=None, format=ReturnFormat.DATA_FRAME)

Get factor data for existing risk model

Parameters:
  • start_date (Optional[date]) – Start date for data request

  • end_date (Optional[date]) – End date for data request

  • identifiers (Optional[List[str]]) – List of factor ids associated with risk model

  • include_performance_curve (bool) – Include the performance curve of the factors

  • category_filter (Optional[List[str]]) – Filter the results to those having one of the specified categories. Default is to return all results

  • factor_type (Optional[FactorType]) – The type of factor.

  • format (ReturnFormat) – which format to return the results in

Return type:

Union[List[Dict], DataFrame]

Returns:

Risk model factor data

Usage

Get factor data for factors whose ids are specified in identifiers.

Examples

>>> from gs_quant.models.risk_model import FactorRiskModel
>>> import datetime as dt
>>>
>>> model = FactorRiskModel.get("MODEL_ID")
>>> factor_data = model.get_factor_data()

See also

get_many_factors :func:`get_factor_returns_by_name()

get_factor_portfolios(start_date, end_date=None, assets=<gs_quant.target.risk_models.RiskModelDataAssetsRequest object>, format=ReturnFormat.DATA_FRAME)[source]

Get factor portfolios data for existing risk model

Parameters:
  • start_date (date) – start date for data request

  • end_date (Optional[date]) – end date for data request

  • assets (RiskModelDataAssetsRequest) – DataAssetsRequest object with identifier and list of assets to retrieve for request

  • format (ReturnFormat) – which format to return the results in

Return type:

Union[Dict, DataFrame]

Returns:

factor portfolios data

Usage

Get the factor portfolios data between start_date and end_date

Examples

>>> from gs_quant.models.risk_model import MacroRiskModel, DataAssetsRequest,         ...                      RiskModelUniverseIdentifierRequest as UniverseIdentifier
>>> import datetime as dt
>>>
>>> start_date = dt.date(2022, 1, 1)
>>> end_date = dt.date(2022, 5, 2)
>>> model = FactorRiskModel.get("MODEL_ID")
>>> factor_portfolios = model.get_factor_portfolios(start_date, end_date,
...                                                 DataAssetsRequest(UniverseIdentifier.bbid, ['GS UN']))

See also

get_issuer_specific_covariance()

get_factor_returns_by_id(start_date, end_date=None, assets=None, factors=[], format=ReturnFormat.DATA_FRAME)

Get factor return data for existing risk model keyed by factor id

Parameters:
  • start_date (date) – Start date for data request

  • end_date (Optional[date]) – End date for data request

  • assets (Optional[RiskModelDataAssetsRequest]) – DataAssetsRequest object with identifier and list of assets to limit the factors by

  • factors (List[str]) – The factors to get factor return data for. If empty, the data for all factors is returned

  • format (ReturnFormat) – Which format to return the results in

Return type:

Union[Dict, DataFrame]

Returns:

Factor returns by factor id

Usage

Get factor returns between start date and end date.

Examples

>>> from gs_quant.models.risk_model import FactorRiskModel
>>> import datetime as dt
>>>
>>> start_date = dt.date(2022, 1, 1)
>>> end_date = dt.date(2022, 5, 2)
>>> model = FactorRiskModel.get("MODEL_ID")
>>> factor_returns = model.get_factor_returns_by_id(start_date, end_date)

See also

get_factor_returns_by_name() get_factor_data()

get_factor_returns_by_name(start_date, end_date=None, assets=None, factors=[], format=ReturnFormat.DATA_FRAME)

Get factor return data for existing risk model keyed by name

Parameters:
  • start_date (date) – Start date for data request

  • end_date (Optional[date]) – End date for data request

  • assets (Optional[RiskModelDataAssetsRequest]) – DataAssetsRequest object with identifier and list of assets to limit the factors by

  • factors (List[str]) – The factors to get factor return data for. If empty, the data for all factors is returned

  • format (ReturnFormat) – Which format to return the results in

Return type:

Union[Dict, DataFrame]

Returns:

Factor returns by name

Usage

Get factor returns between start date and end date.

Examples

>>> from gs_quant.models.risk_model import FactorRiskModel
>>> import datetime as dt
>>>
>>> start_date = dt.date(2022, 1, 1)
>>> end_date = dt.date(2022, 5, 2)
>>> model = FactorRiskModel.get("MODEL_ID")
>>> factor_returns = model.get_factor_returns_by_name(start_date, end_date)

See also

get_factor_returns_by_id() get_factor_data()

get_global_predicted_beta(start_date, end_date=None, assets=<gs_quant.target.risk_models.RiskModelDataAssetsRequest object>, format=ReturnFormat.DATA_FRAME)[source]

Get global predicted beta data for an existing risk model

Parameters:
  • start_date (date) – start date for data request

  • end_date (Optional[date]) – end date for data request

  • assets (RiskModelDataAssetsRequest) – DataAssetsRequest object with identifier and list of assets to retrieve for request

  • format (ReturnFormat) – which format to return the results in

Return type:

Union[List[Dict], DataFrame]

Returns:

global predicted beta for assets requested

Usage

Get global predicted beta for assets specified in assets between start_date and end_date

Examples

>>> from gs_quant.models.risk_model import MacroRiskModel, DataAssetsRequest,         ...                      RiskModelUniverseIdentifierRequest as UniverseIdentifier
>>> import datetime as dt
>>>
>>> start_date = dt.date(2022, 1, 1)
>>> end_date = dt.date(2022, 5, 2)
>>> model = FactorRiskModel.get("MODEL_ID")
>>> global_predicted_beta = model.get_global_predicted_beta(start_date, end_date,
...                                                       DataAssetsRequest(UniverseIdentifier.bbid, ['GS UN']))

See also

get_predicted_beta() get_historical_beta()

get_historical_beta(start_date, end_date=None, assets=<gs_quant.target.risk_models.RiskModelDataAssetsRequest object>, format=ReturnFormat.DATA_FRAME)[source]

Get historical beta data for existing risk model

Parameters:
  • start_date (date) – start date for data request

  • end_date (Optional[date]) – end date for data request

  • assets (RiskModelDataAssetsRequest) – DataAssetsRequest object with identifier and list of assets to retrieve for request

  • format (ReturnFormat) – which format to return the results in

Return type:

Union[List[Dict], DataFrame]

Returns:

historical beta for assets requested

Usage

Get historical beta data for assets specified in assets between start_date and end_date

Examples

>>> from gs_quant.models.risk_model import MacroRiskModel, DataAssetsRequest,         ...                      RiskModelUniverseIdentifierRequest as UniverseIdentifier, ReturnFormat
>>> import datetime as dt
>>>
>>> start_date = dt.date(2022, 1, 1)
>>> end_date = dt.date(2022, 5, 2)
>>> model = FactorRiskModel.get("MODEL_ID")
>>> historical_beta = model.get_historical_beta(start_date, end_date,
...                                             DataAssetsRequest(UniverseIdentifier.bbid, ['GS UN']))

See also

get_predicted_beta() get_global_predicted_beta()

get_issuer_specific_covariance(start_date, end_date=None, assets=<gs_quant.target.risk_models.RiskModelDataAssetsRequest object>, format=ReturnFormat.DATA_FRAME)[source]

Get issuer specific covariance data for existing risk model

Parameters:
  • start_date (date) – start date for data request

  • end_date (Optional[date]) – end date for data request

  • assets (RiskModelDataAssetsRequest) – DataAssetsRequest object with identifier and list of assets to retrieve for request

  • format (ReturnFormat) – which format to return the results in

Return type:

Union[Dict, DataFrame]

Returns:

issuer specific covariance matrix (covariance of assets with the same issuer)

Usage

Get the covariance of assets with the same issuer.

Examples

>>> from gs_quant.models.risk_model import MacroRiskModel, DataAssetsRequest,         ...                      RiskModelUniverseIdentifierRequest as UniverseIdentifier
>>> import datetime as dt
>>>
>>> start_date = dt.date(2022, 1, 1)
>>> end_date = dt.date(2022, 5, 2)
>>> model = FactorRiskModel.get("MODEL_ID")
>>> issuer_specific_covariance = model.get_issuer_specific_covariance(start_date, end_date,
...                                   DataAssetsRequest(UniverseIdentifier.bbid, ['GS UN']))

See also

get_factor_portfolios()

classmethod get_many(ids=None, terms=None, vendors=None, names=None, coverages=None, limit=None)[source]

Get many factor risk models from Marquee

Parameters:
  • ids (Optional[List[str]]) – list of model identifiers in Marquee

  • terms (Optional[List[str]]) – list of model terms

  • vendors (Optional[List[str]]) – list of model vendors

  • names (Optional[List[str]]) – list of model names

  • coverages (Optional[List[str]]) – list of model coverages

  • limit (Optional[int]) – limit of number of models in response

Return type:

list

Returns:

list of Factor Risk Model object

get_many_factors(start_date=None, end_date=None, factor_names=None, factor_ids=None, factor_type=None)

Get risk model factors :type start_date: Optional[date] :param start_date: Start date of when to search for factors (optional, default to last month) :type end_date: Optional[date] :param end_date: End date of when to search for factors :type factor_names: Optional[List[str]] :param factor_names: The list of names of factors to get. All names must be valid factor names. If both

factor_names and factor_ids are empty, all the factors will be returned.

Parameters:
  • factor_ids (Optional[List[str]]) – The list of ids of factors to get. All ids must be valid factor ids. If both factor_names and factor_ids are empty, all the factors will be returned

  • factor_type (Optional[FactorType]) – Whether to return factors or factor categories. If unspecified, all the factors of all types will be returned

Return type:

List[Factor]

Returns:

A list of Factor objects

Usage

Given a list of factor names and/or ids, return the factor objects that represent the factor requested. If no factor names or ids are provided, all the factors will be returned.

Examples

>>> from gs_quant.models.risk_model import FactorRiskModel, FactorType
>>> import datetime as dt
>>>
>>> start_date = dt.date(2022, 1, 1)
>>> end_date = dt.date(2022, 5, 2)
>>> model = FactorRiskModel.get("MODEL_ID")
>>> many_factors = model.get_many_factors(start_date, end_date, factor_names=["factor1", "factor2"],
...                                       factor_type=FactorType.Factor)
>>>

See also

get_factor() get_factor_data()

get_missing_dates(start_date=None, end_date=None)

Get any dates where data is not published according to expected days returned from the risk model calendar

Parameters:
  • start_date (Optional[date]) – Date to truncate missing dates at

  • end_date (Optional[date]) –

    Date to truncate missing dates at

    If no end_date is provided, end_date defaults to T-1 date according

    to the risk model calendar

Return type:

List[date]

Usage

Get dates with missing data between start date and end date.

Examples

>>> from gs_quant.models.risk_model import FactorRiskModel
>>> import datetime as dt
>>>
>>> start_date = dt.date(2022, 1, 1)
>>> end_date = dt.date(2022, 5, 2)
>>> model = FactorRiskModel.get("MODEL_ID")
>>> dates = model.get_missing_dates(start_date, end_date)

See also

get_dates() get_calendar()

get_most_recent_date_from_calendar()

Get T-1 date according to risk model calendar

Return type:

date

get_predicted_beta(start_date, end_date=None, assets=<gs_quant.target.risk_models.RiskModelDataAssetsRequest object>, format=ReturnFormat.DATA_FRAME)[source]

Get predicted beta data for an existing risk model

Parameters:
  • start_date (date) – start date for data request

  • end_date (Optional[date]) – end date for data request

  • assets (RiskModelDataAssetsRequest) – DataAssetsRequest object with identifier and list of assets to retrieve for request

  • format (ReturnFormat) – which format to return the results in

Return type:

Union[List[Dict], DataFrame]

Returns:

predicted beta for assets requested

Usage

Get predicted beta data for assets specified in assets between start_date and end_date

Examples

>>> from gs_quant.models.risk_model import MacroRiskModel, DataAssetsRequest,         ...                      RiskModelUniverseIdentifierRequest as UniverseIdentifier
>>> import datetime as dt
>>>
>>> start_date = dt.date(2022, 1, 1)
>>> end_date = dt.date(2022, 5, 2)
>>> model = MacroRiskModel.get("MODEL_ID")
>>> predicted_beta = model.get_predicted_beta(start_date, end_date,
...                                           DataAssetsRequest(UniverseIdentifier.bbid, ['GS UN']))

See also

get_historical_beta() get_global_predicted_beta()

get_residual_variance(start_date, end_date=None, assets=<gs_quant.target.risk_models.RiskModelDataAssetsRequest object>, format=ReturnFormat.DATA_FRAME)

Get residual variance data for existing risk model

Parameters:
  • start_date (date) – Start date for data request

  • end_date (Optional[date]) – End date for data request

  • assets (RiskModelDataAssetsRequest) – DataAssetsRequest object with identifier and list of assets to retrieve for request

  • format (ReturnFormat) – Which format to return the results in

Return type:

Union[List[Dict], DataFrame]

Returns:

Residual variance for assets requested

Usage

Get residual variance data for assets specified in assets between start_date and end_date

Examples

>>> from gs_quant.models.risk_model import MacroRiskModel, DataAssetsRequest,         ...                      RiskModelUniverseIdentifierRequest as UniverseIdentifier
>>> import datetime as dt
>>>
>>> start_date = dt.date(2022, 1, 1)
>>> end_date = dt.date(2022, 5, 2)
>>> model = FactorRiskModel.get("MODEL_ID")
>>> residual_variance = model.get_residual_variance(start_date, end_date,
...                                                 DataAssetsRequest(UniverseIdentifier.bbid, ['GS UN']))

See also

get_total_risk() get_historical_beta() get_specific_return()

get_specific_return(start_date, end_date=None, assets=<gs_quant.target.risk_models.RiskModelDataAssetsRequest object>, format=ReturnFormat.DATA_FRAME)[source]

Get specific return data for existing risk model

Parameters:
  • start_date (date) – Start date for data request

  • end_date (Optional[date]) – End date for data request

  • assets (RiskModelDataAssetsRequest) – DataAssetsRequest object with identifier and list of assets to retrieve for request

  • format (ReturnFormat) – Which format to return the results in

Return type:

Union[List[Dict], DataFrame]

Returns:

Specific return data

Usage

Get specific return data for assets specified in assets between start_date and end_date

Example >>> from gs_quant.models.risk_model import FactorRiskModel, DataAssetsRequest, … RiskModelUniverseIdentifierRequest as UniverseIdentifier >>> import datetime as dt >>> start_date = dt.date(2022, 1, 1) >>> end_date = dt.date(2022, 5, 2) >>> model = FactorRiskModel.get(“MODEL_ID”) >>> specific_returns = model.get_specific_return(start_date, end_date, … DataAssetsRequest(UniverseIdentifier.bbid, [‘GS UN’]))

See also get_specific_risk() get_universe_factor_exposure()

get_specific_risk(start_date, end_date=None, assets=<gs_quant.target.risk_models.RiskModelDataAssetsRequest object>, format=ReturnFormat.DATA_FRAME)

Get specific risk data for existing risk model

Parameters:
  • start_date (date) – Start date for data request

  • end_date (Optional[date]) – End date for data request

  • assets (RiskModelDataAssetsRequest) – DataAssetsRequest object with identifier and list of assets to retrieve for request

  • format (ReturnFormat) – Which format to return the results in

Return type:

Union[List[Dict], DataFrame]

Returns:

Specific risk for assets requested

Usage

Get specific risk data for assets specified in assets between start_date and end_date

Examples

>>> from gs_quant.models.risk_model import MacroRiskModel, DataAssetsRequest,         ...                      RiskModelUniverseIdentifierRequest as UniverseIdentifier
>>> import datetime as dt
>>>
>>> start_date = dt.date(2022, 1, 1)
>>> end_date = dt.date(2022, 5, 2)
>>> model = FactorRiskModel.get("MODEL_ID")
>>> specific_risk = model.get_specific_risk(start_date, end_date,
...                                         DataAssetsRequest(UniverseIdentifier.bbid, ['GS UN']))

See also

get_residual_variance() get_specific_return() get_total_risk()

get_total_risk(start_date, end_date=None, assets=<gs_quant.target.risk_models.RiskModelDataAssetsRequest object>, format=ReturnFormat.DATA_FRAME)[source]

Get total risk data for existing risk model

Return type:

Union[List[Dict], DataFrame]

>>> model = FactorRiskModel.get("MODEL_ID")
>>> total_risk = model.get_total_risk(start_date, end_date,

… DataAssetsRequest(UniverseIdentifier.bbid, [‘GS UN’]))

get_universe_exposure(start_date, end_date=None, assets=<gs_quant.target.risk_models.RiskModelDataAssetsRequest object>, get_factors_by_name=False, format=ReturnFormat.DATA_FRAME)

Get universe factor exposure data for existing risk model

Parameters:
  • start_date (date) – Start date for data request

  • end_date (Optional[date]) – End date for data request

  • assets (RiskModelDataAssetsRequest) – DataAssetsRequest object with identifier and list of assets to retrieve for request

  • get_factors_by_name (bool) – Return results keyed by factor name instead of ID

  • format (ReturnFormat) – Which format to return the results in

Return type:

Union[List[Dict], DataFrame]

Returns:

Factor exposure for assets requested

Usage

Given a list of assets, return their exposure to factor between start date and end date.

Examples

>>> from gs_quant.models.risk_model import FactorRiskModel, DataAssetsRequest,         ...                      RiskModelUniverseIdentifierRequest as UniverseIdentifier
>>> import datetime as dt
>>>
>>> start_date = dt.date(2022, 1, 1)
>>> end_date = dt.date(2022, 5, 2)
>>> universe = ['GS UN']
>>> model = FactorRiskModel.get("MODEL_ID")
>>> universe_exposure = model.get_universe_exposure(start_date, end_date,
...                                                 DataAssetsRequest(UniverseIdentifier.bbid, universe))

See also

get_asset_universe() get_factor_returns_by_name() get_covariance_matrix()

get_universe_factor_exposure(start_date, end_date=None, assets=<gs_quant.target.risk_models.RiskModelDataAssetsRequest object>, get_factors_by_name=False, format=ReturnFormat.DATA_FRAME)[source]

Get universe factor exposure data for existing risk model

Parameters:
  • start_date (date) – start date for data request

  • end_date (Optional[date]) – end date for data request

  • assets (RiskModelDataAssetsRequest) – DataAssetsRequest object with identifier and list of assets to retrieve for request

  • get_factors_by_name (bool) – return results keyed by factor name instead of ID

  • format (ReturnFormat) – which format to return the results in

Return type:

Union[List[Dict], DataFrame]

Returns:

factor exposure for assets requested

Usage

Given a list of assets, return their exposure to factors between start date and end date.

Examples

>>> from gs_quant.models.risk_model import FactorRiskModel, DataAssetsRequest,         ...                      RiskModelUniverseIdentifierRequest as UniverseIdentifier
>>> import datetime as dt
>>>
>>> start_date = dt.date(2022, 1, 1)
>>> end_date = dt.date(2022, 5, 2)
>>> universe = ['GS UN']
>>> model = FactorRiskModel.get("MODEL_ID")
>>> universe_exposure = model.get_universe_factor_exposure(start_date, end_date,
...                                                 DataAssetsRequest(UniverseIdentifier.bbid, universe))

See also

get_asset_universe() get_specific_risk()

save()

Upload current Risk Model object to Marquee

save_factor_metadata(factor_metadata)

Add metadata to a factor in a risk model

Parameters:

factor_metadata (Factor) – factor metadata object

upload_asset_coverage_data(date=None, batch_size=100)

Upload to the coverage dataset for given risk model and date

Parameters:
  • date (Optional[date]) – Date to upload coverage data for, default date is last date from risk model calendar

  • batch_size (int) – Number of assets to upload in one request

Posting to the coverage dataset within the last 5 days will enable the risk model to be seen in the Marquee UI dropdown for users with “execute” capabilities

upload_calendar(calendar)

Upload risk model calendar to existing risk model

Parameters:

calendar (RiskModelCalendar) – RiskModelCalendar containing list of dates where model data is expected

upload_data(data, max_asset_batch_size=20000)

Upload risk model data to existing risk model in Marquee

Parameters:
  • data (Union[RiskModelData, Dict]) –

    complete or partial risk model data for uploading on given date includes: date, and one or more of: factorData, assetData, covarianceMatrix,

    issuerSpecificCovariance and factorPortfolios. Look at risk model upload documentation for further information on what data can be grouped together if asset data size is above the max asset batch size

  • max_asset_batch_size (int) – size of payload to batch with. Defaults to 20000 assets which works well for models that have factor ids ranging from 1- 3 characters in length. For models with longer factor ids, consider batching with a smaller max asset batch size

If upload universe is over max_asset_batch_size, will batch data in chunks of max_asset_batch_size assets

This function takes risk model data, and if partial requests are necessary, will upload data by
  1. factor data (includes covariance matrix if factor model)

  2. asset data in batches of max_asset_batch_size

  3. issuer specific covariance data in batches of max_asset_batch_size / 2 due to the structure of this data

  4. factor portfolio data in batches of max_asset_batch_size / 2 due to the structure of this data

In the case of repeat identifiers on a given data, the repeated data will replace existing data

upload_partial_data(data, final_upload=None)

Upload partial risk model data to existing risk model in Marquee

Parameters:
  • data (Union[RiskModelData, dict]) – partial risk model data for uploading on given date

  • final_upload (Optional[bool]) – if this is the last upload for the batched subset of data

The models factorData and covarianceMatrix must be uploaded first on given date if repeats in partial

upload, newer posted data will replace existing data on upload day

Deprecated since version 0.9.42: Please use upload_data instead