def test_get_risk_model(mocker): model_id = 'WW_TEST_MODEL' model = RiskModel.from_dict({ "coverage": "Global", "id": "WW_TEST_MODEL", "name": "World Wide Medium Term Test Model", "term": "Medium", "vendor": "Goldman Sachs", "universeIdentifier": "gsid", "version": 4 }) expected_response = RiskModel(coverage='Global', id='WW_TEST_MODEL', name='World Wide Medium Term Test Model', term='Medium', vendor='Goldman Sachs', version=4, universe_identifier='gsid') # mock GsSession mocker.patch.object(GsSession.__class__, 'default_value', return_value=GsSession.get(Environment.QA, 'client_id', 'secret')) mocker.patch.object(GsSession.current, '_get', return_value=model) # run test response = GsRiskModelApi.get_risk_model(model_id) GsSession.current._get.assert_called_with( '/risk/models/{id}'.format(id=model_id), cls=RiskModel) assert response == expected_response
def test_get_risk_models(mocker): mock_response = { 'results': [ RiskModel.from_dict({ "coverage": "Global", "id": "WW_TEST_MODEL", "name": "World Wide Medium Term Test Model", "term": "Medium", "vendor": "Goldman Sachs", "universeIdentifier": "gsid", "type": "Factor", "version": 4 }), RiskModel.from_dict({ "coverage": "Global", "id": "WW_TEST_MODEL_2", "name": "World Wide Medium Term Test Model 2", "term": "Medium", "vendor": "Goldman Sachs", "universeIdentifier": "gsid", "version": 2, "type": "Thematic" }) ], 'totalResults': 2 } expected_response = [ RiskModel(coverage='Global', id='WW_TEST_MODEL', name='World Wide Medium Term Test Model', term='Medium', vendor='Goldman Sachs', universe_identifier='gsid', version=4, type='Factor'), RiskModel(coverage='Global', id='WW_TEST_MODEL_2', name='World Wide Medium Term Test Model 2', term='Medium', vendor='Goldman Sachs', universe_identifier='gsid', version=2, type='Thematic') ] # mock GsSession mocker.patch.object(GsSession.__class__, 'default_value', return_value=GsSession.get(Environment.QA, 'client_id', 'secret')) mocker.patch.object(GsSession.current, '_get', return_value=mock_response) # run test response = GsRiskModelApi.get_risk_models() GsSession.current._get.assert_called_with('/risk/models?', cls=RiskModel) assert response == expected_response
def test_update_risk_model(mocker): model = RiskModel.from_dict({ "coverage": "Global", "id": "WW_TEST_MODEL", "name": "World Wide Medium Term Test Model", "term": "Medium", "vendor": "Goldman Sachs", "universeIdentifier": "gsid", "version": 4 }) # mock GsSession mocker.patch.object( GsSession.__class__, 'default_value', return_value=GsSession.get( Environment.QA, 'client_id', 'secret')) mocker.patch.object(GsSession.current, '_put', return_value=model) # run test response = GsRiskModelApi.update_risk_model(model) GsSession.current._put.assert_called_with('/risk/models/{id}'.format(id='WW_TEST_MODEL'), model, cls=RiskModel) assert response == model
def mock_risk_model(): risk_model = RiskModel(coverage=CoverageType.Country, id_='model_id', name='Fake Risk Model', term=Term.Long, universe_identifier=UniverseIdentifier.gsid, vendor='GS', version=1.0) replace = Replacer() # mock getting risk model entity() mock = replace('gs_quant.api.gs.risk_models.GsRiskModelApi.get_risk_model', Mock()) mock.return_value = risk_model actual = Risk_Model(model_id='model_id') replace.restore() return actual
def test_covariance(): risk_model = RiskModel(coverage=CoverageType.Country, id_='model_id', name='Fake Risk Model', term=Term.Long, universe_identifier=UniverseIdentifier.gsid, vendor='GS', version=1.0) covariances = [ { 'date': '2020-01-01', 'covariance': 1.01 }, { 'date': '2020-01-02', 'covariance': 1.02 }, { 'date': '2020-01-03', 'covariance': 1.03 }, ] replace = Replacer() # mock getting risk model factor entity mock = replace('gs_quant.api.gs.risk_models.GsRiskModelApi.get_risk_model_factor_data', Mock()) mock.return_value = [{ 'identifier': 'factor_id', 'type': 'Factor', 'name': "Factor Name" }] # mock getting risk model entity() mock = replace('gs_quant.api.gs.risk_models.GsRiskModelApi.get_risk_model', Mock()) mock.return_value = risk_model # mock getting risk model dates mock = replace('gs_quant.api.gs.risk_models.GsRiskModelApi.get_risk_model_dates', Mock()) mock.return_value = ['2020-01-01', '2020-01-02', '2020-01-03'] # mock getting covariances mock = replace('gs_quant.markets.factor.Factor.get_covariance', Mock()) mock.return_value = covariances with DataContext(datetime.date(2020, 1, 1), datetime.date(2020, 1, 3)): actual = mrm.covariance(mock_risk_model(), 'Factor Name', 'Factor Name') assert all(actual.values == [1.01, 1.02, 1.03]) with pytest.raises(MqValueError): mrm.covariance(mock_risk_model(), 'Wrong Factor Name', 'Factor Name') replace.restore()
import datetime import pytest from testfixtures import Replacer from testfixtures.mock import Mock import gs_quant.timeseries.measures_reports as mr from gs_quant.data.core import DataContext from gs_quant.errors import MqValueError from gs_quant.markets.risk_model import RiskModel as Risk_Model from gs_quant.target.common import ReportParameters from gs_quant.target.reports import Report, PositionSourceType, ReportType from gs_quant.target.risk_models import RiskModel, CoverageType, Term, UniverseIdentifier risk_model = RiskModel(coverage=CoverageType.Country, id_='model_id', name='Fake Risk Model', term=Term.Long, universe_identifier=UniverseIdentifier.gsid, vendor='GS', version=1.0) factor_risk_report = Report(position_source_id='position source id', position_source_type=PositionSourceType.Portfolio, type_=ReportType.Portfolio_Factor_Risk, id_='report_id', parameters=ReportParameters(risk_model='risk_model_id')) ppa_report = Report(position_source_id='position source id', position_source_type=PositionSourceType.Portfolio, type_=ReportType.Portfolio_Performance_Analytics, id_='report_id', parameters=ReportParameters(risk_model='risk_model_id')) factor_data = [
import pandas as pd import pytest from testfixtures import Replacer from testfixtures.mock import Mock import gs_quant.timeseries.measures_risk_models as mrm from gs_quant.data.core import DataContext from gs_quant.errors import MqValueError from gs_quant.models.risk_model import FactorRiskModel as Factor_Risk_Model from gs_quant.markets.securities import Stock from gs_quant.target.risk_models import RiskModel, RiskModelCoverage, RiskModelTerm, RiskModelUniverseIdentifier mock_risk_model_obj = RiskModel( id_='model_id', name='Fake Risk Model', coverage=RiskModelCoverage.Country, term=RiskModelTerm.Long, universe_identifier=RiskModelUniverseIdentifier.gsid, vendor='GS', version=1.0) mock_risk_model_data = { 'totalResults': 2, 'missingDates': [], 'results': [{ 'date': '2020-01-01', 'factorData': [ { 'factorId': '1', 'factorCategory': 'Style'
def test_factor_exposure(): risk_model = RiskModel(coverage=CoverageType.Country, id_='model_id', name='Fake Risk Model', term=Term.Long, universe_identifier=UniverseIdentifier.gsid, vendor='GS', version=1.0) risk_model_data = { 'results': [ { 'date': '2020-01-01', 'assetData': { 'factorExposure': [ { 'factor_id': 1.01, 'factor_id_1': 1.23 } ] } }, { 'date': '2020-01-02', 'assetData': { 'factorExposure': [ { 'factor_id': 1.02, 'factor_id_1': 1.23 } ] } }, { 'date': '2020-01-03', 'assetData': { 'factorExposure': [ { 'factor_id': 1.03, 'factor_id_1': 1.23 } ] } } ] } replace = Replacer() # mock getting risk model entity() mock = replace('gs_quant.api.gs.risk_models.GsRiskModelApi.get_risk_model', Mock()) mock.return_value = risk_model # mock getting risk model factor entity mock = replace('gs_quant.api.gs.risk_models.GsRiskModelApi.get_risk_model_factor_data', Mock()) mock.return_value = [{ 'identifier': 'factor_id', 'type': 'Factor', 'name': "Factor Name" }] # mock getting asset gsid mock = replace('gs_quant.markets.securities.Asset.get_identifiers', Mock()) mock.return_value = {'GSID': '12345'} # mock getting risk model dates mock = replace('gs_quant.api.gs.risk_models.GsRiskModelApi.get_risk_model_dates', Mock()) mock.return_value = ['2020-01-01', '2020-01-02', '2020-01-03'] # mock getting risk model data mock = replace('gs_quant.markets.risk_model.RiskModel.get_data', Mock()) mock.return_value = risk_model_data with DataContext(datetime.date(2020, 1, 1), datetime.date(2020, 1, 3)): actual = mrm.factor_exposure(Stock(id_='id', name='Fake Asset'), 'model_id', 'Factor Name') assert all(actual.values == [1.01, 1.02, 1.03]) with pytest.raises(MqValueError): mrm.factor_exposure(Stock(id_='id', name='Fake Asset'), 'model_id', 'Wrong Factor Name') replace.restore()