lusid-sdk 2.0.50b0__py3-none-any.whl → 2.0.470__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.

Potentially problematic release.


This version of lusid-sdk might be problematic. Click here for more details.

Files changed (332) hide show
  1. lusid/__init__.py +1117 -14
  2. lusid/api/__init__.py +69 -0
  3. lusid/api/abor_api.py +513 -179
  4. lusid/api/abor_configuration_api.py +25 -24
  5. lusid/api/allocations_api.py +12 -20
  6. lusid/api/blocks_api.py +6 -6
  7. lusid/api/calendars_api.py +16 -24
  8. lusid/api/chart_of_accounts_api.py +1745 -441
  9. lusid/api/compliance_api.py +71 -62
  10. lusid/api/configuration_recipe_api.py +1198 -56
  11. lusid/api/corporate_action_sources_api.py +8 -8
  12. lusid/api/custom_entities_api.py +6 -6
  13. lusid/api/cut_label_definitions_api.py +9 -17
  14. lusid/api/data_types_api.py +16 -32
  15. lusid/api/executions_api.py +6 -6
  16. lusid/api/funds_api.py +1119 -0
  17. lusid/api/instrument_event_types_api.py +1287 -0
  18. lusid/api/instruments_api.py +12 -20
  19. lusid/api/legacy_compliance_api.py +12 -12
  20. lusid/api/legal_entities_api.py +12 -12
  21. lusid/api/order_graph_api.py +12 -12
  22. lusid/api/order_instructions_api.py +6 -6
  23. lusid/api/order_management_api.py +495 -14
  24. lusid/api/orders_api.py +16 -24
  25. lusid/api/packages_api.py +6 -6
  26. lusid/api/persons_api.py +16 -24
  27. lusid/api/placements_api.py +12 -12
  28. lusid/api/portfolio_groups_api.py +6 -6
  29. lusid/api/portfolios_api.py +23 -39
  30. lusid/api/property_definitions_api.py +205 -0
  31. lusid/api/queryable_keys_api.py +211 -0
  32. lusid/api/quotes_api.py +20 -36
  33. lusid/api/reconciliations_api.py +410 -1978
  34. lusid/api/schemas_api.py +7 -15
  35. lusid/api/scopes_api.py +151 -0
  36. lusid/api/scripted_translation_api.py +30 -28
  37. lusid/api/staging_rule_set_api.py +885 -0
  38. lusid/api/transaction_configuration_api.py +22 -22
  39. lusid/api/transaction_portfolios_api.py +282 -577
  40. lusid/api_client.py +5 -3
  41. lusid/configuration.py +1 -1
  42. lusid/extensions/__init__.py +10 -7
  43. lusid/extensions/api_client.py +3 -1
  44. lusid/extensions/api_client_factory.py +156 -45
  45. lusid/extensions/api_configuration.py +124 -15
  46. lusid/extensions/configuration_loaders.py +2 -4
  47. lusid/extensions/proxy_config.py +8 -5
  48. lusid/extensions/socket_keep_alive.py +14 -15
  49. lusid/extensions/tcp_keep_alive_connector.py +93 -46
  50. lusid/models/__init__.py +1028 -13
  51. lusid/models/abor.py +9 -2
  52. lusid/models/abor_configuration.py +8 -8
  53. lusid/models/abor_configuration_request.py +9 -9
  54. lusid/models/abor_request.py +1 -1
  55. lusid/models/account.py +6 -1
  56. lusid/models/accumulation_event.py +104 -0
  57. lusid/models/address_key_compliance_parameter.py +5 -12
  58. lusid/models/address_key_list_compliance_parameter.py +3 -3
  59. lusid/models/address_key_option_definition.py +3 -1
  60. lusid/models/amortisation_event.py +4 -6
  61. lusid/models/{underlying_leg.py → asset_leg.py} +15 -15
  62. lusid/models/basket.py +3 -3
  63. lusid/models/block_and_order_id_request.py +78 -0
  64. lusid/models/block_and_orders.py +83 -0
  65. lusid/models/block_and_orders_create_request.py +77 -0
  66. lusid/models/block_and_orders_request.py +134 -0
  67. lusid/models/blocked_order_request.py +130 -0
  68. lusid/models/bond.py +13 -6
  69. lusid/models/bond_coupon_event.py +97 -0
  70. lusid/models/bond_default_event.py +8 -18
  71. lusid/models/bond_principal_event.py +97 -0
  72. lusid/models/book_transactions_request.py +97 -0
  73. lusid/models/bool_compliance_parameter.py +3 -3
  74. lusid/models/bool_list_compliance_parameter.py +3 -3
  75. lusid/models/branch_step.py +101 -0
  76. lusid/models/cap_floor.py +3 -3
  77. lusid/models/cash_dividend_event.py +32 -10
  78. lusid/models/cash_election.py +91 -0
  79. lusid/models/cash_flow_event.py +5 -7
  80. lusid/models/cash_perpetual.py +3 -3
  81. lusid/models/cds_flow_conventions.py +1 -1
  82. lusid/models/cds_index.py +4 -4
  83. lusid/models/check_step.py +110 -0
  84. lusid/models/cleardown_module_details.py +95 -0
  85. lusid/models/cleardown_module_request.py +117 -0
  86. lusid/models/cleardown_module_response.py +139 -0
  87. lusid/models/cleardown_module_rule.py +94 -0
  88. lusid/models/{reconciliation_run_break.py → cleardown_module_rules_updated_response.py} +30 -36
  89. lusid/models/close_event.py +3 -3
  90. lusid/models/close_period_diary_entry_request.py +149 -0
  91. lusid/models/complete_portfolio.py +8 -1
  92. lusid/models/complex_bond.py +4 -4
  93. lusid/models/complex_market_data.py +6 -5
  94. lusid/models/compliance_parameter.py +8 -5
  95. lusid/models/compliance_parameter_type.py +3 -0
  96. lusid/models/compliance_rule_breakdown.py +16 -8
  97. lusid/models/compliance_rule_breakdown_request.py +12 -4
  98. lusid/models/compliance_rule_result_v2.py +85 -0
  99. lusid/models/compliance_step.py +99 -0
  100. lusid/models/compliance_step_type.py +42 -0
  101. lusid/models/compliance_summary_rule_result.py +12 -15
  102. lusid/models/compliance_summary_rule_result_request.py +12 -15
  103. lusid/models/compliance_template_variation.py +12 -2
  104. lusid/models/component_transaction.py +92 -0
  105. lusid/models/composite_dispersion.py +30 -5
  106. lusid/models/compounding.py +4 -4
  107. lusid/models/configuration_recipe.py +10 -19
  108. lusid/models/constant_volatility_surface.py +102 -0
  109. lusid/models/contract_for_difference.py +3 -3
  110. lusid/models/create_derived_property_definition_request.py +3 -3
  111. lusid/models/create_derived_transaction_portfolio_request.py +10 -3
  112. lusid/models/create_property_definition_request.py +12 -5
  113. lusid/models/create_staging_rule_set_request.py +91 -0
  114. lusid/models/create_trade_tickets_response.py +87 -0
  115. lusid/models/create_transaction_portfolio_request.py +16 -3
  116. lusid/models/credit_default_swap.py +4 -4
  117. lusid/models/credit_spread_curve_data.py +4 -4
  118. lusid/models/custom_entity_definition.py +8 -2
  119. lusid/models/custom_entity_type.py +8 -2
  120. lusid/models/cut_label_definition.py +7 -1
  121. lusid/models/data_type.py +7 -1
  122. lusid/models/data_type_summary.py +8 -2
  123. lusid/models/date_time_compliance_parameter.py +3 -3
  124. lusid/models/date_time_list_compliance_parameter.py +3 -3
  125. lusid/models/{upsert_reconciliation_run_request.py → day_month.py} +15 -15
  126. lusid/models/decimal_compliance_parameter.py +3 -3
  127. lusid/models/decimal_list_compliance_parameter.py +3 -3
  128. lusid/models/dialect.py +9 -3
  129. lusid/models/diary_entry.py +1 -1
  130. lusid/models/diary_entry_request.py +1 -1
  131. lusid/models/discount_factor_curve_data.py +3 -3
  132. lusid/models/dividend_option_event.py +129 -0
  133. lusid/models/dividend_reinvestment_event.py +124 -0
  134. lusid/models/election_specification.py +73 -0
  135. lusid/models/eligibility_calculation.py +71 -0
  136. lusid/models/empty_model_options.py +3 -3
  137. lusid/models/equity.py +8 -6
  138. lusid/models/equity_curve_by_prices_data.py +3 -3
  139. lusid/models/equity_model_options.py +3 -3
  140. lusid/models/equity_option.py +3 -3
  141. lusid/models/equity_swap.py +4 -4
  142. lusid/models/equity_vol_surface_data.py +3 -3
  143. lusid/models/exchange_traded_option.py +3 -3
  144. lusid/models/exercise_event.py +5 -7
  145. lusid/models/exotic_instrument.py +3 -3
  146. lusid/models/expiry_event.py +91 -0
  147. lusid/models/filter_predicate_compliance_parameter.py +91 -0
  148. lusid/models/filter_step.py +101 -0
  149. lusid/models/fixed_leg.py +3 -3
  150. lusid/models/fixed_schedule.py +4 -9
  151. lusid/models/flexible_loan.py +105 -0
  152. lusid/models/float_schedule.py +20 -12
  153. lusid/models/floating_leg.py +3 -3
  154. lusid/models/flow_convention_name.py +1 -1
  155. lusid/models/flow_conventions.py +1 -1
  156. lusid/models/forward_rate_agreement.py +3 -3
  157. lusid/models/from_recipe.py +81 -0
  158. lusid/models/fund.py +182 -0
  159. lusid/models/fund_properties.py +115 -0
  160. lusid/models/fund_request.py +165 -0
  161. lusid/models/fund_share_class.py +99 -0
  162. lusid/models/funding_leg.py +3 -3
  163. lusid/models/funding_leg_options.py +3 -3
  164. lusid/models/future.py +3 -3
  165. lusid/models/fx_conventions.py +73 -0
  166. lusid/models/fx_forward.py +8 -6
  167. lusid/models/fx_forward_curve_by_quote_reference.py +4 -4
  168. lusid/models/fx_forward_curve_data.py +3 -3
  169. lusid/models/fx_forward_model_options.py +3 -3
  170. lusid/models/fx_forward_pips_curve_data.py +3 -3
  171. lusid/models/fx_forward_settlement_event.py +136 -0
  172. lusid/models/fx_forward_tenor_curve_data.py +4 -4
  173. lusid/models/fx_forward_tenor_pips_curve_data.py +4 -4
  174. lusid/models/fx_linked_notional_schedule.py +108 -0
  175. lusid/models/fx_option.py +3 -3
  176. lusid/models/fx_rate_schedule.py +3 -3
  177. lusid/models/fx_swap.py +4 -4
  178. lusid/models/fx_vol_surface_data.py +3 -3
  179. lusid/models/{reconciliation_run.py → get_recipe_composer_response.py} +15 -15
  180. lusid/models/group_by_selector_compliance_parameter.py +91 -0
  181. lusid/models/group_by_step.py +101 -0
  182. lusid/models/group_filter_predicate_compliance_parameter.py +91 -0
  183. lusid/models/group_filter_step.py +110 -0
  184. lusid/models/group_of_market_data_key_rules.py +79 -0
  185. lusid/models/index_convention.py +1 -1
  186. lusid/models/index_model_options.py +3 -3
  187. lusid/models/inflation_index_conventions.py +2 -2
  188. lusid/models/inflation_leg.py +3 -3
  189. lusid/models/inflation_linked_bond.py +3 -3
  190. lusid/models/inflation_swap.py +4 -4
  191. lusid/models/informational_error_event.py +3 -3
  192. lusid/models/informational_event.py +4 -6
  193. lusid/models/instrument_event.py +13 -5
  194. lusid/models/instrument_event_configuration.py +74 -0
  195. lusid/models/instrument_event_holder.py +12 -3
  196. lusid/models/instrument_event_type.py +8 -0
  197. lusid/models/instrument_leg.py +3 -3
  198. lusid/models/instrument_list_compliance_parameter.py +3 -3
  199. lusid/models/instrument_payment_diary_leg.py +5 -3
  200. lusid/models/instrument_resolution_detail.py +105 -0
  201. lusid/models/instrument_type.py +2 -0
  202. lusid/models/interest_rate_swap.py +4 -4
  203. lusid/models/interest_rate_swaption.py +3 -3
  204. lusid/models/intermediate_compliance_step.py +110 -0
  205. lusid/models/ir_vol_cube_data.py +3 -3
  206. lusid/models/journal_entry_line.py +34 -3
  207. lusid/models/journal_entry_lines_query_parameters.py +1 -1
  208. lusid/models/label_value_set.py +1 -1
  209. lusid/models/leg_definition.py +16 -3
  210. lusid/models/lineage_member.py +87 -0
  211. lusid/models/lock_period_diary_entry_request.py +91 -0
  212. lusid/models/lusid_instrument.py +7 -5
  213. lusid/models/lusid_trade_ticket.py +8 -1
  214. lusid/models/market_context.py +17 -2
  215. lusid/models/market_data_type.py +1 -0
  216. lusid/models/maturity_event.py +91 -0
  217. lusid/models/model_options.py +5 -6
  218. lusid/models/model_options_type.py +0 -1
  219. lusid/models/model_selection.py +3 -3
  220. lusid/models/move_orders_to_different_blocks_request.py +77 -0
  221. lusid/models/moved_order_to_different_block_response.py +85 -0
  222. lusid/models/movement_type.py +2 -0
  223. lusid/models/multi_currency_amounts.py +71 -0
  224. lusid/models/opaque_market_data.py +3 -3
  225. lusid/models/opaque_model_options.py +3 -3
  226. lusid/models/open_event.py +3 -3
  227. lusid/models/optionality_schedule.py +3 -3
  228. lusid/models/order_graph_block.py +4 -2
  229. lusid/models/order_graph_block_order_detail.py +16 -2
  230. lusid/models/output_transaction.py +9 -2
  231. lusid/models/paged_resource_list_of_cleardown_module_response.py +113 -0
  232. lusid/models/{paged_resource_list_of_reconciliation_run_break.py → paged_resource_list_of_cleardown_module_rule.py} +11 -11
  233. lusid/models/{paged_resource_list_of_reconciliation_run.py → paged_resource_list_of_fund.py} +11 -11
  234. lusid/models/paged_resource_list_of_property_definition.py +113 -0
  235. lusid/models/paged_resource_list_of_staging_rule_set.py +113 -0
  236. lusid/models/paged_resource_list_of_transaction_template.py +113 -0
  237. lusid/models/paged_resource_list_of_transaction_template_specification.py +113 -0
  238. lusid/models/participation_request.py +3 -9
  239. lusid/models/performance_returns_metric.py +1 -1
  240. lusid/models/period_diary_entries_reopened_response.py +104 -0
  241. lusid/models/place_blocks_request.py +77 -0
  242. lusid/models/portfolio.py +15 -2
  243. lusid/models/portfolio_details.py +15 -2
  244. lusid/models/portfolio_group_id_compliance_parameter.py +3 -3
  245. lusid/models/portfolio_group_id_list_compliance_parameter.py +3 -3
  246. lusid/models/portfolio_holding.py +27 -2
  247. lusid/models/portfolio_id_compliance_parameter.py +3 -3
  248. lusid/models/portfolio_id_list_compliance_parameter.py +3 -3
  249. lusid/models/posting_module_rule.py +29 -4
  250. lusid/models/pricing_model.py +2 -1
  251. lusid/models/property_definition.py +17 -4
  252. lusid/models/property_definition_search_result.py +3 -3
  253. lusid/models/property_domain.py +3 -0
  254. lusid/models/property_key_compliance_parameter.py +3 -3
  255. lusid/models/property_key_list_compliance_parameter.py +3 -3
  256. lusid/models/queryable_key.py +124 -0
  257. lusid/models/raw_vendor_event.py +5 -7
  258. lusid/models/re_open_period_diary_entry_request.py +84 -0
  259. lusid/models/recipe_block.py +87 -0
  260. lusid/models/recipe_composer.py +100 -0
  261. lusid/models/{reconciliation_break_id.py → recipe_value.py} +22 -23
  262. lusid/models/recombine_step.py +101 -0
  263. lusid/models/reference_instrument.py +3 -3
  264. lusid/models/relative_date_offset.py +71 -0
  265. lusid/models/repo.py +3 -3
  266. lusid/models/reset_event.py +4 -6
  267. lusid/models/resource_list_of_block_and_orders.py +113 -0
  268. lusid/models/resource_list_of_get_recipe_composer_response.py +113 -0
  269. lusid/models/resource_list_of_moved_order_to_different_block_response.py +113 -0
  270. lusid/models/resource_list_of_queryable_key.py +113 -0
  271. lusid/models/schedule.py +6 -5
  272. lusid/models/schedule_type.py +1 -0
  273. lusid/models/script_map_reference.py +94 -0
  274. lusid/models/security_election.py +86 -0
  275. lusid/models/set_share_class_instruments_request.py +79 -0
  276. lusid/models/side_definition.py +1 -8
  277. lusid/models/sides_definition_request.py +1 -8
  278. lusid/models/simple_cash_flow_loan.py +3 -3
  279. lusid/models/simple_instrument.py +3 -3
  280. lusid/models/staging_rule.py +90 -0
  281. lusid/models/staging_rule_approval_criteria.py +81 -0
  282. lusid/models/staging_rule_match_criteria.py +95 -0
  283. lusid/models/staging_rule_set.py +103 -0
  284. lusid/models/step_schedule.py +3 -3
  285. lusid/models/stock_split_event.py +3 -3
  286. lusid/models/string_compliance_parameter.py +3 -3
  287. lusid/models/string_list_compliance_parameter.py +3 -3
  288. lusid/models/template_field.py +77 -0
  289. lusid/models/term_deposit.py +3 -3
  290. lusid/models/total_return_swap.py +16 -16
  291. lusid/models/transaction_configuration_movement_data.py +3 -3
  292. lusid/models/transaction_configuration_movement_data_request.py +3 -3
  293. lusid/models/transaction_currency_and_amount.py +81 -0
  294. lusid/models/transaction_field_map.py +97 -0
  295. lusid/models/transaction_price.py +3 -3
  296. lusid/models/transaction_price_and_type.py +81 -0
  297. lusid/models/transaction_price_type.py +1 -0
  298. lusid/models/transaction_property_map.py +80 -0
  299. lusid/models/transaction_template.py +100 -0
  300. lusid/models/transaction_template_request.py +79 -0
  301. lusid/models/transaction_template_specification.py +99 -0
  302. lusid/models/transaction_type_alias.py +0 -7
  303. lusid/models/transaction_type_calculation.py +1 -1
  304. lusid/models/transition_event.py +3 -3
  305. lusid/models/translation_context.py +75 -0
  306. lusid/models/translation_script.py +9 -3
  307. lusid/models/trial_balance.py +46 -11
  308. lusid/models/trial_balance_query_parameters.py +15 -6
  309. lusid/models/trigger_event.py +3 -3
  310. lusid/models/units_ratio.py +71 -0
  311. lusid/models/update_staging_rule_set_request.py +91 -0
  312. lusid/models/{compliance_run_summary.py → upsert_compliance_run_summary_result.py} +8 -8
  313. lusid/models/upsert_dialect_request.py +79 -0
  314. lusid/models/upsert_instrument_event_request.py +12 -3
  315. lusid/models/upsert_quote_request.py +1 -1
  316. lusid/models/upsert_recipe_composer_request.py +73 -0
  317. lusid/models/upsert_recipe_request.py +3 -9
  318. lusid/models/upsert_translation_script_request.py +75 -0
  319. lusid/models/valuation_schedule.py +10 -3
  320. lusid/models/weighted_instrument.py +13 -2
  321. lusid/models/weighted_instrument_in_line_lookup_identifiers.py +89 -0
  322. lusid/models/yield_curve_data.py +3 -3
  323. lusid/rest.py +1 -1
  324. {lusid_sdk-2.0.50b0.dist-info → lusid_sdk-2.0.470.dist-info}/METADATA +245 -48
  325. {lusid_sdk-2.0.50b0.dist-info → lusid_sdk-2.0.470.dist-info}/RECORD +326 -235
  326. {lusid_sdk-2.0.50b0.dist-info → lusid_sdk-2.0.470.dist-info}/WHEEL +1 -1
  327. lusid/extensions/api_client_builder.py +0 -138
  328. lusid/models/configuration_recipe_snippet.py +0 -139
  329. lusid/models/je_lines_query_parameters.py +0 -105
  330. lusid/models/look_up_pricing_model_options.py +0 -93
  331. lusid/models/reconciliation_run_id.py +0 -85
  332. lusid/models/upsert_reconciliation_break_request.py +0 -98
