def pnl(portfolio_id: str, start_date: dt.date = None, end_date: dt.date = None, *, source: str = None, real_time: bool = False, request_id: Optional[str] = None) -> pd.Series: """ Returns the PnL of a portfolio :param portfolio_id: id of portfolio :param start_date: start date for getting pnl :param end_date: end date for getting pnl :param source: name of function caller :param real_time: whether to retrieve intraday data instead of EOD :param request_id: server request id :return: portfolio pnl values """ reports = GsPortfolioApi.get_reports(portfolio_id) performance_report_id = "" for report in reports: if report.type == ReportType.Portfolio_Performance_Analytics: performance_report_id = report.id data = PerformanceReport.get_pnl(performance_report_id, start_date, end_date) df = pd.DataFrame.from_records(data) df.set_index('date', inplace=True) return _extract_series_from_df(df, QueryType.PNL, True)
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
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