Skip to content

Commit

Permalink
Fix types in target classes fields, support irswaption scale_in_place (
Browse files Browse the repository at this point in the history
…#274)

Co-authored-by: Tan, Rachel Wei Swin [GMD] <RachelWeiSwin.Tan@ln.email.gs.com>
  • Loading branch information
rtsscy and Tan, Rachel Wei Swin [GMD] committed Aug 2, 2023
1 parent 70cc2e6 commit e45dbec
Show file tree
Hide file tree
Showing 22 changed files with 241 additions and 114 deletions.
2 changes: 1 addition & 1 deletion gs_quant/api/fred/data.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ def build_query(
"""

if start is not None and end is not None:
if type(start) != type(end):
if type(start) is not type(end):
raise ValueError('Start and end types must match!')

request = FredQuery(observation_start=start, observation_end=end, realtime_end=as_of, realtime_start=since)
Expand Down
3 changes: 1 addition & 2 deletions gs_quant/api/gs/risk.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
from typing import Iterable, Optional, Union

import msgpack
from opentracing import Format, Span
from opentracing import Span

from gs_quant.api.risk import RiskApi
from gs_quant.risk import RiskRequest
Expand Down Expand Up @@ -63,7 +63,6 @@ def calc(cls, request: RiskRequest) -> Iterable:
def _exec(cls, request: Union[RiskRequest, Iterable[RiskRequest]]) -> Union[Iterable, dict]:
use_msgpack = cls.USE_MSGPACK and not isinstance(request, RiskRequest)
headers = {'Content-Type': 'application/x-msgpack'} if use_msgpack else {}
Tracer.inject(Format.HTTP_HEADERS, headers)
result, request_id = GsSession.current._post(cls.__url(request),
request,
request_headers=headers,
Expand Down
2 changes: 1 addition & 1 deletion gs_quant/backtests/data_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,6 @@ def get_data(self, state: Union[dt.date, dt.datetime], *key):

def get_data_range(self, start: Union[dt.date, dt.datetime], end: Union[dt.date, dt.datetime], *key):
self._clock.time_check(end)
if type(start) != type(end):
if type(start) is not type(end):
raise RuntimeError('expect same type for start and end when asking for data range')
return self._data_mgr.get_data_range(self._utc_time(start), self._utc_time(end), *key)
8 changes: 0 additions & 8 deletions gs_quant/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -584,11 +584,6 @@ class CustomComments(Base, ABC):
pass


@dataclass
class HedgeTypes(Base):
pass


def get_enum_value(enum_type: EnumMeta, value: Union[EnumBase, str]):
if value in (None,):
return None
Expand Down Expand Up @@ -627,8 +622,5 @@ def get_enum_value(enum_type: EnumMeta, value: Union[EnumBase, str]):
global_config.decoders[Optional[Tuple[QuoteReport, ...]]] = decode_quote_reports
global_config.decoders[CustomComments] = decode_custom_comment
global_config.decoders[Optional[Tuple[CustomComments, ...]]] = decode_custom_comments
global_config.decoders[Optional[HedgeTypes]] = decode_hedge_type
global_config.decoders[HedgeTypes] = decode_hedge_type
global_config.decoders[Optional[Tuple[HedgeTypes, ...]]] = decode_hedge_types
global_config.encoders[Market] = encode_dictable
global_config.encoders[Optional[Market]] = encode_dictable
8 changes: 0 additions & 8 deletions gs_quant/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,14 +57,6 @@ def _missing_(cls, key):
return cls.Receive if key.lower() in ('receive', 'receiver') else super()._missing_(key)


class MarketBehaviour(EnumBase, Enum):

"""ContraintsBased or Calibrated"""

ContraintsBased = 'ContraintsBased'
Calibrated = 'Calibrated'


class RiskMeasure(__RiskMeasure):

def __lt__(self, other):
Expand Down
2 changes: 1 addition & 1 deletion gs_quant/models/risk_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -916,7 +916,7 @@ def upload_data(self,
In the case of repeat identifiers on a given data, the repeated data will replace existing data
"""

data = data.as_dict() if type(data) == RiskModelData else data
data = data.as_dict() if type(data) is RiskModelData else data
full_data_present = 'factorData' in data.keys() and 'assetData' in data.keys()
only_factor_data_present = only_factor_data_is_present(self.type, data)
target_universe_size = 0 if only_factor_data_present else get_universe_size(data)
Expand Down
3 changes: 3 additions & 0 deletions gs_quant/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import requests.adapters
import requests.cookies
import urllib3
from opentracing import Format
from opentracing.tags import HTTP_URL, HTTP_METHOD, HTTP_STATUS_CODE

from gs_quant import version as APP_VERSION
Expand Down Expand Up @@ -251,6 +252,8 @@ def _build_request_params(
if request_headers:
headers.update(request_headers)

Tracer.inject(Format.HTTP_HEADERS, headers)

if 'Content-Type' not in headers:
headers.update({'Content-Type': 'application/json; charset=utf-8'})

Expand Down
123 changes: 80 additions & 43 deletions gs_quant/target/common.py

Large diffs are not rendered by default.

14 changes: 14 additions & 0 deletions gs_quant/target/groups.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,20 @@ class UserCoverage(Base):
guid: Optional[str] = field(default=None, metadata=field_metadata)


@handle_camel_case_args
@dataclass_json(letter_case=LetterCase.CAMEL)
@dataclass(unsafe_hash=True, repr=False)
class UserTag(Base):
name: str = field(default=None, metadata=field_metadata)
added_on: Optional[datetime.datetime] = field(default=None, metadata=field_metadata)
added_by_id: Optional[str] = field(default=None, metadata=field_metadata)
removed: Optional[bool] = field(default=None, metadata=field_metadata)
removed_on: Optional[datetime.datetime] = field(default=None, metadata=field_metadata)
removed_by_id: Optional[str] = field(default=None, metadata=field_metadata)
removal_reason: Optional[str] = field(default=None, metadata=field_metadata)
category: Optional[str] = field(default=None, metadata=field_metadata)


@handle_camel_case_args
@dataclass_json(letter_case=LetterCase.CAMEL)
@dataclass(unsafe_hash=True, repr=False)
Expand Down
10 changes: 9 additions & 1 deletion gs_quant/target/hedge.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,14 @@ class HedgerConstraintPrioritySetting(EnumBase, Enum):
_5 = '5'


class SamplingPeriod(EnumBase, Enum):

"""The length of time in between return samples."""

Daily = 'Daily'
Weekly = 'Weekly'


@handle_camel_case_args
@dataclass_json(letter_case=LetterCase.CAMEL)
@dataclass(unsafe_hash=True, repr=False)
Expand Down Expand Up @@ -363,7 +371,7 @@ class PerformanceHedgeParameters(Base):
observation_end_date: datetime.date = field(default=None, metadata=field_metadata)
backtest_start_date: Optional[datetime.date] = field(default=None, metadata=field_metadata)
backtest_end_date: Optional[datetime.date] = field(default=None, metadata=field_metadata)
sampling_period: Optional[str] = field(default='Weekly', metadata=field_metadata)
sampling_period: Optional[SamplingPeriod] = field(default=SamplingPeriod.Weekly, metadata=field_metadata)
max_leverage: Optional[float] = field(default=None, metadata=field_metadata)
percentage_in_cash: Optional[float] = field(default=None, metadata=field_metadata)
explode_universe: Optional[bool] = field(default=None, metadata=field_metadata)
Expand Down
1 change: 1 addition & 0 deletions gs_quant/target/indices.py
Original file line number Diff line number Diff line change
Expand Up @@ -464,6 +464,7 @@ class ISelectRequest(IndicesRebalanceInputTypes):
index_parameters: Optional[Tuple[ISelectIndexParameter, ...]] = field(default=None, metadata=field_metadata)
new_weights: Optional[Tuple[ISelectNewWeight, ...]] = field(default=None, metadata=field_metadata)
new_units: Optional[Tuple[ISelectNewUnit, ...]] = field(default=None, metadata=field_metadata)
observation_date: Optional[str] = field(default=None, metadata=field_metadata)
entry_type: Optional[str] = field(default=None, metadata=field_metadata)
waiver_requested: Optional[bool] = field(default=None, metadata=field_metadata)
presubmit: Optional[bool] = field(default=None, metadata=field_metadata)
Expand Down

0 comments on commit e45dbec

Please sign in to comment.