def create(cls, coverage: Union[CoverageType, str], id_: str, name: str, term: Union[Term, str], universe_identifier: Union[UniverseIdentifier, str], vendor: str, version: float, entitlements: Union[Entitlements, Dict] = None, description: str = None): """ Creates new factor risk model and uploads factor risk model object to Marquee :param coverage: coverage of risk model asset universe :param id_: risk model id (cannot be changed) :param name: risk model name :param term: horizon term :param universe_identifier: identifier used in asset universe upload (cannot be changed) :param vendor: risk model vendor :param version: version of model :param entitlements: entitlements associated with risk model :param description: risk model description :return: Factor Risk Model object """ new_model = RiskModelBuilder(coverage, id_, name, term, universe_identifier, vendor, version, entitlements=entitlements, description=description) GsRiskModelApi.create_risk_model(new_model) return FactorRiskModel(id_)
def upload(self): """ Upload current Factor Risk Model object to Marquee """ new_model = RiskModelBuilder(self.coverage, self.id, self.name, self.term, self.universe_identifier, self.vendor, self.version, entitlements=self.entitlements, description=self.description) GsRiskModelApi.create_risk_model(new_model)
def test_create_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 }) 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, '_post', return_value=model) # run test response = GsRiskModelApi.create_risk_model(model) GsSession.current._post.assert_called_with('/risk/models', model, cls=RiskModel) assert response == expected_response
def save(self): """ Upload current Risk Model object to Marquee """ model = RiskModelBuilder( self.coverage, self.id, self.name, self.term, self.universe_identifier, self.vendor, self.version, type_=self.type, description=self.description, entitlements=self.entitlements, expected_update_time=self.expected_update_time.strftime('%H:%M:%S') if self.expected_update_time else None) try: GsRiskModelApi.create_risk_model(model) except MqRequestError: GsRiskModelApi.update_risk_model(model)