@@ -0,0 +1,91 @@
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
+ from datetime import datetime
21
+ from typing import Any, Dict
22
+ from pydantic import Field, StrictStr, validator
23
+ from lusid.models.instrument_event import InstrumentEvent
24
+
25
+ class ExpiryEvent(InstrumentEvent):
26
+ """
27
+ Definition of an Expiry Event This is an event that describes the expiry of the instrument. # noqa: E501
28
+ """
29
+ expiry_date: datetime = Field(..., alias="expiryDate", description="Expiry date of the instrument")
30
+ instrument_event_type: StrictStr = Field(..., alias="instrumentEventType", description="The Type of Event. The available values are: TransitionEvent, InformationalEvent, OpenEvent, CloseEvent, StockSplitEvent, BondDefaultEvent, CashDividendEvent, AmortisationEvent, CashFlowEvent, ExerciseEvent, ResetEvent, TriggerEvent, RawVendorEvent, InformationalErrorEvent, BondCouponEvent, DividendReinvestmentEvent, AccumulationEvent, BondPrincipalEvent, DividendOptionEvent, MaturityEvent, FxForwardSettlementEvent, ExpiryEvent")
31
+ additional_properties: Dict[str, Any] = {}
32
+ __properties = ["instrumentEventType", "expiryDate"]
33
+
34
+ @validator('instrument_event_type')
35
+ def instrument_event_type_validate_enum(cls, value):
36
+ """Validates the enum"""
37
+ if value not in ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent'):
38
+ raise ValueError("must be one of enum values ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent')")
39
+ return value
40
+
41
+ class Config:
42
+ """Pydantic configuration"""
43
+ allow_population_by_field_name = True
44
+ validate_assignment = True
45
+
46
+ def to_str(self) -> str:
47
+ """Returns the string representation of the model using alias"""
48
+ return pprint.pformat(self.dict(by_alias=True))
49
+
50
+ def to_json(self) -> str:
51
+ """Returns the JSON representation of the model using alias"""
52
+ return json.dumps(self.to_dict())
53
+
54
+ @classmethod
55
+ def from_json(cls, json_str: str) -> ExpiryEvent:
56
+ """Create an instance of ExpiryEvent from a JSON string"""
57
+ return cls.from_dict(json.loads(json_str))
58
+
59
+ def to_dict(self):
60
+ """Returns the dictionary representation of the model using alias"""
61
+ _dict = self.dict(by_alias=True,
62
+ exclude={
63
+ "additional_properties"
64
+ },
65
+ exclude_none=True)
66
+ # puts key-value pairs in additional_properties in the top level
67
+ if self.additional_properties is not None:
68
+ for _key, _value in self.additional_properties.items():
69
+ _dict[_key] = _value
70
+
71
+ return _dict
72
+
73
+ @classmethod
74
+ def from_dict(cls, obj: dict) -> ExpiryEvent:
75
+ """Create an instance of ExpiryEvent from a dict"""
76
+ if obj is None:
77
+ return None
78
+
79
+ if not isinstance(obj, dict):
80
+ return ExpiryEvent.parse_obj(obj)
81
+
82
+ _obj = ExpiryEvent.parse_obj({
83
+ "instrument_event_type": obj.get("instrumentEventType"),
84
+ "expiry_date": obj.get("expiryDate")
85
+ })
86
+ # store additional fields in additional_properties
87
+ for _key in obj.keys():
88
+ if _key not in cls.__properties:
89
+ _obj.additional_properties[_key] = obj.get(_key)
90
+
91
+ return _obj
@@ -0,0 +1,91 @@
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 import Field, StrictStr, constr, validator
23
+ from lusid.models.compliance_parameter import ComplianceParameter
24
+
25
+ class FilterPredicateComplianceParameter(ComplianceParameter):
26
+ """
27
+ FilterPredicateComplianceParameter
28
+ """
29
+ value: constr(strict=True, min_length=1) = Field(...)
30
+ compliance_parameter_type: StrictStr = Field(..., alias="complianceParameterType", description="The parameter type. The available values are: BoolComplianceParameter, StringComplianceParameter, DecimalComplianceParameter, DateTimeComplianceParameter, PropertyKeyComplianceParameter, AddressKeyComplianceParameter, PortfolioIdComplianceParameter, PortfolioGroupIdComplianceParameter, StringListComplianceParameter, BoolListComplianceParameter, DateTimeListComplianceParameter, DecimalListComplianceParameter, PropertyKeyListComplianceParameter, AddressKeyListComplianceParameter, PortfolioIdListComplianceParameter, PortfolioGroupIdListComplianceParameter, InstrumentListComplianceParameter, FilterPredicateComplianceParameter, GroupFilterPredicateComplianceParameter, GroupBySelectorComplianceParameter")
31
+ additional_properties: Dict[str, Any] = {}
32
+ __properties = ["complianceParameterType", "value"]
33
+
34
+ @validator('compliance_parameter_type')
35
+ def compliance_parameter_type_validate_enum(cls, value):
36
+ """Validates the enum"""
37
+ if value not in ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter', 'FilterPredicateComplianceParameter', 'GroupFilterPredicateComplianceParameter', 'GroupBySelectorComplianceParameter'):
38
+ raise ValueError("must be one of enum values ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter', 'FilterPredicateComplianceParameter', 'GroupFilterPredicateComplianceParameter', 'GroupBySelectorComplianceParameter')")
39
+ return value
40
+
41
+ class Config:
42
+ """Pydantic configuration"""
43
+ allow_population_by_field_name = True
44
+ validate_assignment = True
45
+
46
+ def to_str(self) -> str:
47
+ """Returns the string representation of the model using alias"""
48
+ return pprint.pformat(self.dict(by_alias=True))
49
+
50
+ def to_json(self) -> str:
51
+ """Returns the JSON representation of the model using alias"""
52
+ return json.dumps(self.to_dict())
53
+
54
+ @classmethod
55
+ def from_json(cls, json_str: str) -> FilterPredicateComplianceParameter:
56
+ """Create an instance of FilterPredicateComplianceParameter from a JSON string"""
57
+ return cls.from_dict(json.loads(json_str))
58
+
59
+ def to_dict(self):
60
+ """Returns the dictionary representation of the model using alias"""
61
+ _dict = self.dict(by_alias=True,
62
+ exclude={
63
+ "additional_properties"
64
+ },
65
+ exclude_none=True)
66
+ # puts key-value pairs in additional_properties in the top level
67
+ if self.additional_properties is not None:
68
+ for _key, _value in self.additional_properties.items():
69
+ _dict[_key] = _value
70
+
71
+ return _dict
72
+
73
+ @classmethod
74
+ def from_dict(cls, obj: dict) -> FilterPredicateComplianceParameter:
75
+ """Create an instance of FilterPredicateComplianceParameter from a dict"""
76
+ if obj is None:
77
+ return None
78
+
79
+ if not isinstance(obj, dict):
80
+ return FilterPredicateComplianceParameter.parse_obj(obj)
81
+
82
+ _obj = FilterPredicateComplianceParameter.parse_obj({
83
+ "compliance_parameter_type": obj.get("complianceParameterType"),
84
+ "value": obj.get("value")
85
+ })
86
+ # store additional fields in additional_properties
87
+ for _key in obj.keys():
88
+ if _key not in cls.__properties:
89
+ _obj.additional_properties[_key] = obj.get(_key)
90
+
91
+ return _obj
@@ -0,0 +1,101 @@
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, List
22
+ from pydantic import Field, StrictStr, conlist, constr, validator
23
+ from lusid.models.compliance_step import ComplianceStep
24
+ from lusid.models.compliance_template_parameter import ComplianceTemplateParameter
25
+
26
+ class FilterStep(ComplianceStep):
27
+ """
28
+ FilterStep
29
+ """
30
+ label: constr(strict=True, min_length=1) = Field(..., description="The label of the compliance step")
31
+ parameters: conlist(ComplianceTemplateParameter) = Field(..., description="Parameters required for the step")
32
+ compliance_step_type: StrictStr = Field(..., alias="complianceStepType", description=". The available values are: FilterStep, GroupByStep, GroupFilterStep, BranchStep, RecombineStep, CheckStep")
33
+ additional_properties: Dict[str, Any] = {}
34
+ __properties = ["complianceStepType", "label", "parameters"]
35
+
36
+ @validator('compliance_step_type')
37
+ def compliance_step_type_validate_enum(cls, value):
38
+ """Validates the enum"""
39
+ if value not in ('FilterStep', 'GroupByStep', 'GroupFilterStep', 'BranchStep', 'RecombineStep', 'CheckStep'):
40
+ raise ValueError("must be one of enum values ('FilterStep', 'GroupByStep', 'GroupFilterStep', 'BranchStep', 'RecombineStep', 'CheckStep')")
41
+ return value
42
+
43
+ class Config:
44
+ """Pydantic configuration"""
45
+ allow_population_by_field_name = True
46
+ validate_assignment = True
47
+
48
+ def to_str(self) -> str:
49
+ """Returns the string representation of the model using alias"""
50
+ return pprint.pformat(self.dict(by_alias=True))
51
+
52
+ def to_json(self) -> str:
53
+ """Returns the JSON representation of the model using alias"""
54
+ return json.dumps(self.to_dict())
55
+
56
+ @classmethod
57
+ def from_json(cls, json_str: str) -> FilterStep:
58
+ """Create an instance of FilterStep from a JSON string"""
59
+ return cls.from_dict(json.loads(json_str))
60
+
61
+ def to_dict(self):
62
+ """Returns the dictionary representation of the model using alias"""
63
+ _dict = self.dict(by_alias=True,
64
+ exclude={
65
+ "additional_properties"
66
+ },
67
+ exclude_none=True)
68
+ # override the default output from pydantic by calling `to_dict()` of each item in parameters (list)
69
+ _items = []
70
+ if self.parameters:
71
+ for _item in self.parameters:
72
+ if _item:
73
+ _items.append(_item.to_dict())
74
+ _dict['parameters'] = _items
75
+ # puts key-value pairs in additional_properties in the top level
76
+ if self.additional_properties is not None:
77
+ for _key, _value in self.additional_properties.items():
78
+ _dict[_key] = _value
79
+
80
+ return _dict
81
+
82
+ @classmethod
83
+ def from_dict(cls, obj: dict) -> FilterStep:
84
+ """Create an instance of FilterStep from a dict"""
85
+ if obj is None:
86
+ return None
87
+
88
+ if not isinstance(obj, dict):
89
+ return FilterStep.parse_obj(obj)
90
+
91
+ _obj = FilterStep.parse_obj({
92
+ "compliance_step_type": obj.get("complianceStepType"),
93
+ "label": obj.get("label"),
94
+ "parameters": [ComplianceTemplateParameter.from_dict(_item) for _item in obj.get("parameters")] if obj.get("parameters") is not None else None
95
+ })
96
+ # store additional fields in additional_properties
97
+ for _key in obj.keys():
98
+ if _key not in cls.__properties:
99
+ _obj.additional_properties[_key] = obj.get(_key)
100
+
101
+ return _obj
lusid/models/fixed_leg.py CHANGED
@@ -33,15 +33,15 @@ class FixedLeg(InstrumentLeg):
33
33
  leg_definition: LegDefinition = Field(..., alias="legDefinition")
