Skip to content

Commit

Permalink
Chore: Make release 1.0.101
Browse files Browse the repository at this point in the history
  • Loading branch information
martinroberson committed Jul 17, 2024
1 parent 2508db6 commit 0c9d44a
Showing 1 changed file with 22 additions and 3 deletions.
25 changes: 22 additions & 3 deletions gs_quant/markets/optimizer.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import logging
from enum import Enum
from functools import wraps
from typing import List, Dict
from typing import List, Dict, Optional

from dateutil.relativedelta import relativedelta

Expand Down Expand Up @@ -55,6 +55,12 @@ class PrioritySetting(Enum):
FIVE = '5'


class TurnoverNotionalType(Enum):
NET = 'Net'
LONG = 'Long'
GROSS = 'Gross'


class AssetConstraint:

def __init__(self,
Expand Down Expand Up @@ -859,7 +865,8 @@ class TurnoverConstraint:

def __init__(self,
turnover_portfolio: PositionSet,
max_turnover_percent: float):
max_turnover_percent: float,
turnover_notional_type: Optional[TurnoverNotionalType] = None):
"""
Specifying a list of positions and max turnover from those positions in the optimization result
Expand All @@ -869,6 +876,7 @@ def __init__(self,
"""
self.__turnover_portfolio = turnover_portfolio
self.__max_turnover_percent = max_turnover_percent
self.__turnover_notional_type = turnover_notional_type

@property
def turnover_portfolio(self) -> PositionSet:
Expand All @@ -886,12 +894,23 @@ def max_turnover_percent(self) -> float:
def max_turnover_percent(self, value: float):
self.__max_turnover_percent = value

@property
def turnover_notional_type(self):
return self.__turnover_notional_type

@turnover_notional_type.setter
def turnover_notional_type(self, value: Optional[TurnoverNotionalType]):
self.__turnover_notional_type = value

def to_dict(self):
positions = self.turnover_portfolio.positions
return {
payload = {
'turnoverPortfolio': [{'assetId': p.asset_id, 'quantity': p.quantity} for p in positions],
'maxTurnoverPercentage': self.max_turnover_percent
}
if self.turnover_notional_type:
payload['turnoverNotionalType'] = self.turnover_notional_type.value
return payload


def _ensure_completed(func):
Expand Down

0 comments on commit 0c9d44a

Please sign in to comment.