lusid-sdk 2.1.261__py3-none-any.whl → 2.1.320__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. lusid/__init__.py +38 -0
  2. lusid/api/compliance_api.py +191 -0
  3. lusid/api/funds_api.py +1 -1
  4. lusid/api/order_management_api.py +159 -0
  5. lusid/api/scopes_api.py +38 -9
  6. lusid/configuration.py +1 -1
  7. lusid/extensions/configuration_loaders.py +9 -1
  8. lusid/models/__init__.py +38 -0
  9. lusid/models/cancel_orders_response.py +153 -0
  10. lusid/models/cancelled_order_result.py +73 -0
  11. lusid/models/cash.py +93 -0
  12. lusid/models/compliance_run_configuration.py +73 -0
  13. lusid/models/component_filter.py +85 -0
  14. lusid/models/component_rule.py +13 -19
  15. lusid/models/contract_for_difference.py +4 -2
  16. lusid/models/fund.py +6 -1
  17. lusid/models/fund_amount.py +69 -0
  18. lusid/models/fund_configuration.py +16 -15
  19. lusid/models/fund_configuration_request.py +18 -12
  20. lusid/models/fund_pnl_breakdown.py +110 -0
  21. lusid/models/fund_previous_nav.py +69 -0
  22. lusid/models/fund_request.py +6 -1
  23. lusid/models/fund_valuation_point_data.py +152 -0
  24. lusid/models/futures_contract_details.py +9 -2
  25. lusid/models/lusid_instrument.py +3 -2
  26. lusid/models/market_data_key_rule.py +3 -3
  27. lusid/models/market_data_specific_rule.py +3 -3
  28. lusid/models/market_quote.py +3 -3
  29. lusid/models/model_selection.py +3 -3
  30. lusid/models/pre_trade_configuration.py +69 -0
  31. lusid/models/previous_fund_valuation_point_data.py +79 -0
  32. lusid/models/previous_nav.py +73 -0
  33. lusid/models/previous_share_class_breakdown.py +81 -0
  34. lusid/models/pricing_model.py +1 -0
  35. lusid/models/quote_series_id.py +4 -20
  36. lusid/models/quote_type.py +3 -0
  37. lusid/models/share_class_amount.py +73 -0
  38. lusid/models/share_class_breakdown.py +163 -0
  39. lusid/models/share_class_data.py +79 -0
  40. lusid/models/share_class_details.py +108 -0
  41. lusid/models/share_class_pnl_breakdown.py +110 -0
  42. lusid/models/staged_modification.py +8 -1
  43. lusid/models/template_field.py +3 -1
  44. lusid/models/transaction_configuration_movement_data.py +2 -2
  45. lusid/models/transaction_configuration_movement_data_request.py +1 -1
  46. lusid/models/transaction_field_map.py +1 -1
  47. lusid/models/transaction_type_movement.py +2 -2
  48. lusid/models/unitisation_data.py +73 -0
  49. lusid/models/valuation_point_data_response.py +30 -9
  50. {lusid_sdk-2.1.261.dist-info → lusid_sdk-2.1.320.dist-info}/METADATA +30 -215
  51. {lusid_sdk-2.1.261.dist-info → lusid_sdk-2.1.320.dist-info}/RECORD +52 -33
  52. {lusid_sdk-2.1.261.dist-info → lusid_sdk-2.1.320.dist-info}/WHEEL +0 -0
