Source code for serenity_sdk.types.model
from typing import Any, AnyStr, Dict, List
from uuid import UUID
[docs]
class ModelMetadata:
"""
Helper class that encapsulates all the model metadata. You can get at the underlying calls directly from the
ModelApi client or you can just load everything in this class and use it to traverse the metadata tree.
The most important call is probably get_model_configuration_id(), which lets you do a lookup of a
ModelConfiguration ID by the short name. This is needed to specify model inputs for risk calcs.
"""
def __init__(self, model_classes: List[Any], models: List[Any], model_configs: List[Any]):
self.model_classes = model_classes
self.models = models
self.model_configs = model_configs
self.model_config_map = {model_config['shortName']: UUID(model_config['modelConfigId'])
for model_config in model_configs}
[docs]
def get_model_class_names(self) -> List[str]:
"""
Enumerates the names of model classes, groupings of related models like Market Risk,
Liquidity Risk or Value at Risk.
"""
# allow for missing displayName until production upgraded
return [model_class.get('displayName', model_class['shortName']) for model_class in self.model_classes]
[docs]
def get_model_names(self) -> List[str]:
"""
Enumerates the names of all models; this corresponds to code implementations
of different types of models.
"""
# allow for missing displayName until production upgraded
return [model.get('displayName', model['shortName']) for model in self.models]
[docs]
def get_model_configurations(self) -> Dict[AnyStr, AnyStr]:
"""
Enumerates the names of all model configurations; this corresponds to specific
parameterizations of models, e.g. short time horizon and long time horizon
variations of a factor risk model are two different configurations.
"""
# allow for missing displayName until production upgraded
return {model_config['shortName']: model_config.get('displayName', None) for model_config in self.model_configs}
[docs]
def get_model_configuration_id(self, short_name: str) -> UUID:
"""
Lookup function that gives you the UUID of a ModelConfiguration given
its short name. Returns None if unknown.
"""
model_config_id = self.model_config_map.get(short_name, None)
if not model_config_id:
raise ValueError(f'Unknown ModelConfiguration: {short_name}')
return model_config_id