34
34
  notional: Union[StrictFloat, StrictInt] = Field(...)
35
35
  overrides: Optional[FixedLegAllOfOverrides] = None
36
- instrument_type: StrictStr = Field(..., alias="instrumentType", description="The available values are: QuotedSecurity, InterestRateSwap, FxForward, Future, ExoticInstrument, FxOption, CreditDefaultSwap, InterestRateSwaption, Bond, EquityOption, FixedLeg, FloatingLeg, BespokeCashFlowsLeg, Unknown, TermDeposit, ContractForDifference, EquitySwap, CashPerpetual, CapFloor, CashSettled, CdsIndex, Basket, FundingLeg, FxSwap, ForwardRateAgreement, SimpleInstrument, Repo, Equity, ExchangeTradedOption, ReferenceInstrument, ComplexBond, InflationLinkedBond, InflationSwap, SimpleCashFlowLoan, TotalReturnSwap, InflationLeg")
36
+ instrument_type: StrictStr = Field(..., alias="instrumentType", description="The available values are: QuotedSecurity, InterestRateSwap, FxForward, Future, ExoticInstrument, FxOption, CreditDefaultSwap, InterestRateSwaption, Bond, EquityOption, FixedLeg, FloatingLeg, BespokeCashFlowsLeg, Unknown, TermDeposit, ContractForDifference, EquitySwap, CashPerpetual, CapFloor, CashSettled, CdsIndex, Basket, FundingLeg, FxSwap, ForwardRateAgreement, SimpleInstrument, Repo, Equity, ExchangeTradedOption, ReferenceInstrument, ComplexBond, InflationLinkedBond, InflationSwap, SimpleCashFlowLoan, TotalReturnSwap, InflationLeg, FundShareClass, FlexibleLoan")
37
37
  additional_properties: Dict[str, Any] = {}