@@ -0,0 +1,152 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, Dict, Optional, Union
22
+ from pydantic.v1 import BaseModel, Field, StrictFloat, StrictInt
23
+ from lusid.models.fee_accrual import FeeAccrual
24
+ from lusid.models.fund_amount import FundAmount
25
+ from lusid.models.fund_pnl_breakdown import FundPnlBreakdown
26
+ from lusid.models.previous_fund_valuation_point_data import PreviousFundValuationPointData
27
+ from lusid.models.unitisation_data import UnitisationData
28
+
29
+ class FundValuationPointData(BaseModel):
30
+ """
31
+ The Valuation Point Data for a Fund on a specified date. # noqa: E501
32
+ """
33
+ back_out: Dict[str, FundAmount] = Field(..., alias="backOut", description="Bucket of detail for the Valuation Point where data points have been 'backed out'.")
34
+ dealing: Dict[str, FundAmount] = Field(..., description="Bucket of detail for any 'Dealing' that has occured inside the queried period.")
35
+ pn_l: FundPnlBreakdown = Field(..., alias="pnL")
36
+ gav: Union[StrictFloat, StrictInt] = Field(..., description="The Gross Asset Value of the Fund or Share Class at the Valuation Point. This is effectively a summation of all Trial balance entries linked to accounts of types 'Asset' and 'Liabilities'.")
37
+ fees: Dict[str, FeeAccrual] = Field(..., description="Bucket of detail for any 'Fees' that have been charged in the selected period.")
38
+ nav: Union[StrictFloat, StrictInt] = Field(..., description="The Net Asset Value of the Fund or Share Class at the Valuation Point. This represents the GAV with any fees applied in the period.")
39
+ unitisation: Optional[UnitisationData] = None
40
+ miscellaneous: Optional[Dict[str, FundAmount]] = Field(None, description="Not used directly by the LUSID engines but serves as a holding area for any custom derived data points that may be useful in, for example, fee calculations).")
41
+ previous_valuation_point_data: Optional[PreviousFundValuationPointData] = Field(None, alias="previousValuationPointData")
42
+ __properties = ["backOut", "dealing", "pnL", "gav", "fees", "nav", "unitisation", "miscellaneous", "previousValuationPointData"]
43
+
44
+ class Config:
45
+ """Pydantic configuration"""
46
+ allow_population_by_field_name = True
47
+ validate_assignment = True
48
+
49
+ def to_str(self) -> str:
50
+ """Returns the string representation of the model using alias"""
51
+ return pprint.pformat(self.dict(by_alias=True))
52
+
53
+ def to_json(self) -> str:
54
+ """Returns the JSON representation of the model using alias"""
55
+ return json.dumps(self.to_dict())
56
+
57
+ @classmethod
58
+ def from_json(cls, json_str: str) -> FundValuationPointData:
59
+ """Create an instance of FundValuationPointData from a JSON string"""
60
+ return cls.from_dict(json.loads(json_str))
61
+
62
+ def to_dict(self):
63
+ """Returns the dictionary representation of the model using alias"""
64
+ _dict = self.dict(by_alias=True,
65
+ exclude={
66
+ },
67
+ exclude_none=True)
68
+ # override the default output from pydantic by calling `to_dict()` of each value in back_out (dict)
69
+ _field_dict = {}
70
+ if self.back_out:
71
+ for _key in self.back_out:
72
+ if self.back_out[_key]:
73
+ _field_dict[_key] = self.back_out[_key].to_dict()
74
+ _dict['backOut'] = _field_dict
75
+ # override the default output from pydantic by calling `to_dict()` of each value in dealing (dict)
76
+ _field_dict = {}
77
+ if self.dealing:
78
+ for _key in self.dealing:
79
+ if self.dealing[_key]:
80
+ _field_dict[_key] = self.dealing[_key].to_dict()
81
+ _dict['dealing'] = _field_dict
82
+ # override the default output from pydantic by calling `to_dict()` of pn_l
83
+ if self.pn_l:
84
+ _dict['pnL'] = self.pn_l.to_dict()
85
+ # override the default output from pydantic by calling `to_dict()` of each value in fees (dict)
86
+ _field_dict = {}
87
+ if self.fees:
88
+ for _key in self.fees:
89
+ if self.fees[_key]:
90
+ _field_dict[_key] = self.fees[_key].to_dict()
91
+ _dict['fees'] = _field_dict
92
+ # override the default output from pydantic by calling `to_dict()` of unitisation
93
+ if self.unitisation:
94
+ _dict['unitisation'] = self.unitisation.to_dict()
95
+ # override the default output from pydantic by calling `to_dict()` of each value in miscellaneous (dict)
96
+ _field_dict = {}
97
+ if self.miscellaneous:
98
+ for _key in self.miscellaneous:
99
+ if self.miscellaneous[_key]:
100
+ _field_dict[_key] = self.miscellaneous[_key].to_dict()
101
+ _dict['miscellaneous'] = _field_dict
102
+ # override the default output from pydantic by calling `to_dict()` of previous_valuation_point_data
103
+ if self.previous_valuation_point_data:
104
+ _dict['previousValuationPointData'] = self.previous_valuation_point_data.to_dict()
105
+ # set to None if miscellaneous (nullable) is None
106
+ # and __fields_set__ contains the field
107
+ if self.miscellaneous is None and "miscellaneous" in self.__fields_set__:
108
+ _dict['miscellaneous'] = None
109
+
110
+ return _dict
111
+
112
+ @classmethod
113
+ def from_dict(cls, obj: dict) -> FundValuationPointData:
114
+ """Create an instance of FundValuationPointData from a dict"""
115
+ if obj is None:
116
+ return None
117
+
118
+ if not isinstance(obj, dict):
119
+ return FundValuationPointData.parse_obj(obj)
120
+
121
+ _obj = FundValuationPointData.parse_obj({
122
+ "back_out": dict(
123
+ (_k, FundAmount.from_dict(_v))
124
+ for _k, _v in obj.get("backOut").items()
125
+ )
126
+ if obj.get("backOut") is not None
127
+ else None,
128
+ "dealing": dict(
129
+ (_k, FundAmount.from_dict(_v))
130
+ for _k, _v in obj.get("dealing").items()
131
+ )
132
+ if obj.get("dealing") is not None
133
+ else None,
134
+ "pn_l": FundPnlBreakdown.from_dict(obj.get("pnL")) if obj.get("pnL") is not None else None,
135
+ "gav": obj.get("gav"),
136
+ "fees": dict(
137
+ (_k, FeeAccrual.from_dict(_v))
138
+ for _k, _v in obj.get("fees").items()
139
+ )
140
+ if obj.get("fees") is not None
141
+ else None,
142
+ "nav": obj.get("nav"),
143
+ "unitisation": UnitisationData.from_dict(obj.get("unitisation")) if obj.get("unitisation") is not None else None,
144
+ "miscellaneous": dict(
145
+ (_k, FundAmount.from_dict(_v))
146
+ for _k, _v in obj.get("miscellaneous").items()
147
+ )
148
+ if obj.get("miscellaneous") is not None
149
+ else None,
150
+ "previous_valuation_point_data": PreviousFundValuationPointData.from_dict(obj.get("previousValuationPointData")) if obj.get("previousValuationPointData") is not None else None
151
+ })
152
+ return _obj
@@ -39,7 +39,8 @@ class FuturesContractDetails(BaseModel):
39
39
  ticker_step: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="tickerStep", description="Minimal step size change in ticker.")
40
40
  unit_value: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="unitValue", description="The value in the currency of a 1 unit change in the contract price.")
41
41
  calendars: Optional[conlist(StrictStr)] = Field(None, description="Holiday calendars that apply to yield-to-price conversions (i.e. for BRL futures).")
42
- __properties = ["domCcy", "fgnCcy", "assetClass", "contractCode", "contractMonth", "contractSize", "convention", "country", "description", "exchangeCode", "exchangeName", "tickerStep", "unitValue", "calendars"]
42
+ delivery_type: Optional[StrictStr] = Field(None, alias="deliveryType", description="Delivery type to be used on settling the contract. Optional: Defaults to DeliveryType.Physical if not provided. Supported string (enumeration) values are: [Cash, Physical].")
43
+ __properties = ["domCcy", "fgnCcy", "assetClass", "contractCode", "contractMonth", "contractSize", "convention", "country", "description", "exchangeCode", "exchangeName", "tickerStep", "unitValue", "calendars", "deliveryType"]
43
44
 
44
45
  class Config:
45
46
  """Pydantic configuration"""
@@ -100,6 +101,11 @@ class FuturesContractDetails(BaseModel):
100
101
  if self.calendars is None and "calendars" in self.__fields_set__:
101
102
  _dict['calendars'] = None
102
103
 
104
+ # set to None if delivery_type (nullable) is None
105
+ # and __fields_set__ contains the field
106
+ if self.delivery_type is None and "delivery_type" in self.__fields_set__:
107
+ _dict['deliveryType'] = None
108
+
103
109
  return _dict
104
110
 
105
111
  @classmethod
@@ -125,6 +131,7 @@ class FuturesContractDetails(BaseModel):
125
131
  "exchange_name": obj.get("exchangeName"),
126
132
  "ticker_step": obj.get("tickerStep"),
127
133
  "unit_value": obj.get("unitValue"),
128
- "calendars": obj.get("calendars")
134
+ "calendars": obj.get("calendars"),
135
+ "delivery_type": obj.get("deliveryType")
129
136
  })
130
137
  return _obj
@@ -49,6 +49,7 @@ class LusidInstrument(BaseModel):
49
49
  'Basket': 'Basket',
50
50
  'Bond': 'Bond',
51
51
  'CapFloor': 'CapFloor',
52
+ 'Cash': 'Cash',
52
53
  'CashPerpetual': 'CashPerpetual',
53
54
  'CdsIndex': 'CdsIndex',
54
55
  'ComplexBond': 'ComplexBond',
@@ -101,7 +102,7 @@ class LusidInstrument(BaseModel):
101
102
  return json.dumps(self.to_dict())
102
103
 
103
104
  @classmethod
104
- def from_json(cls, json_str: str) -> Union(Basket, Bond, CapFloor, CashPerpetual, CdsIndex, ComplexBond, ContractForDifference, CreditDefaultSwap, Equity, EquityOption, EquitySwap, ExchangeTradedOption, ExoticInstrument, FlexibleLoan, ForwardRateAgreement, FundShareClass, Future, FxForward, FxOption, FxSwap, InflationLeg, InflationLinkedBond, InflationSwap, InstrumentLeg, InterestRateSwap, InterestRateSwaption, ReferenceInstrument, Repo, SimpleCashFlowLoan, SimpleInstrument, TermDeposit, TotalReturnSwap):
105
+ def from_json(cls, json_str: str) -> Union(Basket, Bond, CapFloor, Cash, CashPerpetual, CdsIndex, ComplexBond, ContractForDifference, CreditDefaultSwap, Equity, EquityOption, EquitySwap, ExchangeTradedOption, ExoticInstrument, FlexibleLoan, ForwardRateAgreement, FundShareClass, Future, FxForward, FxOption, FxSwap, InflationLeg, InflationLinkedBond, InflationSwap, InstrumentLeg, InterestRateSwap, InterestRateSwaption, ReferenceInstrument, Repo, SimpleCashFlowLoan, SimpleInstrument, TermDeposit, TotalReturnSwap):
105
106
  """Create an instance of LusidInstrument from a JSON string"""
106
107
  return cls.from_dict(json.loads(json_str))
107
108
 
@@ -114,7 +115,7 @@ class LusidInstrument(BaseModel):
114
115
  return _dict
115
116
 
116
117
  @classmethod
117
- def from_dict(cls, obj: dict) -> Union(Basket, Bond, CapFloor, CashPerpetual, CdsIndex, ComplexBond, ContractForDifference, CreditDefaultSwap, Equity, EquityOption, EquitySwap, ExchangeTradedOption, ExoticInstrument, FlexibleLoan, ForwardRateAgreement, FundShareClass, Future, FxForward, FxOption, FxSwap, InflationLeg, InflationLinkedBond, InflationSwap, InstrumentLeg, InterestRateSwap, InterestRateSwaption, ReferenceInstrument, Repo, SimpleCashFlowLoan, SimpleInstrument, TermDeposit, TotalReturnSwap):
118
+ def from_dict(cls, obj: dict) -> Union(Basket, Bond, CapFloor, Cash, CashPerpetual, CdsIndex, ComplexBond, ContractForDifference, CreditDefaultSwap, Equity, EquityOption, EquitySwap, ExchangeTradedOption, ExoticInstrument, FlexibleLoan, ForwardRateAgreement, FundShareClass, Future, FxForward, FxOption, FxSwap, InflationLeg, InflationLinkedBond, InflationSwap, InstrumentLeg, InterestRateSwap, InterestRateSwaption, ReferenceInstrument, Repo, SimpleCashFlowLoan, SimpleInstrument, TermDeposit, TotalReturnSwap):
118
119
  """Create an instance of LusidInstrument from a dict"""
119
120
  # look up the object type based on discriminator mapping
120
121
  object_type = cls.get_discriminator_value(obj)
@@ -28,7 +28,7 @@ class MarketDataKeyRule(BaseModel):
28
28
  key: constr(strict=True, max_length=128, min_length=0) = Field(..., description="A dot-separated string that defines a pattern for matching market data dependencies. The form of the string depends on the type of the dependency; see below for basic types and the Knowledge Base for further info. Quote lookup: \"Quote.{CodeType}.*\" e.g. \"Quote.RIC.*\" refers to 'any RIC quote' Fx rates: \"Fx.CurrencyPair.*\", which refers to 'any FX rate' Discounting curves: \"Rates.{Currency}.{Currency}OIS e.g. \"Rates.USD.USDOIS\" refers to the OIS USD discounting curve For non-fx and non-quote rules, trailing parameters can be replaced by the wildcard character '*'. e.g. \"Rates.*.*\" matches any dependency on a discounting curve.")
29
29
  supplier: constr(strict=True, max_length=32, min_length=0) = Field(..., description="The market data supplier (where the data comes from)")
30
30
  data_scope: constr(strict=True, max_length=256, min_length=1) = Field(..., alias="dataScope", description="The scope in which the data should be found when using this rule.")
31
- quote_type: StrictStr = Field(..., alias="quoteType", description="The available values are: Price, Spread, Rate, LogNormalVol, NormalVol, ParSpread, IsdaSpread, Upfront, Index, Ratio, Delta, PoolFactor, InflationAssumption, DirtyPrice")
31
+ quote_type: StrictStr = Field(..., alias="quoteType", description="The available values are: Price, Spread, Rate, LogNormalVol, NormalVol, ParSpread, IsdaSpread, Upfront, Index, Ratio, Delta, PoolFactor, InflationAssumption, DirtyPrice, PrincipalWriteOff, InterestDeferred, InterestShortfall")
32
32
  field: Optional[constr(strict=True, max_length=32, min_length=0)] = Field(None, description="The conceptual qualification for the field, typically 'bid', 'mid' (default), or 'ask', but can also be 'open', 'close', etc. When resolving quotes from LUSID's database, only quotes whose Field is identical to the Field specified here will be accepted as market data. When resolving data from an external supplier, the Field must be one of a defined set for the given supplier. Note: Applies to the retrieval of quotes only. Has no impact on the resolution of complex market data.")
33
33
  quote_interval: Optional[constr(strict=True, max_length=16, min_length=0)] = Field(None, alias="quoteInterval", description="Shorthand for the time interval used to select market data. This must be a dot-separated string nominating a start and end date, for example '5D.0D' to look back 5 days from today (0 days ago). The syntax is <i>int</i><i>char</i>.<i>int</i><i>char</i>, where <i>char</i> is one of D(ay), Bd(business day), W(eek), M(onth) or Y(ear). Business days are calculated using the calendars specified on the Valuation Request. If no calendar is provided in the request, then it will default to only skipping weekends. For example, if the valuation date is a Monday, then a quote interval of \"1Bd\" would behave as \"3D\", looking back to the Friday. Data with effectiveAt on the weekend will still be found in that window.")
34
34
  as_at: Optional[datetime] = Field(None, alias="asAt", description="The AsAt predicate specification.")
@@ -47,8 +47,8 @@ class MarketDataKeyRule(BaseModel):
47
47
  @validator('quote_type')
48
48
  def quote_type_validate_enum(cls, value):
49
49
  """Validates the enum"""
50
- if value not in ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice'):
51
- raise ValueError("must be one of enum values ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice')")
50
+ if value not in ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall'):
51
+ raise ValueError("must be one of enum values ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall')")
52
52
  return value
53
53
 
54
54
  class Config:
@@ -29,7 +29,7 @@ class MarketDataSpecificRule(BaseModel):
29
29
  key: constr(strict=True, max_length=128, min_length=0) = Field(..., description="The market data key pattern which this is a rule for. A dot separated string (A.B.C.D.*)")
30
30
  supplier: constr(strict=True, max_length=32, min_length=0) = Field(..., description="The market data supplier (where the data comes from)")
31
31
  data_scope: constr(strict=True, max_length=256, min_length=1) = Field(..., alias="dataScope", description="The scope in which the data should be found when using this rule.")
32
- quote_type: StrictStr = Field(..., alias="quoteType", description="The available values are: Price, Spread, Rate, LogNormalVol, NormalVol, ParSpread, IsdaSpread, Upfront, Index, Ratio, Delta, PoolFactor, InflationAssumption, DirtyPrice")
32
+ quote_type: StrictStr = Field(..., alias="quoteType", description="The available values are: Price, Spread, Rate, LogNormalVol, NormalVol, ParSpread, IsdaSpread, Upfront, Index, Ratio, Delta, PoolFactor, InflationAssumption, DirtyPrice, PrincipalWriteOff, InterestDeferred, InterestShortfall")
33
33
  field: constr(strict=True, max_length=32, min_length=0) = Field(..., description="The conceptual qualification for the field, such as bid, mid, or ask. The field must be one of a defined set for the given supplier, in the same way as it is for the Finbourne.WebApi.Interface.Dto.Quotes.QuoteSeriesId")
34
34
  quote_interval: Optional[constr(strict=True, max_length=16, min_length=0)] = Field(None, alias="quoteInterval", description="Shorthand for the time interval used to select market data. This must be a dot-separated string nominating a start and end date, for example '5D.0D' to look back 5 days from today (0 days ago). The syntax is <i>int</i><i>char</i>.<i>int</i><i>char</i>, where <i>char</i> is one of D(ay), W(eek), M(onth) or Y(ear).")
35
35
  as_at: Optional[datetime] = Field(None, alias="asAt", description="The AsAt predicate specification.")
@@ -49,8 +49,8 @@ class MarketDataSpecificRule(BaseModel):
49
49
  @validator('quote_type')
50
50
  def quote_type_validate_enum(cls, value):
51
51
  """Validates the enum"""
52
- if value not in ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice'):
53
- raise ValueError("must be one of enum values ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice')")
52
+ if value not in ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall'):
53
+ raise ValueError("must be one of enum values ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall')")
54
54
  return value
55
55
 
56
56
  class Config:
@@ -25,15 +25,15 @@ class MarketQuote(BaseModel):
25
25
  """
26
26
  The market quote for an observable which will be used to calibrate the market data, including the format of the quote. e.g. a volatility quote for a specific strike and expiry the par rate of a swap This is a slimmed down version of a full Quote that can be stored in our QuoteStore to remove lineage, price source etc. for ease of use when creating complex market data. # noqa: E501
27
27
  """
28
- quote_type: StrictStr = Field(..., alias="quoteType", description="The available values are: Price, Spread, Rate, LogNormalVol, NormalVol, ParSpread, IsdaSpread, Upfront, Index, Ratio, Delta, PoolFactor, InflationAssumption, DirtyPrice")
28
+ quote_type: StrictStr = Field(..., alias="quoteType", description="The available values are: Price, Spread, Rate, LogNormalVol, NormalVol, ParSpread, IsdaSpread, Upfront, Index, Ratio, Delta, PoolFactor, InflationAssumption, DirtyPrice, PrincipalWriteOff, InterestDeferred, InterestShortfall")
29
29
  value: Union[StrictFloat, StrictInt] = Field(..., description="Numeric value of the quote")
30
30
  __properties = ["quoteType", "value"]
31
31
 
32
32
  @validator('quote_type')
33
33
  def quote_type_validate_enum(cls, value):
34
34
  """Validates the enum"""
35
- if value not in ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice'):
36
- raise ValueError("must be one of enum values ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice')")
35
+ if value not in ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall'):
36
+ raise ValueError("must be one of enum values ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall')")
37
37
  return value
38
38
 
39
39
  class Config:
@@ -26,7 +26,7 @@ class ModelSelection(BaseModel):
26
26
  The combination of a library to use and a model in that library that defines which pricing code will evaluate instruments having a particular type/class. This allows us to control the model type and library for a given instrument. # noqa: E501
27
27
  """
28
28
  library: StrictStr = Field(..., description="The available values are: Lusid, RefinitivQps, RefinitivTracsWeb, VolMaster, IsdaCds, YieldBook, LusidCalc")
29
- model: StrictStr = Field(..., description="The available values are: SimpleStatic, Discounting, VendorDefault, BlackScholes, ConstantTimeValueOfMoney, Bachelier, ForwardWithPoints, ForwardWithPointsUndiscounted, ForwardSpecifiedRate, ForwardSpecifiedRateUndiscounted, IndexNav, IndexPrice, InlinedIndex, ForwardFromCurve, ForwardFromCurveUndiscounted, BlackScholesDigital, BjerksundStensland1993, BondLookupPricer, FlexibleLoanPricer")
29
+ model: StrictStr = Field(..., description="The available values are: SimpleStatic, Discounting, VendorDefault, BlackScholes, ConstantTimeValueOfMoney, Bachelier, ForwardWithPoints, ForwardWithPointsUndiscounted, ForwardSpecifiedRate, ForwardSpecifiedRateUndiscounted, IndexNav, IndexPrice, InlinedIndex, ForwardFromCurve, ForwardFromCurveUndiscounted, BlackScholesDigital, BjerksundStensland1993, BondLookupPricer, FlexibleLoanPricer, CdsLookupPricer")
30
30
  __properties = ["library", "model"]
31
31
 
32
32
  @validator('library')
@@ -39,8 +39,8 @@ class ModelSelection(BaseModel):
39
39
  @validator('model')
40
40
  def model_validate_enum(cls, value):
41
41
  """Validates the enum"""
42
- if value not in ('SimpleStatic', 'Discounting', 'VendorDefault', 'BlackScholes', 'ConstantTimeValueOfMoney', 'Bachelier', 'ForwardWithPoints', 'ForwardWithPointsUndiscounted', 'ForwardSpecifiedRate', 'ForwardSpecifiedRateUndiscounted', 'IndexNav', 'IndexPrice', 'InlinedIndex', 'ForwardFromCurve', 'ForwardFromCurveUndiscounted', 'BlackScholesDigital', 'BjerksundStensland1993', 'BondLookupPricer', 'FlexibleLoanPricer'):
43
- raise ValueError("must be one of enum values ('SimpleStatic', 'Discounting', 'VendorDefault', 'BlackScholes', 'ConstantTimeValueOfMoney', 'Bachelier', 'ForwardWithPoints', 'ForwardWithPointsUndiscounted', 'ForwardSpecifiedRate', 'ForwardSpecifiedRateUndiscounted', 'IndexNav', 'IndexPrice', 'InlinedIndex', 'ForwardFromCurve', 'ForwardFromCurveUndiscounted', 'BlackScholesDigital', 'BjerksundStensland1993', 'BondLookupPricer', 'FlexibleLoanPricer')")
42
+ if value not in ('SimpleStatic', 'Discounting', 'VendorDefault', 'BlackScholes', 'ConstantTimeValueOfMoney', 'Bachelier', 'ForwardWithPoints', 'ForwardWithPointsUndiscounted', 'ForwardSpecifiedRate', 'ForwardSpecifiedRateUndiscounted', 'IndexNav', 'IndexPrice', 'InlinedIndex', 'ForwardFromCurve', 'ForwardFromCurveUndiscounted', 'BlackScholesDigital', 'BjerksundStensland1993', 'BondLookupPricer', 'FlexibleLoanPricer', 'CdsLookupPricer'):
43
+ raise ValueError("must be one of enum values ('SimpleStatic', 'Discounting', 'VendorDefault', 'BlackScholes', 'ConstantTimeValueOfMoney', 'Bachelier', 'ForwardWithPoints', 'ForwardWithPointsUndiscounted', 'ForwardSpecifiedRate', 'ForwardSpecifiedRateUndiscounted', 'IndexNav', 'IndexPrice', 'InlinedIndex', 'ForwardFromCurve', 'ForwardFromCurveUndiscounted', 'BlackScholesDigital', 'BjerksundStensland1993', 'BondLookupPricer', 'FlexibleLoanPricer', 'CdsLookupPricer')")
44
44
  return value
45
45
 
46
46
  class Config:
@@ -0,0 +1,69 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, Dict
22
+ from pydantic.v1 import BaseModel, Field, constr
23
+
24
+ class PreTradeConfiguration(BaseModel):
25
+ """
26
+ Specification object for the pre trade configuration parameters of a compliance run # noqa: E501
27
+ """
28
+ include_entity_types: constr(strict=True, min_length=1) = Field(..., alias="includeEntityTypes", description="Controls whether Orders and Allocations orders are included in the Portfolio valuation done for this compliance run. Valid values are: None (to account for Transactions only), Allocations (to include Allocations and Transactions) and OrdersAndAllocations (to include Orders, Allocations and Transactions).")
29
+ __properties = ["includeEntityTypes"]
30
+
31
+ class Config:
32
+ """Pydantic configuration"""
33
+ allow_population_by_field_name = True
34
+ validate_assignment = True
35
+
36
+ def to_str(self) -> str:
37
+ """Returns the string representation of the model using alias"""
38
+ return pprint.pformat(self.dict(by_alias=True))
39
+
40
+ def to_json(self) -> str:
41
+ """Returns the JSON representation of the model using alias"""
42
+ return json.dumps(self.to_dict())
43
+
44
+ @classmethod
45
+ def from_json(cls, json_str: str) -> PreTradeConfiguration:
46
+ """Create an instance of PreTradeConfiguration from a JSON string"""
47
+ return cls.from_dict(json.loads(json_str))
48
+
49
+ def to_dict(self):
50
+ """Returns the dictionary representation of the model using alias"""
51
+ _dict = self.dict(by_alias=True,
52
+ exclude={
53
+ },
54
+ exclude_none=True)
55
+ return _dict
56
+
57
+ @classmethod
58
+ def from_dict(cls, obj: dict) -> PreTradeConfiguration:
59
+ """Create an instance of PreTradeConfiguration from a dict"""
60
+ if obj is None:
61
+ return None
62
+
63
+ if not isinstance(obj, dict):
64
+ return PreTradeConfiguration.parse_obj(obj)
65
+
66
+ _obj = PreTradeConfiguration.parse_obj({
67
+ "include_entity_types": obj.get("includeEntityTypes")
68
+ })
69
+ return _obj
@@ -0,0 +1,79 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, Dict, Optional
22
+ from pydantic.v1 import BaseModel, Field
23
+ from lusid.models.fund_previous_nav import FundPreviousNAV
24
+ from lusid.models.unitisation_data import UnitisationData
25
+
26
+ class PreviousFundValuationPointData(BaseModel):
27
+ """
28
+ The data for a Fund at the previous valuation point. # noqa: E501
29
+ """
30
+ nav: FundPreviousNAV = Field(...)
31
+ unitisation: Optional[UnitisationData] = None
32
+ __properties = ["nav", "unitisation"]
33
+
34
+ class Config:
35
+ """Pydantic configuration"""
36
+ allow_population_by_field_name = True
37
+ validate_assignment = True
38
+
39
+ def to_str(self) -> str:
40
+ """Returns the string representation of the model using alias"""
41
+ return pprint.pformat(self.dict(by_alias=True))
42
+
43
+ def to_json(self) -> str:
44
+ """Returns the JSON representation of the model using alias"""
45
+ return json.dumps(self.to_dict())
46
+
47
+ @classmethod
48
+ def from_json(cls, json_str: str) -> PreviousFundValuationPointData:
49
+ """Create an instance of PreviousFundValuationPointData from a JSON string"""
50
+ return cls.from_dict(json.loads(json_str))
51
+
52
+ def to_dict(self):
53
+ """Returns the dictionary representation of the model using alias"""
54
+ _dict = self.dict(by_alias=True,
55
+ exclude={
56
+ },
57
+ exclude_none=True)
58
+ # override the default output from pydantic by calling `to_dict()` of nav
59
+ if self.nav:
60
+ _dict['nav'] = self.nav.to_dict()
61
+ # override the default output from pydantic by calling `to_dict()` of unitisation
62
+ if self.unitisation:
63
+ _dict['unitisation'] = self.unitisation.to_dict()
64
+ return _dict
65
+
66
+ @classmethod
67
+ def from_dict(cls, obj: dict) -> PreviousFundValuationPointData:
68
+ """Create an instance of PreviousFundValuationPointData from a dict"""
69
+ if obj is None:
70
+ return None
71
+
72
+ if not isinstance(obj, dict):
73
+ return PreviousFundValuationPointData.parse_obj(obj)
74
+
75
+ _obj = PreviousFundValuationPointData.parse_obj({
76
+ "nav": FundPreviousNAV.from_dict(obj.get("nav")) if obj.get("nav") is not None else None,
77
+ "unitisation": UnitisationData.from_dict(obj.get("unitisation")) if obj.get("unitisation") is not None else None
78
+ })
79
+ return _obj
@@ -0,0 +1,73 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, Dict, Optional
22
+ from pydantic.v1 import BaseModel
23
+ from lusid.models.multi_currency_amounts import MultiCurrencyAmounts
24
+
25
+ class PreviousNAV(BaseModel):
26
+ """
27
+ PreviousNAV
28
+ """
29
+ amount: Optional[MultiCurrencyAmounts] = None
30
+ __properties = ["amount"]
31
+
32
+ class Config:
33
+ """Pydantic configuration"""
34
+ allow_population_by_field_name = True
35
+ validate_assignment = True
36
+
37
+ def to_str(self) -> str:
38
+ """Returns the string representation of the model using alias"""
39
+ return pprint.pformat(self.dict(by_alias=True))
40
+
41
+ def to_json(self) -> str:
42
+ """Returns the JSON representation of the model using alias"""
43
+ return json.dumps(self.to_dict())
44
+
45
+ @classmethod
46
+ def from_json(cls, json_str: str) -> PreviousNAV:
47
+ """Create an instance of PreviousNAV from a JSON string"""
48
+ return cls.from_dict(json.loads(json_str))
49
+
50
+ def to_dict(self):
51
+ """Returns the dictionary representation of the model using alias"""
52
+ _dict = self.dict(by_alias=True,
53
+ exclude={
54
+ },
55
+ exclude_none=True)
56
+ # override the default output from pydantic by calling `to_dict()` of amount
57
+ if self.amount:
58
+ _dict['amount'] = self.amount.to_dict()
59
+ return _dict
60
+
61
+ @classmethod
62
+ def from_dict(cls, obj: dict) -> PreviousNAV:
63
+ """Create an instance of PreviousNAV from a dict"""
64
+ if obj is None:
65
+ return None
66
+
67
+ if not isinstance(obj, dict):
68
+ return PreviousNAV.parse_obj(obj)
69
+
70
+ _obj = PreviousNAV.parse_obj({
71
+ "amount": MultiCurrencyAmounts.from_dict(obj.get("amount")) if obj.get("amount") is not None else None
72
+ })
73
+ return _obj
@@ -0,0 +1,81 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, Dict, Optional, Union
22
+ from pydantic.v1 import BaseModel, Field, StrictFloat, StrictInt
23
+ from lusid.models.previous_nav import PreviousNAV
24
+ from lusid.models.unitisation_data import UnitisationData
25
+
26
+ class PreviousShareClassBreakdown(BaseModel):
27
+ """
28
+ The data for a Share Class at the previous valuation point. # noqa: E501
29
+ """
30
+ nav: PreviousNAV = Field(...)
31
+ unitisation: Optional[UnitisationData] = None
32
+ share_class_to_fund_fx_rate: Union[StrictFloat, StrictInt] = Field(..., alias="shareClassToFundFxRate", description="The fx rate from the Share Class currency to the fund currency at this valuation point.")
33
+ __properties = ["nav", "unitisation", "shareClassToFundFxRate"]
34
+
35
+ class Config:
36
+ """Pydantic configuration"""
37
+ allow_population_by_field_name = True
38
+ validate_assignment = True
39
+
40
+ def to_str(self) -> str:
41
+ """Returns the string representation of the model using alias"""
42
+ return pprint.pformat(self.dict(by_alias=True))
43
+
44
+ def to_json(self) -> str:
45
+ """Returns the JSON representation of the model using alias"""
46
+ return json.dumps(self.to_dict())
47
+
48
+ @classmethod
49
+ def from_json(cls, json_str: str) -> PreviousShareClassBreakdown:
50
+ """Create an instance of PreviousShareClassBreakdown from a JSON string"""
51
+ return cls.from_dict(json.loads(json_str))
52
+
53
+ def to_dict(self):
54
+ """Returns the dictionary representation of the model using alias"""
55
+ _dict = self.dict(by_alias=True,
56
+ exclude={
57
+ },
58
+ exclude_none=True)
59
+ # override the default output from pydantic by calling `to_dict()` of nav
60
+ if self.nav:
61
+ _dict['nav'] = self.nav.to_dict()
62
+ # override the default output from pydantic by calling `to_dict()` of unitisation
63
+ if self.unitisation:
64
+ _dict['unitisation'] = self.unitisation.to_dict()
65
+ return _dict
66
+
67
+ @classmethod
68
+ def from_dict(cls, obj: dict) -> PreviousShareClassBreakdown:
69
+ """Create an instance of PreviousShareClassBreakdown from a dict"""
70
+ if obj is None:
71
+ return None
72
+
73
+ if not isinstance(obj, dict):
74
+ return PreviousShareClassBreakdown.parse_obj(obj)
75
+
76
+ _obj = PreviousShareClassBreakdown.parse_obj({
77
+ "nav": PreviousNAV.from_dict(obj.get("nav")) if obj.get("nav") is not None else None,
78
+ "unitisation": UnitisationData.from_dict(obj.get("unitisation")) if obj.get("unitisation") is not None else None,
79
+ "share_class_to_fund_fx_rate": obj.get("shareClassToFundFxRate")
80
+ })
81
+ return _obj
@@ -48,6 +48,7 @@ class PricingModel(str, Enum):
48
48
  BJERKSUNDSTENSLAND1993 = 'BjerksundStensland1993'
49
49
  BONDLOOKUPPRICER = 'BondLookupPricer'
50
50
  FLEXIBLELOANPRICER = 'FlexibleLoanPricer'
51
+ CDSLOOKUPPRICER = 'CdsLookupPricer'
51
52
 
52
53
  @classmethod
53
54
  def from_json(cls, json_str: str) -> PricingModel: