Esempio n. 1
0
 def get_factor_risk_report(self,
                            risk_model_id: str = None,
                            fx_hedged: bool = None) -> FactorRiskReport:
     if self.positioned_entity_type in [
             EntityType.PORTFOLIO, EntityType.ASSET
     ]:
         position_source_type = self.positioned_entity_type.value.capitalize(
         )
         reports = GsReportApi.get_reports(
             limit=100,
             position_source_type=position_source_type,
             position_source_id=self.id,
             report_type=f'{position_source_type} Factor Risk')
         if fx_hedged:
             reports = [
                 report for report in reports
                 if report.parameters.fx_hedged == fx_hedged
             ]
         if risk_model_id:
             reports = [
                 report for report in reports
                 if report.parameters.risk_model == risk_model_id
             ]
         if len(reports) > 1:
             raise MqError(
                 f'This {position_source_type} has more than one factor risk report that matches '
                 'your parameters. Please specify the risk model ID and fxHedged value in the '
                 'function parameters.')
         if len(reports) == 0:
             raise MqError(
                 f'This {position_source_type} has no factor risk reports that match your parameters.'
             )
         return FactorRiskReport.from_target(reports[0])
     raise NotImplementedError
Esempio n. 2
0
 def get_reports(self) -> List[Report]:
     if self.positioned_entity_type == EntityType.PORTFOLIO:
         reports_as_target = GsPortfolioApi.get_reports(portfolio_id=self.id)
         report_objects = []
         for report in reports_as_target:
             if report.type == ReportType.Portfolio_Performance_Analytics:
                 report_objects.append(PerformanceReport.from_target(report))
             elif report.type in [ReportType.Portfolio_Factor_Risk, ReportType.Asset_Factor_Risk]:
                 report_objects.append(FactorRiskReport.from_target(report))
             else:
                 report_objects.append(Report.from_target(report))
         return report_objects
     raise NotImplementedError
Esempio n. 3
0
 def get_factor_risk_reports(self, fx_hedged: bool = None) -> List[FactorRiskReport]:
     if self.positioned_entity_type in [EntityType.PORTFOLIO, EntityType.ASSET]:
         position_source_type = self.positioned_entity_type.value.capitalize()
         reports = GsReportApi.get_reports(limit=100,
                                           position_source_type=position_source_type,
                                           position_source_id=self.id,
                                           report_type=f'{position_source_type} Factor Risk')
         if fx_hedged:
             reports = [report for report in reports if report.parameters.fx_hedged == fx_hedged]
         if len(reports) == 0:
             raise MqError(f'This {position_source_type} has no factor risk reports that match your parameters.')
         return [FactorRiskReport.from_target(report) for report in reports]
     raise NotImplementedError
Esempio n. 4
0
 def get_reports(self) -> List[Report]:
     """
     Get a list of all reports associated with the portfolio
     :return: list of Report objects
     """
     reports = []
     reports_as_targets = GsPortfolioApi.get_reports(self.__portfolio_id)
     for report_target in reports_as_targets:
         if report_target.type in [
                 ReportType.Portfolio_Factor_Risk,
                 ReportType.Asset_Factor_Risk
         ]:
             reports.append(FactorRiskReport.from_target(report_target))
         if report_target.type == ReportType.Portfolio_Performance_Analytics:
             reports.append(PerformanceReport.from_target(report_target))
     return reports