Skip to content

Commit

Permalink
Chore: Make release 1.0.108
Browse files Browse the repository at this point in the history
  • Loading branch information
martinroberson authored and Vanden Bon, David V [GBM Public] committed Aug 7, 2024
1 parent ac7fc09 commit 1107568
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 19 deletions.
1 change: 1 addition & 0 deletions gs_quant/backtests/actions.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,7 @@ class AddScaledTradeAction(Action):
scaling_level: Union[float, int] = 1
transaction_cost: TransactionModel = field(default_factory=default_transaction_cost,
metadata=config(decoder=dc_decode(ConstantTransactionModel)))
holiday_calendar: Iterable[dt.date] = None
class_type: str = static_field('add_scaled_trade_action')

def __post_init__(self):
Expand Down
27 changes: 8 additions & 19 deletions gs_quant/backtests/generic_engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,15 +97,9 @@ def apply_action(self,
backtest.transaction_costs[final_date] -= self.action.transaction_cost.get_cost(final_date,
backtest,
trigger_info, inst)

for s in backtest.states:
pos = []
for create_date, portfolio in orders.items():
pos += [inst for inst in portfolio.instruments
if get_final_date(inst, create_date, self.action.trade_duration,
self.action.holiday_calendar) > s >= create_date]
if len(pos):
backtest.portfolio_dict[s].append(pos)
backtest_states = (s for s in backtest.states if final_date > s >= create_date)
for s in backtest_states:
backtest.portfolio_dict[s].append(inst)

return backtest

Expand All @@ -121,7 +115,7 @@ def _nav_scale_orders(self, orders, price_measure):
# Populate dict of dates and instruments sold on those dates
for create_date, portfolio in orders.items():
for inst in portfolio.all_instruments:
d = get_final_date(inst, create_date, self.action.trade_duration)
d = get_final_date(inst, create_date, self.action.trade_duration, self.action.holiday_calendar)
if d not in final_days_orders.keys():
final_days_orders[d] = []
final_days_orders[d].append(inst)
Expand Down Expand Up @@ -219,19 +213,14 @@ def apply_action(self,
backtest.cash_payments[create_date].append(CashPayment(inst, effective_date=create_date, direction=-1))
backtest.transaction_costs[create_date] -= self.action.transaction_cost.get_cost(create_date, backtest,
trigger_info, inst)
final_date = get_final_date(inst, create_date, self.action.trade_duration)
final_date = get_final_date(inst, create_date, self.action.trade_duration, self.action.holiday_calendar)
backtest.cash_payments[final_date].append(CashPayment(inst, effective_date=final_date))
backtest.transaction_costs[final_date] -= self.action.transaction_cost.get_cost(final_date,
backtest,
trigger_info, inst)

for s in backtest.states:
pos = []
for create_date, portfolio in orders.items():
pos += [inst for inst in portfolio.instruments
if get_final_date(inst, create_date, self.action.trade_duration) > s >= create_date]
if len(pos):
backtest.portfolio_dict[s].append(pos)
backtest_states = (s for s in backtest.states if final_date > s >= create_date)
for s in backtest_states:
backtest.portfolio_dict[s].append(inst)

return backtest

Expand Down
6 changes: 6 additions & 0 deletions gs_quant/markets/portfolio_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,12 @@ def get_performance_report(self, tags: Dict = None) -> PerformanceReport:
position_source_id=self.id,
report_type='Portfolio Performance Analytics',
tags=tags)

# If tags is set to None, it returns all PPA reports for the portfolio,
# and returning reports[0] can return any one PPA, so specifically if tags is None it means we are
# looking for the root PPA, we need to explicitly filter out and get the one report where tags is None
if tags is None:
reports = [report for report in reports if report.parameters.tags is None]
if len(reports) == 0:
raise MqError('No performance report found.')
return PerformanceReport.from_target(reports[0])
Expand Down

0 comments on commit 1107568

Please sign in to comment.