38
38
  __properties = ["instrumentType", "startDate", "maturityDate", "legDefinition", "notional", "overrides"]
39
39
 
40
40
  @validator('instrument_type')
41
41
  def instrument_type_validate_enum(cls, value):
42
42
  """Validates the enum"""
43
- if value not in ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg'):
44
- raise ValueError("must be one of enum values ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg')")
43
+ if value not in ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg', 'FundShareClass', 'FlexibleLoan'):
44
+ raise ValueError("must be one of enum values ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg', 'FundShareClass', 'FlexibleLoan')")
45
45
  return value
46
46
 
47
47
  class Config:
@@ -36,18 +36,18 @@ class FixedSchedule(Schedule):
36
36
  convention_name: Optional[FlowConventionName] = Field(None, alias="conventionName")
37
37
  ex_dividend_days: Optional[StrictInt] = Field(None, alias="exDividendDays", description="Optional. Number of calendar days in the ex-dividend period. If the settlement date falls in the ex-dividend period then the coupon paid is zero and the accrued interest is negative. If set, this must be a non-negative number. If not set, or set to 0, then there is no ex-dividend period. NOTE: This field is deprecated. If you wish to set the ExDividendDays on a bond, please use the ExDividendConfiguration.")
38
38
  notional: Optional[Union[StrictFloat, StrictInt]] = Field(None, description="Scaling factor, the quantity outstanding on which the rate will be paid.")
39
- payment_currency: Optional[StrictStr] = Field(None, alias="paymentCurrency", description="Payment currency. This does not have to be the same as the nominal bond or observation/reset currency.")
39
+ payment_currency: StrictStr = Field(..., alias="paymentCurrency", description="Payment currency. This does not have to be the same as the nominal bond or observation/reset currency.")
40
40
  stub_type: Optional[StrictStr] = Field(None, alias="stubType", description="StubType required of the schedule Supported string (enumeration) values are: [ShortFront, ShortBack, LongBack, LongFront, Both].")
41
41
  ex_dividend_configuration: Optional[ExDividendConfiguration] = Field(None, alias="exDividendConfiguration")
42
- schedule_type: StrictStr = Field(..., alias="scheduleType", description="The available values are: FixedSchedule, FloatSchedule, OptionalitySchedule, StepSchedule, Exercise, FxRateSchedule, Invalid")
42
+ schedule_type: StrictStr = Field(..., alias="scheduleType", description="The available values are: FixedSchedule, FloatSchedule, OptionalitySchedule, StepSchedule, Exercise, FxRateSchedule, FxLinkedNotionalSchedule, Invalid")
43
43
  additional_properties: Dict[str, Any] = {}
44
44
  __properties = ["scheduleType", "startDate", "maturityDate", "flowConventions", "couponRate", "conventionName", "exDividendDays", "notional", "paymentCurrency", "stubType", "exDividendConfiguration"]
45
45
 
46
46
  @validator('schedule_type')
47
47
  def schedule_type_validate_enum(cls, value):
48
48
  """Validates the enum"""
