示例#1
0
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)
示例#2
0
文件: entity.py 项目: shlff/gs-quant
 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
示例#3
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