hydrogen-proton-api 1.9.1

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 (217) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +7 -0
  3. data/README.md +82 -0
  4. data/Rakefile +8 -0
  5. data/git_push.sh +55 -0
  6. data/lib/proton_api.rb +141 -0
  7. data/lib/proton_api/api/annuities_api.rb +347 -0
  8. data/lib/proton_api/api/business_financial_management_api.rb +293 -0
  9. data/lib/proton_api/api/cards_api.rb +185 -0
  10. data/lib/proton_api/api/financial_health_api.rb +239 -0
  11. data/lib/proton_api/api/financial_planning_api.rb +671 -0
  12. data/lib/proton_api/api/goals_api.rb +347 -0
  13. data/lib/proton_api/api/life_insurance_api.rb +77 -0
  14. data/lib/proton_api/api/personal_financial_management_api.rb +347 -0
  15. data/lib/proton_api/api/portfolio_construction_api.rb +77 -0
  16. data/lib/proton_api/api/portfolio_management_api.rb +77 -0
  17. data/lib/proton_api/api/risk_scoring_api.rb +185 -0
  18. data/lib/proton_api/api/simulations_api.rb +401 -0
  19. data/lib/proton_api/api/util_api.rb +185 -0
  20. data/lib/proton_api/api_client.rb +391 -0
  21. data/lib/proton_api/api_error.rb +38 -0
  22. data/lib/proton_api/auth_configuration.rb +181 -0
  23. data/lib/proton_api/configuration.rb +209 -0
  24. data/lib/proton_api/environment.rb +36 -0
  25. data/lib/proton_api/models/accumulation_goal_deposit_config.rb +338 -0
  26. data/lib/proton_api/models/annuity_calculator_accumulation_horizon_request.rb +459 -0
  27. data/lib/proton_api/models/annuity_calculator_annuity_amount_request.rb +461 -0
  28. data/lib/proton_api/models/annuity_calculator_decumulation_horizon_request.rb +459 -0
  29. data/lib/proton_api/models/annuity_calculator_deposit_amount_request.rb +468 -0
  30. data/lib/proton_api/models/annuity_calculator_initial_balance_request.rb +468 -0
  31. data/lib/proton_api/models/annuity_deposit_schedule.rb +254 -0
  32. data/lib/proton_api/models/answer.rb +186 -0
  33. data/lib/proton_api/models/backtest_request.rb +295 -0
  34. data/lib/proton_api/models/beneficiary_bequest_config.rb +257 -0
  35. data/lib/proton_api/models/budget_aggregation_account.rb +186 -0
  36. data/lib/proton_api/models/budget_calculator_request.rb +334 -0
  37. data/lib/proton_api/models/budget_component.rb +228 -0
  38. data/lib/proton_api/models/budget_details.rb +337 -0
  39. data/lib/proton_api/models/business_financial_health_check_request.rb +484 -0
  40. data/lib/proton_api/models/business_invoice_analysis_request.rb +361 -0
  41. data/lib/proton_api/models/calculator_deposit_schedule.rb +228 -0
  42. data/lib/proton_api/models/calculator_deposit_schedule1.rb +254 -0
  43. data/lib/proton_api/models/card_analysis_request.rb +372 -0
  44. data/lib/proton_api/models/card_limit_check_request.rb +231 -0
  45. data/lib/proton_api/models/card_transaction_authorization_request.rb +422 -0
  46. data/lib/proton_api/models/cash_analysis_request.rb +340 -0
  47. data/lib/proton_api/models/cash_flow_analysis_request.rb +366 -0
  48. data/lib/proton_api/models/children_education_config.rb +221 -0
  49. data/lib/proton_api/models/customer_analysis_request.rb +292 -0
  50. data/lib/proton_api/models/decision_tree_result_request.rb +236 -0
  51. data/lib/proton_api/models/decumulation_goal_deposit_config.rb +335 -0
  52. data/lib/proton_api/models/dimensional_risk_score_request.rb +282 -0
  53. data/lib/proton_api/models/diversification_score_request.rb +324 -0
  54. data/lib/proton_api/models/education_calculator_annual_cost_request.rb +450 -0
  55. data/lib/proton_api/models/education_calculator_deposit_amount_request.rb +483 -0
  56. data/lib/proton_api/models/education_calculator_percent_covered_request.rb +448 -0
  57. data/lib/proton_api/models/education_config.rb +271 -0
  58. data/lib/proton_api/models/emergency_fund_calculator_request.rb +561 -0
  59. data/lib/proton_api/models/event_study_request.rb +317 -0
  60. data/lib/proton_api/models/fee_analysis_request.rb +239 -0
  61. data/lib/proton_api/models/financial_health_check_request.rb +384 -0
  62. data/lib/proton_api/models/financial_picture_request.rb +270 -0
  63. data/lib/proton_api/models/financial_statement_analysis_request.rb +461 -0
  64. data/lib/proton_api/models/goal_accumulation_allocation_request.rb +729 -0
  65. data/lib/proton_api/models/goal_accumulation_recommendation_request.rb +622 -0
  66. data/lib/proton_api/models/goal_accumulation_status_request.rb +622 -0
  67. data/lib/proton_api/models/goal_config.rb +222 -0
  68. data/lib/proton_api/models/goal_decumulation_allocation_request.rb +764 -0
  69. data/lib/proton_api/models/goal_decumulation_recommendation_request.rb +657 -0
  70. data/lib/proton_api/models/goal_decumulation_status_request.rb +657 -0
  71. data/lib/proton_api/models/goal_withdrawal_config.rb +335 -0
  72. data/lib/proton_api/models/guaranteed_rate_benefit.rb +272 -0
  73. data/lib/proton_api/models/income_config.rb +266 -0
  74. data/lib/proton_api/models/life_insurance_needs_calculator_request.rb +515 -0
  75. data/lib/proton_api/models/location.rb +183 -0
  76. data/lib/proton_api/models/monte_carlo_request.rb +504 -0
  77. data/lib/proton_api/models/mortgage_calculator_down_payment_request.rb +299 -0
  78. data/lib/proton_api/models/mortgage_calculator_home_price_request.rb +299 -0
  79. data/lib/proton_api/models/mortgage_calculator_periodic_payment_request.rb +299 -0
  80. data/lib/proton_api/models/mvo_request.rb +366 -0
  81. data/lib/proton_api/models/opt_config.rb +300 -0
  82. data/lib/proton_api/models/opt_config1.rb +260 -0
  83. data/lib/proton_api/models/order_rebalance_request.rb +398 -0
  84. data/lib/proton_api/models/performance_calculator_request.rb +687 -0
  85. data/lib/proton_api/models/periods.rb +220 -0
  86. data/lib/proton_api/models/portfolio_optimization_score_request.rb +356 -0
  87. data/lib/proton_api/models/portfolio_what_if_request.rb +351 -0
  88. data/lib/proton_api/models/purchase_calculator_amount_request.rb +401 -0
  89. data/lib/proton_api/models/purchase_calculator_deposit_amount_request.rb +434 -0
  90. data/lib/proton_api/models/purchase_calculator_horizon_request.rb +356 -0
  91. data/lib/proton_api/models/ratio_targets.rb +328 -0
  92. data/lib/proton_api/models/ratio_targets1.rb +328 -0
  93. data/lib/proton_api/models/rebalancing_signal_request.rb +238 -0
  94. data/lib/proton_api/models/recommendation_config.rb +357 -0
  95. data/lib/proton_api/models/recommendation_config1.rb +346 -0
  96. data/lib/proton_api/models/recurring_transaction_analysis_request.rb +400 -0
  97. data/lib/proton_api/models/retirement_calculator_deposit_amount_request.rb +509 -0
  98. data/lib/proton_api/models/retirement_calculator_expenses_request.rb +476 -0
  99. data/lib/proton_api/models/retirement_calculator_percent_covered_request.rb +474 -0
  100. data/lib/proton_api/models/risk_allocation_request.rb +316 -0
  101. data/lib/proton_api/models/risk_score_request.rb +239 -0
  102. data/lib/proton_api/models/savings_calculator_request.rb +395 -0
  103. data/lib/proton_api/models/savings_deposit_schedule.rb +276 -0
  104. data/lib/proton_api/models/scenario_analysis_request.rb +401 -0
  105. data/lib/proton_api/models/sensitivity_analysis_request.rb +399 -0
  106. data/lib/proton_api/models/sensitivity_factor.rb +278 -0
  107. data/lib/proton_api/models/settings.rb +287 -0
  108. data/lib/proton_api/models/spending_analysis_request.rb +505 -0
  109. data/lib/proton_api/models/variable_annuity_request.rb +700 -0
  110. data/lib/proton_api/models/w_config.rb +382 -0
  111. data/lib/proton_api/models/w_config1.rb +347 -0
  112. data/lib/proton_api/version.rb +15 -0
  113. data/proton_api.gemspec +46 -0
  114. data/spec/api/annuities_api_spec.rb +107 -0
  115. data/spec/api/business_financial_management_api_spec.rb +95 -0
  116. data/spec/api/cards_api_spec.rb +71 -0
  117. data/spec/api/financial_health_api_spec.rb +83 -0
  118. data/spec/api/financial_planning_api_spec.rb +179 -0
  119. data/spec/api/goals_api_spec.rb +107 -0
  120. data/spec/api/life_insurance_api_spec.rb +47 -0
  121. data/spec/api/personal_financial_management_api_spec.rb +107 -0
  122. data/spec/api/portfolio_construction_api_spec.rb +47 -0
  123. data/spec/api/portfolio_management_api_spec.rb +47 -0
  124. data/spec/api/risk_scoring_api_spec.rb +71 -0
  125. data/spec/api/simulations_api_spec.rb +119 -0
  126. data/spec/api/util_api_spec.rb +71 -0
  127. data/spec/api_client_spec.rb +243 -0
  128. data/spec/configuration_spec.rb +42 -0
  129. data/spec/models/accumulation_goal_deposit_config_spec.rb +89 -0
  130. data/spec/models/annuity_calculator_accumulation_horizon_request_spec.rb +111 -0
  131. data/spec/models/annuity_calculator_annuity_amount_request_spec.rb +111 -0
  132. data/spec/models/annuity_calculator_decumulation_horizon_request_spec.rb +111 -0
  133. data/spec/models/annuity_calculator_deposit_amount_request_spec.rb +111 -0
  134. data/spec/models/annuity_calculator_initial_balance_request_spec.rb +111 -0
  135. data/spec/models/annuity_deposit_schedule_spec.rb +57 -0
  136. data/spec/models/answer_spec.rb +41 -0
  137. data/spec/models/backtest_request_spec.rb +95 -0
  138. data/spec/models/beneficiary_bequest_config_spec.rb +53 -0
  139. data/spec/models/budget_aggregation_account_spec.rb +41 -0
  140. data/spec/models/budget_calculator_request_spec.rb +105 -0
  141. data/spec/models/budget_component_spec.rb +53 -0
  142. data/spec/models/budget_details_spec.rb +99 -0
  143. data/spec/models/business_financial_health_check_request_spec.rb +143 -0
  144. data/spec/models/business_invoice_analysis_request_spec.rb +123 -0
  145. data/spec/models/calculator_deposit_schedule1_spec.rb +57 -0
  146. data/spec/models/calculator_deposit_schedule_spec.rb +51 -0
  147. data/spec/models/card_analysis_request_spec.rb +129 -0
  148. data/spec/models/card_limit_check_request_spec.rb +65 -0
  149. data/spec/models/card_transaction_authorization_request_spec.rb +157 -0
  150. data/spec/models/cash_analysis_request_spec.rb +115 -0
  151. data/spec/models/cash_flow_analysis_request_spec.rb +135 -0
  152. data/spec/models/children_education_config_spec.rb +47 -0
  153. data/spec/models/customer_analysis_request_spec.rb +101 -0
  154. data/spec/models/decision_tree_result_request_spec.rb +51 -0
  155. data/spec/models/decumulation_goal_deposit_config_spec.rb +89 -0
  156. data/spec/models/dimensional_risk_score_request_spec.rb +89 -0
  157. data/spec/models/diversification_score_request_spec.rb +111 -0
  158. data/spec/models/education_calculator_annual_cost_request_spec.rb +101 -0
  159. data/spec/models/education_calculator_deposit_amount_request_spec.rb +107 -0
  160. data/spec/models/education_calculator_percent_covered_request_spec.rb +101 -0
  161. data/spec/models/education_config_spec.rb +53 -0
  162. data/spec/models/emergency_fund_calculator_request_spec.rb +141 -0
  163. data/spec/models/event_study_request_spec.rb +109 -0
  164. data/spec/models/fee_analysis_request_spec.rb +77 -0
  165. data/spec/models/financial_health_check_request_spec.rb +95 -0
  166. data/spec/models/financial_picture_request_spec.rb +95 -0
  167. data/spec/models/financial_statement_analysis_request_spec.rb +155 -0
  168. data/spec/models/goal_accumulation_allocation_request_spec.rb +215 -0
  169. data/spec/models/goal_accumulation_recommendation_request_spec.rb +173 -0
  170. data/spec/models/goal_accumulation_status_request_spec.rb +173 -0
  171. data/spec/models/goal_config_spec.rb +47 -0
  172. data/spec/models/goal_decumulation_allocation_request_spec.rb +221 -0
  173. data/spec/models/goal_decumulation_recommendation_request_spec.rb +179 -0
  174. data/spec/models/goal_decumulation_status_request_spec.rb +179 -0
  175. data/spec/models/goal_withdrawal_config_spec.rb +89 -0
  176. data/spec/models/guaranteed_rate_benefit_spec.rb +59 -0
  177. data/spec/models/income_config_spec.rb +53 -0
  178. data/spec/models/life_insurance_needs_calculator_request_spec.rb +125 -0
  179. data/spec/models/location_spec.rb +41 -0
  180. data/spec/models/monte_carlo_request_spec.rb +179 -0
  181. data/spec/models/mortgage_calculator_down_payment_request_spec.rb +59 -0
  182. data/spec/models/mortgage_calculator_home_price_request_spec.rb +59 -0
  183. data/spec/models/mortgage_calculator_periodic_payment_request_spec.rb +59 -0
  184. data/spec/models/mvo_request_spec.rb +113 -0
  185. data/spec/models/opt_config1_spec.rb +69 -0
  186. data/spec/models/opt_config_spec.rb +81 -0
  187. data/spec/models/order_rebalance_request_spec.rb +123 -0
  188. data/spec/models/performance_calculator_request_spec.rb +233 -0
  189. data/spec/models/periods_spec.rb +47 -0
  190. data/spec/models/portfolio_optimization_score_request_spec.rb +127 -0
  191. data/spec/models/portfolio_what_if_request_spec.rb +123 -0
  192. data/spec/models/purchase_calculator_amount_request_spec.rb +93 -0
  193. data/spec/models/purchase_calculator_deposit_amount_request_spec.rb +99 -0
  194. data/spec/models/purchase_calculator_horizon_request_spec.rb +83 -0
  195. data/spec/models/ratio_targets1_spec.rb +71 -0
  196. data/spec/models/ratio_targets_spec.rb +71 -0
  197. data/spec/models/rebalancing_signal_request_spec.rb +71 -0
  198. data/spec/models/recommendation_config1_spec.rb +77 -0
  199. data/spec/models/recommendation_config_spec.rb +83 -0
  200. data/spec/models/recurring_transaction_analysis_request_spec.rb +129 -0
  201. data/spec/models/retirement_calculator_deposit_amount_request_spec.rb +113 -0
  202. data/spec/models/retirement_calculator_expenses_request_spec.rb +107 -0
  203. data/spec/models/retirement_calculator_percent_covered_request_spec.rb +107 -0
  204. data/spec/models/risk_allocation_request_spec.rb +85 -0
  205. data/spec/models/risk_score_request_spec.rb +71 -0
  206. data/spec/models/savings_calculator_request_spec.rb +99 -0
  207. data/spec/models/savings_deposit_schedule_spec.rb +63 -0
  208. data/spec/models/scenario_analysis_request_spec.rb +133 -0
  209. data/spec/models/sensitivity_analysis_request_spec.rb +133 -0
  210. data/spec/models/sensitivity_factor_spec.rb +59 -0
  211. data/spec/models/settings_spec.rb +79 -0
  212. data/spec/models/spending_analysis_request_spec.rb +187 -0
  213. data/spec/models/variable_annuity_request_spec.rb +209 -0
  214. data/spec/models/w_config1_spec.rb +65 -0
  215. data/spec/models/w_config_spec.rb +65 -0
  216. data/spec/spec_helper.rb +111 -0
  217. metadata +561 -0
@@ -0,0 +1,401 @@
1
+ =begin
2
+ #Hydrogen Proton API
3
+
4
+ #Financial engineering module of Hydrogen Atom
5
+
6
+ OpenAPI spec version: 1.9.1
7
+ Contact: info@hydrogenplatform.com
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.4.19
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module ProtonApi
16
+ class ScenarioAnalysisRequest
17
+ attr_accessor :scenario
18
+
19
+ attr_accessor :allocation_id
20
+
21
+ attr_accessor :end_date
22
+
23
+ attr_accessor :market_data_source
24
+
25
+ attr_accessor :model_id
26
+
27
+ attr_accessor :account_id
28
+
29
+ attr_accessor :start_date
30
+
31
+ attr_accessor :frequency_interval
32
+
33
+ attr_accessor :trading_days_per_year
34
+
35
+ attr_accessor :use_proxy_data
36
+
37
+ attr_accessor :portfolio_weights
38
+
39
+ attr_accessor :portfolio_tickers
40
+
41
+ attr_accessor :create_log
42
+
43
+ attr_accessor :aggregation_account_id
44
+
45
+ attr_accessor :portfolio_id
46
+
47
+ class EnumAttributeValidator
48
+ attr_reader :datatype
49
+ attr_reader :allowable_values
50
+
51
+ def initialize(datatype, allowable_values)
52
+ @allowable_values = allowable_values.map do |value|
53
+ case datatype.to_s
54
+ when /Integer/i
55
+ value.to_i
56
+ when /Float/i
57
+ value.to_f
58
+ else
59
+ value
60
+ end
61
+ end
62
+ end
63
+
64
+ def valid?(value)
65
+ !value || allowable_values.include?(value)
66
+ end
67
+ end
68
+
69
+ # Attribute mapping from ruby-style variable name to JSON key.
70
+ def self.attribute_map
71
+ {
72
+ :'scenario' => :'scenario',
73
+ :'allocation_id' => :'allocation_id',
74
+ :'end_date' => :'end_date',
75
+ :'market_data_source' => :'market_data_source',
76
+ :'model_id' => :'model_id',
77
+ :'account_id' => :'account_id',
78
+ :'start_date' => :'start_date',
79
+ :'frequency_interval' => :'frequency_interval',
80
+ :'trading_days_per_year' => :'trading_days_per_year',
81
+ :'use_proxy_data' => :'use_proxy_data',
82
+ :'portfolio_weights' => :'portfolio_weights',
83
+ :'portfolio_tickers' => :'portfolio_tickers',
84
+ :'create_log' => :'create_log',
85
+ :'aggregation_account_id' => :'aggregation_account_id',
86
+ :'portfolio_id' => :'portfolio_id'
87
+ }
88
+ end
89
+
90
+ # Attribute type mapping.
91
+ def self.swagger_types
92
+ {
93
+ :'scenario' => :'Array<SensitivityFactor>',
94
+ :'allocation_id' => :'String',
95
+ :'end_date' => :'Date',
96
+ :'market_data_source' => :'String',
97
+ :'model_id' => :'String',
98
+ :'account_id' => :'String',
99
+ :'start_date' => :'Date',
100
+ :'frequency_interval' => :'String',
101
+ :'trading_days_per_year' => :'Integer',
102
+ :'use_proxy_data' => :'BOOLEAN',
103
+ :'portfolio_weights' => :'Array<Float>',
104
+ :'portfolio_tickers' => :'Array<String>',
105
+ :'create_log' => :'BOOLEAN',
106
+ :'aggregation_account_id' => :'String',
107
+ :'portfolio_id' => :'String'
108
+ }
109
+ end
110
+
111
+ # Initializes the object
112
+ # @param [Hash] attributes Model attributes in the form of hash
113
+ def initialize(attributes = {})
114
+ return unless attributes.is_a?(Hash)
115
+
116
+ # convert string to symbol for hash key
117
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
118
+
119
+ if attributes.has_key?(:'scenario')
120
+ if (value = attributes[:'scenario']).is_a?(Array)
121
+ self.scenario = value
122
+ end
123
+ end
124
+
125
+ if attributes.has_key?(:'allocation_id')
126
+ self.allocation_id = attributes[:'allocation_id']
127
+ end
128
+
129
+ if attributes.has_key?(:'end_date')
130
+ self.end_date = attributes[:'end_date']
131
+ end
132
+
133
+ if attributes.has_key?(:'market_data_source')
134
+ self.market_data_source = attributes[:'market_data_source']
135
+ else
136
+ self.market_data_source = 'nucleus'
137
+ end
138
+
139
+ if attributes.has_key?(:'model_id')
140
+ self.model_id = attributes[:'model_id']
141
+ end
142
+
143
+ if attributes.has_key?(:'account_id')
144
+ self.account_id = attributes[:'account_id']
145
+ end
146
+
147
+ if attributes.has_key?(:'start_date')
148
+ self.start_date = attributes[:'start_date']
149
+ end
150
+
151
+ if attributes.has_key?(:'frequency_interval')
152
+ self.frequency_interval = attributes[:'frequency_interval']
153
+ end
154
+
155
+ if attributes.has_key?(:'trading_days_per_year')
156
+ self.trading_days_per_year = attributes[:'trading_days_per_year']
157
+ else
158
+ self.trading_days_per_year = 252
159
+ end
160
+
161
+ if attributes.has_key?(:'use_proxy_data')
162
+ self.use_proxy_data = attributes[:'use_proxy_data']
163
+ else
164
+ self.use_proxy_data = false
165
+ end
166
+
167
+ if attributes.has_key?(:'portfolio_weights')
168
+ if (value = attributes[:'portfolio_weights']).is_a?(Array)
169
+ self.portfolio_weights = value
170
+ end
171
+ end
172
+
173
+ if attributes.has_key?(:'portfolio_tickers')
174
+ if (value = attributes[:'portfolio_tickers']).is_a?(Array)
175
+ self.portfolio_tickers = value
176
+ end
177
+ end
178
+
179
+ if attributes.has_key?(:'create_log')
180
+ self.create_log = attributes[:'create_log']
181
+ else
182
+ self.create_log = false
183
+ end
184
+
185
+ if attributes.has_key?(:'aggregation_account_id')
186
+ self.aggregation_account_id = attributes[:'aggregation_account_id']
187
+ end
188
+
189
+ if attributes.has_key?(:'portfolio_id')
190
+ self.portfolio_id = attributes[:'portfolio_id']
191
+ end
192
+ end
193
+
194
+ # Show invalid properties with the reasons. Usually used together with valid?
195
+ # @return Array for valid properties with the reasons
196
+ def list_invalid_properties
197
+ invalid_properties = Array.new
198
+ if @scenario.nil?
199
+ invalid_properties.push('invalid value for "scenario", scenario cannot be nil.')
200
+ end
201
+
202
+ if @frequency_interval.nil?
203
+ invalid_properties.push('invalid value for "frequency_interval", frequency_interval cannot be nil.')
204
+ end
205
+
206
+ if !@trading_days_per_year.nil? && @trading_days_per_year > 365
207
+ invalid_properties.push('invalid value for "trading_days_per_year", must be smaller than or equal to 365.')
208
+ end
209
+
210
+ if !@trading_days_per_year.nil? && @trading_days_per_year < 1
211
+ invalid_properties.push('invalid value for "trading_days_per_year", must be greater than or equal to 1.')
212
+ end
213
+
214
+ invalid_properties
215
+ end
216
+
217
+ # Check to see if the all the properties in the model are valid
218
+ # @return true if the model is valid
219
+ def valid?
220
+ return false if @scenario.nil?
221
+ market_data_source_validator = EnumAttributeValidator.new('String', ['nucleus', 'integration'])
222
+ return false unless market_data_source_validator.valid?(@market_data_source)
223
+ return false if @frequency_interval.nil?
224
+ frequency_interval_validator = EnumAttributeValidator.new('String', ['year', 'quarter', 'month', 'week', 'day'])
225
+ return false unless frequency_interval_validator.valid?(@frequency_interval)
226
+ return false if !@trading_days_per_year.nil? && @trading_days_per_year > 365
227
+ return false if !@trading_days_per_year.nil? && @trading_days_per_year < 1
228
+ true
229
+ end
230
+
231
+ # Custom attribute writer method checking allowed values (enum).
232
+ # @param [Object] market_data_source Object to be assigned
233
+ def market_data_source=(market_data_source)
234
+ validator = EnumAttributeValidator.new('String', ['nucleus', 'integration'])
235
+ unless validator.valid?(market_data_source)
236
+ fail ArgumentError, 'invalid value for "market_data_source", must be one of #{validator.allowable_values}.'
237
+ end
238
+ @market_data_source = market_data_source
239
+ end
240
+
241
+ # Custom attribute writer method checking allowed values (enum).
242
+ # @param [Object] frequency_interval Object to be assigned
243
+ def frequency_interval=(frequency_interval)
244
+ validator = EnumAttributeValidator.new('String', ['year', 'quarter', 'month', 'week', 'day'])
245
+ unless validator.valid?(frequency_interval)
246
+ fail ArgumentError, 'invalid value for "frequency_interval", must be one of #{validator.allowable_values}.'
247
+ end
248
+ @frequency_interval = frequency_interval
249
+ end
250
+
251
+ # Custom attribute writer method with validation
252
+ # @param [Object] trading_days_per_year Value to be assigned
253
+ def trading_days_per_year=(trading_days_per_year)
254
+ if !trading_days_per_year.nil? && trading_days_per_year > 365
255
+ fail ArgumentError, 'invalid value for "trading_days_per_year", must be smaller than or equal to 365.'
256
+ end
257
+
258
+ if !trading_days_per_year.nil? && trading_days_per_year < 1
259
+ fail ArgumentError, 'invalid value for "trading_days_per_year", must be greater than or equal to 1.'
260
+ end
261
+
262
+ @trading_days_per_year = trading_days_per_year
263
+ end
264
+
265
+ # Checks equality by comparing each attribute.
266
+ # @param [Object] Object to be compared
267
+ def ==(o)
268
+ return true if self.equal?(o)
269
+ self.class == o.class &&
270
+ scenario == o.scenario &&
271
+ allocation_id == o.allocation_id &&
272
+ end_date == o.end_date &&
273
+ market_data_source == o.market_data_source &&
274
+ model_id == o.model_id &&
275
+ account_id == o.account_id &&
276
+ start_date == o.start_date &&
277
+ frequency_interval == o.frequency_interval &&
278
+ trading_days_per_year == o.trading_days_per_year &&
279
+ use_proxy_data == o.use_proxy_data &&
280
+ portfolio_weights == o.portfolio_weights &&
281
+ portfolio_tickers == o.portfolio_tickers &&
282
+ create_log == o.create_log &&
283
+ aggregation_account_id == o.aggregation_account_id &&
284
+ portfolio_id == o.portfolio_id
285
+ end
286
+
287
+ # @see the `==` method
288
+ # @param [Object] Object to be compared
289
+ def eql?(o)
290
+ self == o
291
+ end
292
+
293
+ # Calculates hash code according to all attributes.
294
+ # @return [Fixnum] Hash code
295
+ def hash
296
+ [scenario, allocation_id, end_date, market_data_source, model_id, account_id, start_date, frequency_interval, trading_days_per_year, use_proxy_data, portfolio_weights, portfolio_tickers, create_log, aggregation_account_id, portfolio_id].hash
297
+ end
298
+
299
+ # Builds the object from hash
300
+ # @param [Hash] attributes Model attributes in the form of hash
301
+ # @return [Object] Returns the model itself
302
+ def build_from_hash(attributes)
303
+ return nil unless attributes.is_a?(Hash)
304
+ self.class.swagger_types.each_pair do |key, type|
305
+ if type =~ /\AArray<(.*)>/i
306
+ # check to ensure the input is an array given that the attribute
307
+ # is documented as an array but the input is not
308
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
309
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
310
+ end
311
+ elsif !attributes[self.class.attribute_map[key]].nil?
312
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
313
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
314
+ end
315
+
316
+ self
317
+ end
318
+ # Deserializes the data based on type
319
+ # @param string type Data type
320
+ # @param string value Value to be deserialized
321
+ # @return [Object] Deserialized data
322
+ def _deserialize(type, value)
323
+ case type.to_sym
324
+ when :DateTime
325
+ value
326
+ when :Date
327
+ value
328
+ when :String
329
+ value.to_s
330
+ when :Integer
331
+ value.to_i
332
+ when :Float
333
+ value.to_f
334
+ when :BOOLEAN
335
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
336
+ true
337
+ else
338
+ false
339
+ end
340
+ when :Object
341
+ # generic object (usually a Hash), return directly
342
+ value
343
+ when /\AArray<(?<inner_type>.+)>\z/
344
+ inner_type = Regexp.last_match[:inner_type]
345
+ value.map { |v| _deserialize(inner_type, v) }
346
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
347
+ k_type = Regexp.last_match[:k_type]
348
+ v_type = Regexp.last_match[:v_type]
349
+ {}.tap do |hash|
350
+ value.each do |k, v|
351
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
352
+ end
353
+ end
354
+ else # model
355
+ temp_model = ProtonApi.const_get(type).new
356
+ temp_model.build_from_hash(value)
357
+ end
358
+ end
359
+ # Returns the string representation of the object
360
+ # @return [String] String presentation of the object
361
+ def to_s
362
+ to_hash.to_s
363
+ end
364
+
365
+ # to_body is an alias to to_hash (backward compatibility)
366
+ # @return [Hash] Returns the object in the form of hash
367
+ def to_body
368
+ to_hash
369
+ end
370
+
371
+ # Returns the object in the form of hash
372
+ # @return [Hash] Returns the object in the form of hash
373
+ def to_hash
374
+ hash = {}
375
+ self.class.attribute_map.each_pair do |attr, param|
376
+ value = self.send(attr)
377
+ next if value.nil?
378
+ hash[param] = _to_hash(value)
379
+ end
380
+ hash
381
+ end
382
+ # Outputs non-array value in the form of hash
383
+ # For object, use to_hash. Otherwise, just return the value
384
+ # @param [Object] value Any valid value
385
+ # @return [Hash] Returns the value in the form of hash
386
+ def _to_hash(value)
387
+ if value.is_a?(Array)
388
+ value.compact.map { |v| _to_hash(v) }
389
+ elsif value.is_a?(Hash)
390
+ {}.tap do |hash|
391
+ value.each { |k, v| hash[k] = _to_hash(v) }
392
+ end
393
+ elsif value.respond_to? :to_hash
394
+ value.to_hash
395
+ else
396
+ value
397
+ end
398
+ end
399
+
400
+ end
401
+ end
@@ -0,0 +1,399 @@
1
+ =begin
2
+ #Hydrogen Proton API
3
+
4
+ #Financial engineering module of Hydrogen Atom
5
+
6
+ OpenAPI spec version: 1.9.1
7
+ Contact: info@hydrogenplatform.com
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.4.19
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module ProtonApi
16
+ class SensitivityAnalysisRequest
17
+ attr_accessor :allocation_id
18
+
19
+ attr_accessor :end_date
20
+
21
+ attr_accessor :market_data_source
22
+
23
+ attr_accessor :model_id
24
+
25
+ attr_accessor :account_id
26
+
27
+ attr_accessor :start_date
28
+
29
+ attr_accessor :frequency_interval
30
+
31
+ attr_accessor :trading_days_per_year
32
+
33
+ attr_accessor :sensitivity_factor
34
+
35
+ attr_accessor :use_proxy_data
36
+
37
+ attr_accessor :portfolio_weights
38
+
39
+ attr_accessor :portfolio_tickers
40
+
41
+ attr_accessor :create_log
42
+
43
+ attr_accessor :aggregation_account_id
44
+
45
+ attr_accessor :portfolio_id
46
+
47
+ class EnumAttributeValidator
48
+ attr_reader :datatype
49
+ attr_reader :allowable_values
50
+
51
+ def initialize(datatype, allowable_values)
52
+ @allowable_values = allowable_values.map do |value|
53
+ case datatype.to_s
54
+ when /Integer/i
55
+ value.to_i
56
+ when /Float/i
57
+ value.to_f
58
+ else
59
+ value
60
+ end
61
+ end
62
+ end
63
+
64
+ def valid?(value)
65
+ !value || allowable_values.include?(value)
66
+ end
67
+ end
68
+
69
+ # Attribute mapping from ruby-style variable name to JSON key.
70
+ def self.attribute_map
71
+ {
72
+ :'allocation_id' => :'allocation_id',
73
+ :'end_date' => :'end_date',
74
+ :'market_data_source' => :'market_data_source',
75
+ :'model_id' => :'model_id',
76
+ :'account_id' => :'account_id',
77
+ :'start_date' => :'start_date',
78
+ :'frequency_interval' => :'frequency_interval',
79
+ :'trading_days_per_year' => :'trading_days_per_year',
80
+ :'sensitivity_factor' => :'sensitivity_factor',
81
+ :'use_proxy_data' => :'use_proxy_data',
82
+ :'portfolio_weights' => :'portfolio_weights',
83
+ :'portfolio_tickers' => :'portfolio_tickers',
84
+ :'create_log' => :'create_log',
85
+ :'aggregation_account_id' => :'aggregation_account_id',
86
+ :'portfolio_id' => :'portfolio_id'
87
+ }
88
+ end
89
+
90
+ # Attribute type mapping.
91
+ def self.swagger_types
92
+ {
93
+ :'allocation_id' => :'String',
94
+ :'end_date' => :'Date',
95
+ :'market_data_source' => :'String',
96
+ :'model_id' => :'String',
97
+ :'account_id' => :'String',
98
+ :'start_date' => :'Date',
99
+ :'frequency_interval' => :'String',
100
+ :'trading_days_per_year' => :'Integer',
101
+ :'sensitivity_factor' => :'SensitivityFactor',
102
+ :'use_proxy_data' => :'BOOLEAN',
103
+ :'portfolio_weights' => :'Array<Float>',
104
+ :'portfolio_tickers' => :'Array<String>',
105
+ :'create_log' => :'BOOLEAN',
106
+ :'aggregation_account_id' => :'String',
107
+ :'portfolio_id' => :'String'
108
+ }
109
+ end
110
+
111
+ # Initializes the object
112
+ # @param [Hash] attributes Model attributes in the form of hash
113
+ def initialize(attributes = {})
114
+ return unless attributes.is_a?(Hash)
115
+
116
+ # convert string to symbol for hash key
117
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
118
+
119
+ if attributes.has_key?(:'allocation_id')
120
+ self.allocation_id = attributes[:'allocation_id']
121
+ end
122
+
123
+ if attributes.has_key?(:'end_date')
124
+ self.end_date = attributes[:'end_date']
125
+ end
126
+
127
+ if attributes.has_key?(:'market_data_source')
128
+ self.market_data_source = attributes[:'market_data_source']
129
+ else
130
+ self.market_data_source = 'nucleus'
131
+ end
132
+
133
+ if attributes.has_key?(:'model_id')
134
+ self.model_id = attributes[:'model_id']
135
+ end
136
+
137
+ if attributes.has_key?(:'account_id')
138
+ self.account_id = attributes[:'account_id']
139
+ end
140
+
141
+ if attributes.has_key?(:'start_date')
142
+ self.start_date = attributes[:'start_date']
143
+ end
144
+
145
+ if attributes.has_key?(:'frequency_interval')
146
+ self.frequency_interval = attributes[:'frequency_interval']
147
+ end
148
+
149
+ if attributes.has_key?(:'trading_days_per_year')
150
+ self.trading_days_per_year = attributes[:'trading_days_per_year']
151
+ else
152
+ self.trading_days_per_year = 252
153
+ end
154
+
155
+ if attributes.has_key?(:'sensitivity_factor')
156
+ self.sensitivity_factor = attributes[:'sensitivity_factor']
157
+ end
158
+
159
+ if attributes.has_key?(:'use_proxy_data')
160
+ self.use_proxy_data = attributes[:'use_proxy_data']
161
+ else
162
+ self.use_proxy_data = false
163
+ end
164
+
165
+ if attributes.has_key?(:'portfolio_weights')
166
+ if (value = attributes[:'portfolio_weights']).is_a?(Array)
167
+ self.portfolio_weights = value
168
+ end
169
+ end
170
+
171
+ if attributes.has_key?(:'portfolio_tickers')
172
+ if (value = attributes[:'portfolio_tickers']).is_a?(Array)
173
+ self.portfolio_tickers = value
174
+ end
175
+ end
176
+
177
+ if attributes.has_key?(:'create_log')
178
+ self.create_log = attributes[:'create_log']
179
+ else
180
+ self.create_log = false
181
+ end
182
+
183
+ if attributes.has_key?(:'aggregation_account_id')
184
+ self.aggregation_account_id = attributes[:'aggregation_account_id']
185
+ end
186
+
187
+ if attributes.has_key?(:'portfolio_id')
188
+ self.portfolio_id = attributes[:'portfolio_id']
189
+ end
190
+ end
191
+
192
+ # Show invalid properties with the reasons. Usually used together with valid?
193
+ # @return Array for valid properties with the reasons
194
+ def list_invalid_properties
195
+ invalid_properties = Array.new
196
+ if @frequency_interval.nil?
197
+ invalid_properties.push('invalid value for "frequency_interval", frequency_interval cannot be nil.')
198
+ end
199
+
200
+ if !@trading_days_per_year.nil? && @trading_days_per_year > 365
201
+ invalid_properties.push('invalid value for "trading_days_per_year", must be smaller than or equal to 365.')
202
+ end
203
+
204
+ if !@trading_days_per_year.nil? && @trading_days_per_year < 1
205
+ invalid_properties.push('invalid value for "trading_days_per_year", must be greater than or equal to 1.')
206
+ end
207
+
208
+ if @sensitivity_factor.nil?
209
+ invalid_properties.push('invalid value for "sensitivity_factor", sensitivity_factor cannot be nil.')
210
+ end
211
+
212
+ invalid_properties
213
+ end
214
+
215
+ # Check to see if the all the properties in the model are valid
216
+ # @return true if the model is valid
217
+ def valid?
218
+ market_data_source_validator = EnumAttributeValidator.new('String', ['nucleus', 'integration'])
219
+ return false unless market_data_source_validator.valid?(@market_data_source)
220
+ return false if @frequency_interval.nil?
221
+ frequency_interval_validator = EnumAttributeValidator.new('String', ['year', 'quarter', 'month', 'week', 'day'])
222
+ return false unless frequency_interval_validator.valid?(@frequency_interval)
223
+ return false if !@trading_days_per_year.nil? && @trading_days_per_year > 365
224
+ return false if !@trading_days_per_year.nil? && @trading_days_per_year < 1
225
+ return false if @sensitivity_factor.nil?
226
+ true
227
+ end
228
+
229
+ # Custom attribute writer method checking allowed values (enum).
230
+ # @param [Object] market_data_source Object to be assigned
231
+ def market_data_source=(market_data_source)
232
+ validator = EnumAttributeValidator.new('String', ['nucleus', 'integration'])
233
+ unless validator.valid?(market_data_source)
234
+ fail ArgumentError, 'invalid value for "market_data_source", must be one of #{validator.allowable_values}.'
235
+ end
236
+ @market_data_source = market_data_source
237
+ end
238
+
239
+ # Custom attribute writer method checking allowed values (enum).
240
+ # @param [Object] frequency_interval Object to be assigned
241
+ def frequency_interval=(frequency_interval)
242
+ validator = EnumAttributeValidator.new('String', ['year', 'quarter', 'month', 'week', 'day'])
243
+ unless validator.valid?(frequency_interval)
244
+ fail ArgumentError, 'invalid value for "frequency_interval", must be one of #{validator.allowable_values}.'
245
+ end
246
+ @frequency_interval = frequency_interval
247
+ end
248
+
249
+ # Custom attribute writer method with validation
250
+ # @param [Object] trading_days_per_year Value to be assigned
251
+ def trading_days_per_year=(trading_days_per_year)
252
+ if !trading_days_per_year.nil? && trading_days_per_year > 365
253
+ fail ArgumentError, 'invalid value for "trading_days_per_year", must be smaller than or equal to 365.'
254
+ end
255
+
256
+ if !trading_days_per_year.nil? && trading_days_per_year < 1
257
+ fail ArgumentError, 'invalid value for "trading_days_per_year", must be greater than or equal to 1.'
258
+ end
259
+
260
+ @trading_days_per_year = trading_days_per_year
261
+ end
262
+
263
+ # Checks equality by comparing each attribute.
264
+ # @param [Object] Object to be compared
265
+ def ==(o)
266
+ return true if self.equal?(o)
267
+ self.class == o.class &&
268
+ allocation_id == o.allocation_id &&
269
+ end_date == o.end_date &&
270
+ market_data_source == o.market_data_source &&
271
+ model_id == o.model_id &&
272
+ account_id == o.account_id &&
273
+ start_date == o.start_date &&
274
+ frequency_interval == o.frequency_interval &&
275
+ trading_days_per_year == o.trading_days_per_year &&
276
+ sensitivity_factor == o.sensitivity_factor &&
277
+ use_proxy_data == o.use_proxy_data &&
278
+ portfolio_weights == o.portfolio_weights &&
279
+ portfolio_tickers == o.portfolio_tickers &&
280
+ create_log == o.create_log &&
281
+ aggregation_account_id == o.aggregation_account_id &&
282
+ portfolio_id == o.portfolio_id
283
+ end
284
+
285
+ # @see the `==` method
286
+ # @param [Object] Object to be compared
287
+ def eql?(o)
288
+ self == o
289
+ end
290
+
291
+ # Calculates hash code according to all attributes.
292
+ # @return [Fixnum] Hash code
293
+ def hash
294
+ [allocation_id, end_date, market_data_source, model_id, account_id, start_date, frequency_interval, trading_days_per_year, sensitivity_factor, use_proxy_data, portfolio_weights, portfolio_tickers, create_log, aggregation_account_id, portfolio_id].hash
295
+ end
296
+
297
+ # Builds the object from hash
298
+ # @param [Hash] attributes Model attributes in the form of hash
299
+ # @return [Object] Returns the model itself
300
+ def build_from_hash(attributes)
301
+ return nil unless attributes.is_a?(Hash)
302
+ self.class.swagger_types.each_pair do |key, type|
303
+ if type =~ /\AArray<(.*)>/i
304
+ # check to ensure the input is an array given that the attribute
305
+ # is documented as an array but the input is not
306
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
307
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
308
+ end
309
+ elsif !attributes[self.class.attribute_map[key]].nil?
310
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
311
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
312
+ end
313
+
314
+ self
315
+ end
316
+ # Deserializes the data based on type
317
+ # @param string type Data type
318
+ # @param string value Value to be deserialized
319
+ # @return [Object] Deserialized data
320
+ def _deserialize(type, value)
321
+ case type.to_sym
322
+ when :DateTime
323
+ value
324
+ when :Date
325
+ value
326
+ when :String
327
+ value.to_s
328
+ when :Integer
329
+ value.to_i
330
+ when :Float
331
+ value.to_f
332
+ when :BOOLEAN
333
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
334
+ true
335
+ else
336
+ false
337
+ end
338
+ when :Object
339
+ # generic object (usually a Hash), return directly
340
+ value
341
+ when /\AArray<(?<inner_type>.+)>\z/
342
+ inner_type = Regexp.last_match[:inner_type]
343
+ value.map { |v| _deserialize(inner_type, v) }
344
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
345
+ k_type = Regexp.last_match[:k_type]
346
+ v_type = Regexp.last_match[:v_type]
347
+ {}.tap do |hash|
348
+ value.each do |k, v|
349
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
350
+ end
351
+ end
352
+ else # model
353
+ temp_model = ProtonApi.const_get(type).new
354
+ temp_model.build_from_hash(value)
355
+ end
356
+ end
357
+ # Returns the string representation of the object
358
+ # @return [String] String presentation of the object
359
+ def to_s
360
+ to_hash.to_s
361
+ end
362
+
363
+ # to_body is an alias to to_hash (backward compatibility)
364
+ # @return [Hash] Returns the object in the form of hash
365
+ def to_body
366
+ to_hash
367
+ end
368
+
369
+ # Returns the object in the form of hash
370
+ # @return [Hash] Returns the object in the form of hash
371
+ def to_hash
372
+ hash = {}
373
+ self.class.attribute_map.each_pair do |attr, param|
374
+ value = self.send(attr)
375
+ next if value.nil?
376
+ hash[param] = _to_hash(value)
377
+ end
378
+ hash
379
+ end
380
+ # Outputs non-array value in the form of hash
381
+ # For object, use to_hash. Otherwise, just return the value
382
+ # @param [Object] value Any valid value
383
+ # @return [Hash] Returns the value in the form of hash
384
+ def _to_hash(value)
385
+ if value.is_a?(Array)
386
+ value.compact.map { |v| _to_hash(v) }
387
+ elsif value.is_a?(Hash)
388
+ {}.tap do |hash|
389
+ value.each { |k, v| hash[k] = _to_hash(v) }
390
+ end
391
+ elsif value.respond_to? :to_hash
392
+ value.to_hash
393
+ else
394
+ value
395
+ end
396
+ end
397
+
398
+ end
399
+ end