49
- if value not in ('FixedSchedule', 'FloatSchedule', 'OptionalitySchedule', 'StepSchedule', 'Exercise', 'FxRateSchedule', 'Invalid'):
50
- raise ValueError("must be one of enum values ('FixedSchedule', 'FloatSchedule', 'OptionalitySchedule', 'StepSchedule', 'Exercise', 'FxRateSchedule', 'Invalid')")
49
+ if value not in ('FixedSchedule', 'FloatSchedule', 'OptionalitySchedule', 'StepSchedule', 'Exercise', 'FxRateSchedule', 'FxLinkedNotionalSchedule', 'Invalid'):
50
+ raise ValueError("must be one of enum values ('FixedSchedule', 'FloatSchedule', 'OptionalitySchedule', 'StepSchedule', 'Exercise', 'FxRateSchedule', 'FxLinkedNotionalSchedule', 'Invalid')")
51
51
  return value
52
52
 
53
53
  class Config:
@@ -94,11 +94,6 @@ class FixedSchedule(Schedule):
94
94
  if self.ex_dividend_days is None and "ex_dividend_days" in self.__fields_set__:
95
95
  _dict['exDividendDays'] = None
96
96
 
97
- # set to None if payment_currency (nullable) is None
98
- # and __fields_set__ contains the field
99
- if self.payment_currency is None and "payment_currency" in self.__fields_set__:
100
- _dict['paymentCurrency'] = None
101
-
102
97
  # set to None if stub_type (nullable) is None
103
98
  # and __fields_set__ contains the field
104
99
  if self.stub_type is None and "stub_type" in self.__fields_set__:
@@ -0,0 +1,105 @@
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
+ from datetime import datetime
21
+ from typing import Any, Dict, List
22
+ from pydantic import Field, StrictStr, conlist, validator
23
+ from lusid.models.lusid_instrument import LusidInstrument
24
+ from lusid.models.schedule import Schedule
25
+
26
+ class FlexibleLoan(LusidInstrument):
27
+ """
28
+ LUSID flexible loan instrument. Represents the basic building block of a more complex loan structure that can handle deferred interest payments. # noqa: E501
29
+ """
30
+ start_date: datetime = Field(..., alias="startDate", description="The start date of the instrument. This is normally synonymous with the trade-date.")
31
+ maturity_date: datetime = Field(..., alias="maturityDate", description="The final maturity date of the instrument. This means the last date on which the instruments makes a payment of any amount. For the avoidance of doubt, that is not necessarily prior to its last sensitivity date for the purposes of risk; e.g. instruments such as Constant Maturity Swaps (CMS) often have sensitivities to rates that may well be observed or set prior to the maturity date, but refer to a termination date beyond it.")
32
+ dom_ccy: StrictStr = Field(..., alias="domCcy", description="The domestic currency of the instrument.")
33
+ schedules: conlist(Schedule) = Field(..., description="Repayment schedules for the loan.")
34
+ instrument_type: StrictStr = Field(..., alias="instrumentType", description="The available values are: QuotedSecurity, InterestRateSwap, FxForward, Future, ExoticInstrument, FxOption, CreditDefaultSwap, InterestRateSwaption, Bond, EquityOption, FixedLeg, FloatingLeg, BespokeCashFlowsLeg, Unknown, TermDeposit, ContractForDifference, EquitySwap, CashPerpetual, CapFloor, CashSettled, CdsIndex, Basket, FundingLeg, FxSwap, ForwardRateAgreement, SimpleInstrument, Repo, Equity, ExchangeTradedOption, ReferenceInstrument, ComplexBond, InflationLinkedBond, InflationSwap, SimpleCashFlowLoan, TotalReturnSwap, InflationLeg, FundShareClass, FlexibleLoan")
35
+ additional_properties: Dict[str, Any] = {}
36
+ __properties = ["instrumentType", "startDate", "maturityDate", "domCcy", "schedules"]
37
+
38
+ @validator('instrument_type')
39
+ def instrument_type_validate_enum(cls, value):
40
+ """Validates the enum"""
41
+ if value not in ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg', 'FundShareClass', 'FlexibleLoan'):
42
+ raise ValueError("must be one of enum values ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg', 'FundShareClass', 'FlexibleLoan')")
43
+ return value
44
+
45
+ class Config:
46
+ """Pydantic configuration"""
47
+ allow_population_by_field_name = True
48
+ validate_assignment = True
49
+
50
+ def to_str(self) -> str:
51
+ """Returns the string representation of the model using alias"""
52
+ return pprint.pformat(self.dict(by_alias=True))
53
+
54
+ def to_json(self) -> str:
55
+ """Returns the JSON representation of the model using alias"""
56
+ return json.dumps(self.to_dict())
57
+
58
+ @classmethod
59
+ def from_json(cls, json_str: str) -> FlexibleLoan:
60
+ """Create an instance of FlexibleLoan from a JSON string"""
61
+ return cls.from_dict(json.loads(json_str))
62
+
63
+ def to_dict(self):
64
+ """Returns the dictionary representation of the model using alias"""
65
+ _dict = self.dict(by_alias=True,
66
+ exclude={
67
+ "additional_properties"
68
+ },
69
+ exclude_none=True)
70
+ # override the default output from pydantic by calling `to_dict()` of each item in schedules (list)
71
+ _items = []
72
+ if self.schedules:
73
+ for _item in self.schedules:
74
+ if _item:
75
+ _items.append(_item.to_dict())
76
+ _dict['schedules'] = _items
77
+ # puts key-value pairs in additional_properties in the top level
78
+ if self.additional_properties is not None:
79
+ for _key, _value in self.additional_properties.items():
80
+ _dict[_key] = _value
81
+
82
+ return _dict
83
+
84
+ @classmethod
85
+ def from_dict(cls, obj: dict) -> FlexibleLoan:
86
+ """Create an instance of FlexibleLoan from a dict"""
87
+ if obj is None:
88
+ return None
89
+
90
+ if not isinstance(obj, dict):
91
+ return FlexibleLoan.parse_obj(obj)
92
+
93
+ _obj = FlexibleLoan.parse_obj({
94
+ "instrument_type": obj.get("instrumentType"),
95
+ "start_date": obj.get("startDate"),
96
+ "maturity_date": obj.get("maturityDate"),
97
+ "dom_ccy": obj.get("domCcy"),
98
+ "schedules": [Schedule.from_dict(_item) for _item in obj.get("schedules")] if obj.get("schedules") is not None else None
99
+ })
100
+ # store additional fields in additional_properties
101
+ for _key in obj.keys():
102
+ if _key not in cls.__properties:
103
+ _obj.additional_properties[_key] = obj.get(_key)
104
+
105
+ return _obj
@@ -19,7 +19,8 @@ import json
19
19
 
20
20
  from datetime import datetime
21
21
  from typing import Any, Dict, Optional, Union
22
- from pydantic import Field, StrictFloat, StrictInt, StrictStr, validator
22
+ from pydantic import Field, StrictFloat, StrictInt, StrictStr, constr, validator
23
+ from lusid.models.compounding import Compounding
23
24
  from lusid.models.ex_dividend_configuration import ExDividendConfiguration
24
25
  from lusid.models.flow_convention_name import FlowConventionName
25
26
  from lusid.models.flow_conventions import FlowConventions
@@ -38,19 +39,21 @@ class FloatSchedule(Schedule):
38
39
  index_convention_name: Optional[FlowConventionName] = Field(None, alias="indexConventionName")
39
40
  index_conventions: Optional[IndexConvention] = Field(None, alias="indexConventions")
40
41
  notional: Optional[Union[StrictFloat, StrictInt]] = Field(None, description="Scaling factor, the quantity outstanding on which the rate will be paid.")
41
- payment_currency: Optional[StrictStr] = Field(None, alias="paymentCurrency", description="Payment currency. This does not have to be the same as the nominal bond or observation/reset currency.")
42
+ payment_currency: StrictStr = Field(..., alias="paymentCurrency", description="Payment currency. This does not have to be the same as the nominal bond or observation/reset currency.")
42
43
  spread: Optional[Union[StrictFloat, StrictInt]] = Field(None, description="Spread over floating rate given as a fraction.")
43
44
  stub_type: Optional[StrictStr] = Field(None, alias="stubType", description="StubType required of the schedule Supported string (enumeration) values are: [ShortFront, ShortBack, LongBack, LongFront, Both].")
44
45
  ex_dividend_configuration: Optional[ExDividendConfiguration] = Field(None, alias="exDividendConfiguration")
45
- schedule_type: StrictStr = Field(..., alias="scheduleType", description="The available values are: FixedSchedule, FloatSchedule, OptionalitySchedule, StepSchedule, Exercise, FxRateSchedule, Invalid")
46
+ compounding: Optional[Compounding] = None
47
+ reset_convention: Optional[constr(strict=True, max_length=16, min_length=0)] = Field(None, alias="resetConvention", description="Control how resets are generated relative to payment convention(s). Supported string (enumeration) values are: [InAdvance, InArrears].")
48
+ schedule_type: StrictStr = Field(..., alias="scheduleType", description="The available values are: FixedSchedule, FloatSchedule, OptionalitySchedule, StepSchedule, Exercise, FxRateSchedule, FxLinkedNotionalSchedule, Invalid")
46
49
  additional_properties: Dict[str, Any] = {}
47
- __properties = ["scheduleType", "startDate", "maturityDate", "flowConventions", "conventionName", "exDividendDays", "indexConventionName", "indexConventions", "notional", "paymentCurrency", "spread", "stubType", "exDividendConfiguration"]
50
+ __properties = ["scheduleType", "startDate", "maturityDate", "flowConventions", "conventionName", "exDividendDays", "indexConventionName", "indexConventions", "notional", "paymentCurrency", "spread", "stubType", "exDividendConfiguration", "compounding", "resetConvention"]
48
51
 
49
52
  @validator('schedule_type')
50
53
  def schedule_type_validate_enum(cls, value):
51
54
  """Validates the enum"""
52
- if value not in ('FixedSchedule', 'FloatSchedule', 'OptionalitySchedule', 'StepSchedule', 'Exercise', 'FxRateSchedule', 'Invalid'):
53
- raise ValueError("must be one of enum values ('FixedSchedule', 'FloatSchedule', 'OptionalitySchedule', 'StepSchedule', 'Exercise', 'FxRateSchedule', 'Invalid')")
55
+ if value not in ('FixedSchedule', 'FloatSchedule', 'OptionalitySchedule', 'StepSchedule', 'Exercise', 'FxRateSchedule', 'FxLinkedNotionalSchedule', 'Invalid'):
56
+ raise ValueError("must be one of enum values ('FixedSchedule', 'FloatSchedule', 'OptionalitySchedule', 'StepSchedule', 'Exercise', 'FxRateSchedule', 'FxLinkedNotionalSchedule', 'Invalid')")
54
57
  return value
55
58
 
56
59
  class Config:
@@ -93,6 +96,9 @@ class FloatSchedule(Schedule):
93
96
  # override the default output from pydantic by calling `to_dict()` of ex_dividend_configuration
94
97
  if self.ex_dividend_configuration:
95
98
  _dict['exDividendConfiguration'] = self.ex_dividend_configuration.to_dict()
99
+ # override the default output from pydantic by calling `to_dict()` of compounding
100
+ if self.compounding:
101
+ _dict['compounding'] = self.compounding.to_dict()
96
102
  # puts key-value pairs in additional_properties in the top level
97
103
  if self.additional_properties is not None:
98
104
  for _key, _value in self.additional_properties.items():
@@ -103,16 +109,16 @@ class FloatSchedule(Schedule):
103
109
  if self.ex_dividend_days is None and "ex_dividend_days" in self.__fields_set__:
104
110
  _dict['exDividendDays'] = None
105
111
 
106
- # set to None if payment_currency (nullable) is None
107
- # and __fields_set__ contains the field
108
- if self.payment_currency is None and "payment_currency" in self.__fields_set__:
109
- _dict['paymentCurrency'] = None
110
-
111
112
  # set to None if stub_type (nullable) is None
112
113
  # and __fields_set__ contains the field
113
114
  if self.stub_type is None and "stub_type" in self.__fields_set__:
114
115
  _dict['stubType'] = None
115
116
 
117
+ # set to None if reset_convention (nullable) is None
118
+ # and __fields_set__ contains the field
119
+ if self.reset_convention is None and "reset_convention" in self.__fields_set__:
120
+ _dict['resetConvention'] = None
121
+
116
122
  return _dict
117
123
 
118
124
  @classmethod
@@ -137,7 +143,9 @@ class FloatSchedule(Schedule):
137
143
  "payment_currency": obj.get("paymentCurrency"),
138
144
  "spread": obj.get("spread"),
139
145
  "stub_type": obj.get("stubType"),
140
- "ex_dividend_configuration": ExDividendConfiguration.from_dict(obj.get("exDividendConfiguration")) if obj.get("exDividendConfiguration") is not None else None
146
+ "ex_dividend_configuration": ExDividendConfiguration.from_dict(obj.get("exDividendConfiguration")) if obj.get("exDividendConfiguration") is not None else None,
147
+ "compounding": Compounding.from_dict(obj.get("compounding")) if obj.get("compounding") is not None else None,
148
+ "reset_convention": obj.get("resetConvention")
141
149
  })
142
150
  # store additional fields in additional_properties
143
151
  for _key in obj.keys():
@@ -35,15 +35,15 @@ class FloatingLeg(InstrumentLeg):
35
35
  overrides: Optional[FixedLegAllOfOverrides] = None
36
36
  cap_rate: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="capRate", description="The maximum floating rate which a cashflow can accrue.")
37
37
  floor_rate: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="floorRate", description="The minimum floating rate which a cashflow can accrue.")
38
- instrument_type: StrictStr = Field(..., alias="instrumentType", description="The available values are: QuotedSecurity, InterestRateSwap, FxForward, Future, ExoticInstrument, FxOption, CreditDefaultSwap, InterestRateSwaption, Bond, EquityOption, FixedLeg, FloatingLeg, BespokeCashFlowsLeg, Unknown, TermDeposit, ContractForDifference, EquitySwap, CashPerpetual, CapFloor, CashSettled, CdsIndex, Basket, FundingLeg, FxSwap, ForwardRateAgreement, SimpleInstrument, Repo, Equity, ExchangeTradedOption, ReferenceInstrument, ComplexBond, InflationLinkedBond, InflationSwap, SimpleCashFlowLoan, TotalReturnSwap, InflationLeg")
38
+ instrument_type: StrictStr = Field(..., alias="instrumentType", description="The available values are: QuotedSecurity, InterestRateSwap, FxForward, Future, ExoticInstrument, FxOption, CreditDefaultSwap, InterestRateSwaption, Bond, EquityOption, FixedLeg, FloatingLeg, BespokeCashFlowsLeg, Unknown, TermDeposit, ContractForDifference, EquitySwap, CashPerpetual, CapFloor, CashSettled, CdsIndex, Basket, FundingLeg, FxSwap, ForwardRateAgreement, SimpleInstrument, Repo, Equity, ExchangeTradedOption, ReferenceInstrument, ComplexBond, InflationLinkedBond, InflationSwap, SimpleCashFlowLoan, TotalReturnSwap, InflationLeg, FundShareClass, FlexibleLoan")
39
39
  additional_properties: Dict[str, Any] = {}
40
40
  __properties = ["instrumentType", "startDate", "maturityDate", "legDefinition", "notional", "overrides", "capRate", "floorRate"]
41
41
 
42
42
  @validator('instrument_type')
43
43
  def instrument_type_validate_enum(cls, value):
44
44
  """Validates the enum"""
45
- if value not in ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg'):
46
- raise ValueError("must be one of enum values ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg')")
45
+ if value not in ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg', 'FundShareClass', 'FlexibleLoan'):
46
+ raise ValueError("must be one of enum values ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg', 'FundShareClass', 'FlexibleLoan')")
47
47
  return value
48
48
 
49
49
  class Config:
@@ -27,7 +27,7 @@ class FlowConventionName(BaseModel):
27
27
  """
28
28
  currency: StrictStr = Field(..., description="Currency of the flow convention name.")
29
29
  index_name: Optional[StrictStr] = Field(None, alias="indexName", description="The index, if present, that is required. e.g. \"IBOR\", \"OIS\" or \"SONIA\".")
30
- tenor: constr(strict=True, min_length=1) = Field(..., description="Tenor for the convention name.")
30
+ tenor: constr(strict=True, min_length=1) = Field(..., description="Tenor for the convention name. For more information on tenors, see [knowledge base article KA-02097](https://support.lusid.com/knowledgebase/article/KA-02097)")
31
31
  __properties = ["currency", "indexName", "tenor"]
32
32
 
33
33
  class Config:
@@ -26,7 +26,7 @@ class FlowConventions(BaseModel):
26
26
  A flow convention defines the specification for generation of the date schedule for a leg or set of cashflows. It determines the tenor of these and, how to map the unadjusted set of dates to dates which are 'good business days'. For example, if an unadjusted date falls on a Saturday or a bank holiday, should it be rolled forward or backward to obtain the adjusted date. For more information, see https://support.lusid.com/knowledgebase/article/KA-02055/ # noqa: E501
27
27
  """
28
28
  currency: StrictStr = Field(..., description="Currency of the flow convention.")
29
- payment_frequency: constr(strict=True, max_length=50, min_length=0) = Field(..., alias="paymentFrequency", description="When generating a multiperiod flow, or when the maturity of the flow is not given but the start date is, the tenor is the time-step from the anchor-date to the nominal maturity of the flow prior to any adjustment.")
29
+ payment_frequency: constr(strict=True, max_length=50, min_length=0) = Field(..., alias="paymentFrequency", description="When generating a multiperiod flow, or when the maturity of the flow is not given but the start date is, the tenor is the time-step from the anchor-date to the nominal maturity of the flow prior to any adjustment. For more information on tenors, see [knowledge base article KA-02097](https://support.lusid.com/knowledgebase/article/KA-02097)")
30
30
  day_count_convention: constr(strict=True, max_length=50, min_length=0) = Field(..., alias="dayCountConvention", description="when calculating the fraction of a year between two dates, what convention is used to represent the number of days in a year and difference between them. For more information on day counts, see [knowledge base article KA-01798](https://support.lusid.com/knowledgebase/article/KA-01798) Supported string (enumeration) values are: [Actual360, Act360, MoneyMarket, Actual365, Act365, Thirty360, ThirtyU360, Bond, ThirtyE360, EuroBond, ActualActual, ActAct, ActActIsda, ActActIsma, ActActIcma, OneOne, Act364, Act365F, Act365L, Act365_25, Act252, Bus252, NL360, NL365, ActActAFB, Act365Cad, ThirtyActIsda, Thirty365Isda, ThirtyEActIsda, ThirtyE360Isda, ThirtyE365Isda, ThirtyU360EOM].")
31
31
  roll_convention: constr(strict=True, max_length=50, min_length=0) = Field(..., alias="rollConvention", description="For backward compatibility, this can either specify a business day convention or a roll convention. If the business day convention is provided using the BusinessDayConvention property, this must be a valid roll convention. When used as a roll convention: The conventions specifying the rule used to generate dates in a schedule. Supported string (enumeration) values are: [None, EndOfMonth, IMM, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]. When in backward compatible mode: Supported string (enumeration) values are: [NoAdjustment, None, Previous, P, Following, F, ModifiedPrevious, MP, ModifiedFollowing, MF, HalfMonthModifiedFollowing].")
32
32
  payment_calendars: conlist(StrictStr) = Field(..., alias="paymentCalendars", description="An array of strings denoting holiday calendars that apply to generation of payment schedules.")
@@ -34,15 +34,15 @@ class ForwardRateAgreement(LusidInstrument):
34
34
  fra_rate: Union[StrictFloat, StrictInt] = Field(..., alias="fraRate", description="The rate at which the FRA is traded.")
35
35
  notional: Union[StrictFloat, StrictInt] = Field(..., description="The amount for which the FRA is traded.")
36
36
  index_convention: Optional[IndexConvention] = Field(None, alias="indexConvention")
37
- instrument_type: StrictStr = Field(..., alias="instrumentType", description="The available values are: QuotedSecurity, InterestRateSwap, FxForward, Future, ExoticInstrument, FxOption, CreditDefaultSwap, InterestRateSwaption, Bond, EquityOption, FixedLeg, FloatingLeg, BespokeCashFlowsLeg, Unknown, TermDeposit, ContractForDifference, EquitySwap, CashPerpetual, CapFloor, CashSettled, CdsIndex, Basket, FundingLeg, FxSwap, ForwardRateAgreement, SimpleInstrument, Repo, Equity, ExchangeTradedOption, ReferenceInstrument, ComplexBond, InflationLinkedBond, InflationSwap, SimpleCashFlowLoan, TotalReturnSwap, InflationLeg")
37
+ instrument_type: StrictStr = Field(..., alias="instrumentType", description="The available values are: QuotedSecurity, InterestRateSwap, FxForward, Future, ExoticInstrument, FxOption, CreditDefaultSwap, InterestRateSwaption, Bond, EquityOption, FixedLeg, FloatingLeg, BespokeCashFlowsLeg, Unknown, TermDeposit, ContractForDifference, EquitySwap, CashPerpetual, CapFloor, CashSettled, CdsIndex, Basket, FundingLeg, FxSwap, ForwardRateAgreement, SimpleInstrument, Repo, Equity, ExchangeTradedOption, ReferenceInstrument, ComplexBond, InflationLinkedBond, InflationSwap, SimpleCashFlowLoan, TotalReturnSwap, InflationLeg, FundShareClass, FlexibleLoan")
38
38
  additional_properties: Dict[str, Any] = {}
39
39
  __properties = ["instrumentType", "startDate", "maturityDate", "domCcy", "fixingDate", "fraRate", "notional", "indexConvention"]
40
40
 
41
41
  @validator('instrument_type')
42
42
  def instrument_type_validate_enum(cls, value):
43
43
  """Validates the enum"""
44
- if value not in ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg'):
45
- raise ValueError("must be one of enum values ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg')")
44
+ if value not in ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg', 'FundShareClass', 'FlexibleLoan'):
45
+ raise ValueError("must be one of enum values ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg', 'FundShareClass', 'FlexibleLoan')")
46
46
  return value
47
47
 
48
48
  class Config: