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,729 @@
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 GoalAccumulationAllocationRequest
17
+ attr_accessor :recommendation_config
18
+
19
+ attr_accessor :compounding_rate
20
+
21
+ attr_accessor :risk_score
22
+
23
+ attr_accessor :recommend_type
24
+
25
+ attr_accessor :create_log
26
+
27
+ attr_accessor :goal_config
28
+
29
+ attr_accessor :n
30
+
31
+ attr_accessor :allocation_method
32
+
33
+ attr_accessor :allocation_priority
34
+
35
+ attr_accessor :remove_outliers
36
+
37
+ attr_accessor :adjust_for_compounding
38
+
39
+ attr_accessor :goal_id
40
+
41
+ attr_accessor :conf_tgt
42
+
43
+ attr_accessor :trading_days_per_year
44
+
45
+ attr_accessor :use_proxy_data
46
+
47
+ attr_accessor :thresh
48
+
49
+ attr_accessor :withdrawal_tax
50
+
51
+ attr_accessor :client_id
52
+
53
+ attr_accessor :opt_config
54
+
55
+ attr_accessor :market_data_source
56
+
57
+ attr_accessor :thresh_type
58
+
59
+ attr_accessor :horizon_frequency
60
+
61
+ attr_accessor :horizon
62
+
63
+ attr_accessor :allocations
64
+
65
+ attr_accessor :curr_inv
66
+
67
+ attr_accessor :deposit_config
68
+
69
+ class EnumAttributeValidator
70
+ attr_reader :datatype
71
+ attr_reader :allowable_values
72
+
73
+ def initialize(datatype, allowable_values)
74
+ @allowable_values = allowable_values.map do |value|
75
+ case datatype.to_s
76
+ when /Integer/i
77
+ value.to_i
78
+ when /Float/i
79
+ value.to_f
80
+ else
81
+ value
82
+ end
83
+ end
84
+ end
85
+
86
+ def valid?(value)
87
+ !value || allowable_values.include?(value)
88
+ end
89
+ end
90
+
91
+ # Attribute mapping from ruby-style variable name to JSON key.
92
+ def self.attribute_map
93
+ {
94
+ :'recommendation_config' => :'recommendation_config',
95
+ :'compounding_rate' => :'compounding_rate',
96
+ :'risk_score' => :'risk_score',
97
+ :'recommend_type' => :'recommend_type',
98
+ :'create_log' => :'create_log',
99
+ :'goal_config' => :'goal_config',
100
+ :'n' => :'n',
101
+ :'allocation_method' => :'allocation_method',
102
+ :'allocation_priority' => :'allocation_priority',
103
+ :'remove_outliers' => :'remove_outliers',
104
+ :'adjust_for_compounding' => :'adjust_for_compounding',
105
+ :'goal_id' => :'goal_id',
106
+ :'conf_tgt' => :'conf_tgt',
107
+ :'trading_days_per_year' => :'trading_days_per_year',
108
+ :'use_proxy_data' => :'use_proxy_data',
109
+ :'thresh' => :'thresh',
110
+ :'withdrawal_tax' => :'withdrawal_tax',
111
+ :'client_id' => :'client_id',
112
+ :'opt_config' => :'opt_config',
113
+ :'market_data_source' => :'market_data_source',
114
+ :'thresh_type' => :'thresh_type',
115
+ :'horizon_frequency' => :'horizon_frequency',
116
+ :'horizon' => :'horizon',
117
+ :'allocations' => :'allocations',
118
+ :'curr_inv' => :'curr_inv',
119
+ :'deposit_config' => :'deposit_config'
120
+ }
121
+ end
122
+
123
+ # Attribute type mapping.
124
+ def self.swagger_types
125
+ {
126
+ :'recommendation_config' => :'RecommendationConfig',
127
+ :'compounding_rate' => :'Float',
128
+ :'risk_score' => :'Float',
129
+ :'recommend_type' => :'String',
130
+ :'create_log' => :'BOOLEAN',
131
+ :'goal_config' => :'GoalConfig',
132
+ :'n' => :'Integer',
133
+ :'allocation_method' => :'String',
134
+ :'allocation_priority' => :'String',
135
+ :'remove_outliers' => :'BOOLEAN',
136
+ :'adjust_for_compounding' => :'BOOLEAN',
137
+ :'goal_id' => :'String',
138
+ :'conf_tgt' => :'Float',
139
+ :'trading_days_per_year' => :'Integer',
140
+ :'use_proxy_data' => :'BOOLEAN',
141
+ :'thresh' => :'Float',
142
+ :'withdrawal_tax' => :'Float',
143
+ :'client_id' => :'String',
144
+ :'opt_config' => :'OptConfig',
145
+ :'market_data_source' => :'String',
146
+ :'thresh_type' => :'String',
147
+ :'horizon_frequency' => :'String',
148
+ :'horizon' => :'Integer',
149
+ :'allocations' => :'Array<String>',
150
+ :'curr_inv' => :'Float',
151
+ :'deposit_config' => :'Array<AccumulationGoalDepositConfig>'
152
+ }
153
+ end
154
+
155
+ # Initializes the object
156
+ # @param [Hash] attributes Model attributes in the form of hash
157
+ def initialize(attributes = {})
158
+ return unless attributes.is_a?(Hash)
159
+
160
+ # convert string to symbol for hash key
161
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
162
+
163
+ if attributes.has_key?(:'recommendation_config')
164
+ self.recommendation_config = attributes[:'recommendation_config']
165
+ end
166
+
167
+ if attributes.has_key?(:'compounding_rate')
168
+ self.compounding_rate = attributes[:'compounding_rate']
169
+ else
170
+ self.compounding_rate = 0.0
171
+ end
172
+
173
+ if attributes.has_key?(:'risk_score')
174
+ self.risk_score = attributes[:'risk_score']
175
+ end
176
+
177
+ if attributes.has_key?(:'recommend_type')
178
+ self.recommend_type = attributes[:'recommend_type']
179
+ else
180
+ self.recommend_type = 'horizon'
181
+ end
182
+
183
+ if attributes.has_key?(:'create_log')
184
+ self.create_log = attributes[:'create_log']
185
+ else
186
+ self.create_log = false
187
+ end
188
+
189
+ if attributes.has_key?(:'goal_config')
190
+ self.goal_config = attributes[:'goal_config']
191
+ end
192
+
193
+ if attributes.has_key?(:'n')
194
+ self.n = attributes[:'n']
195
+ else
196
+ self.n = 1000
197
+ end
198
+
199
+ if attributes.has_key?(:'allocation_method')
200
+ self.allocation_method = attributes[:'allocation_method']
201
+ end
202
+
203
+ if attributes.has_key?(:'allocation_priority')
204
+ self.allocation_priority = attributes[:'allocation_priority']
205
+ end
206
+
207
+ if attributes.has_key?(:'remove_outliers')
208
+ self.remove_outliers = attributes[:'remove_outliers']
209
+ else
210
+ self.remove_outliers = true
211
+ end
212
+
213
+ if attributes.has_key?(:'adjust_for_compounding')
214
+ self.adjust_for_compounding = attributes[:'adjust_for_compounding']
215
+ else
216
+ self.adjust_for_compounding = false
217
+ end
218
+
219
+ if attributes.has_key?(:'goal_id')
220
+ self.goal_id = attributes[:'goal_id']
221
+ end
222
+
223
+ if attributes.has_key?(:'conf_tgt')
224
+ self.conf_tgt = attributes[:'conf_tgt']
225
+ else
226
+ self.conf_tgt = 0.9
227
+ end
228
+
229
+ if attributes.has_key?(:'trading_days_per_year')
230
+ self.trading_days_per_year = attributes[:'trading_days_per_year']
231
+ else
232
+ self.trading_days_per_year = 252
233
+ end
234
+
235
+ if attributes.has_key?(:'use_proxy_data')
236
+ self.use_proxy_data = attributes[:'use_proxy_data']
237
+ else
238
+ self.use_proxy_data = false
239
+ end
240
+
241
+ if attributes.has_key?(:'thresh')
242
+ self.thresh = attributes[:'thresh']
243
+ end
244
+
245
+ if attributes.has_key?(:'withdrawal_tax')
246
+ self.withdrawal_tax = attributes[:'withdrawal_tax']
247
+ else
248
+ self.withdrawal_tax = 0.0
249
+ end
250
+
251
+ if attributes.has_key?(:'client_id')
252
+ self.client_id = attributes[:'client_id']
253
+ end
254
+
255
+ if attributes.has_key?(:'opt_config')
256
+ self.opt_config = attributes[:'opt_config']
257
+ end
258
+
259
+ if attributes.has_key?(:'market_data_source')
260
+ self.market_data_source = attributes[:'market_data_source']
261
+ else
262
+ self.market_data_source = 'nucleus'
263
+ end
264
+
265
+ if attributes.has_key?(:'thresh_type')
266
+ self.thresh_type = attributes[:'thresh_type']
267
+ else
268
+ self.thresh_type = 'perc'
269
+ end
270
+
271
+ if attributes.has_key?(:'horizon_frequency')
272
+ self.horizon_frequency = attributes[:'horizon_frequency']
273
+ else
274
+ self.horizon_frequency = 'year'
275
+ end
276
+
277
+ if attributes.has_key?(:'horizon')
278
+ self.horizon = attributes[:'horizon']
279
+ end
280
+
281
+ if attributes.has_key?(:'allocations')
282
+ if (value = attributes[:'allocations']).is_a?(Array)
283
+ self.allocations = value
284
+ end
285
+ end
286
+
287
+ if attributes.has_key?(:'curr_inv')
288
+ self.curr_inv = attributes[:'curr_inv']
289
+ end
290
+
291
+ if attributes.has_key?(:'deposit_config')
292
+ if (value = attributes[:'deposit_config']).is_a?(Array)
293
+ self.deposit_config = value
294
+ end
295
+ end
296
+ end
297
+
298
+ # Show invalid properties with the reasons. Usually used together with valid?
299
+ # @return Array for valid properties with the reasons
300
+ def list_invalid_properties
301
+ invalid_properties = Array.new
302
+ if !@compounding_rate.nil? && @compounding_rate < -1
303
+ invalid_properties.push('invalid value for "compounding_rate", must be greater than or equal to -1.')
304
+ end
305
+
306
+ if !@risk_score.nil? && @risk_score > 100
307
+ invalid_properties.push('invalid value for "risk_score", must be smaller than or equal to 100.')
308
+ end
309
+
310
+ if !@risk_score.nil? && @risk_score < 0
311
+ invalid_properties.push('invalid value for "risk_score", must be greater than or equal to 0.')
312
+ end
313
+
314
+ if !@n.nil? && @n > 10000
315
+ invalid_properties.push('invalid value for "n", must be smaller than or equal to 10000.')
316
+ end
317
+
318
+ if !@n.nil? && @n < 1
319
+ invalid_properties.push('invalid value for "n", must be greater than or equal to 1.')
320
+ end
321
+
322
+ if @allocation_method.nil?
323
+ invalid_properties.push('invalid value for "allocation_method", allocation_method cannot be nil.')
324
+ end
325
+
326
+ if @allocation_priority.nil?
327
+ invalid_properties.push('invalid value for "allocation_priority", allocation_priority cannot be nil.')
328
+ end
329
+
330
+ if !@conf_tgt.nil? && @conf_tgt > 1
331
+ invalid_properties.push('invalid value for "conf_tgt", must be smaller than or equal to 1.')
332
+ end
333
+
334
+ if !@conf_tgt.nil? && @conf_tgt < 0
335
+ invalid_properties.push('invalid value for "conf_tgt", must be greater than or equal to 0.')
336
+ end
337
+
338
+ if !@trading_days_per_year.nil? && @trading_days_per_year > 365
339
+ invalid_properties.push('invalid value for "trading_days_per_year", must be smaller than or equal to 365.')
340
+ end
341
+
342
+ if !@trading_days_per_year.nil? && @trading_days_per_year < 1
343
+ invalid_properties.push('invalid value for "trading_days_per_year", must be greater than or equal to 1.')
344
+ end
345
+
346
+ if !@thresh.nil? && @thresh < 0
347
+ invalid_properties.push('invalid value for "thresh", must be greater than or equal to 0.')
348
+ end
349
+
350
+ if !@withdrawal_tax.nil? && @withdrawal_tax > 1
351
+ invalid_properties.push('invalid value for "withdrawal_tax", must be smaller than or equal to 1.')
352
+ end
353
+
354
+ if !@withdrawal_tax.nil? && @withdrawal_tax < 0
355
+ invalid_properties.push('invalid value for "withdrawal_tax", must be greater than or equal to 0.')
356
+ end
357
+
358
+ if !@horizon.nil? && @horizon > 350
359
+ invalid_properties.push('invalid value for "horizon", must be smaller than or equal to 350.')
360
+ end
361
+
362
+ if !@horizon.nil? && @horizon < 0
363
+ invalid_properties.push('invalid value for "horizon", must be greater than or equal to 0.')
364
+ end
365
+
366
+ if !@curr_inv.nil? && @curr_inv < 0
367
+ invalid_properties.push('invalid value for "curr_inv", must be greater than or equal to 0.')
368
+ end
369
+
370
+ invalid_properties
371
+ end
372
+
373
+ # Check to see if the all the properties in the model are valid
374
+ # @return true if the model is valid
375
+ def valid?
376
+ return false if !@compounding_rate.nil? && @compounding_rate < -1
377
+ return false if !@risk_score.nil? && @risk_score > 100
378
+ return false if !@risk_score.nil? && @risk_score < 0
379
+ recommend_type_validator = EnumAttributeValidator.new('String', ['recurring', 'one-time', 'combo', 'horizon'])
380
+ return false unless recommend_type_validator.valid?(@recommend_type)
381
+ return false if !@n.nil? && @n > 10000
382
+ return false if !@n.nil? && @n < 1
383
+ return false if @allocation_method.nil?
384
+ allocation_method_validator = EnumAttributeValidator.new('String', ['select', 'create'])
385
+ return false unless allocation_method_validator.valid?(@allocation_method)
386
+ return false if @allocation_priority.nil?
387
+ allocation_priority_validator = EnumAttributeValidator.new('String', ['goal', 'risk'])
388
+ return false unless allocation_priority_validator.valid?(@allocation_priority)
389
+ return false if !@conf_tgt.nil? && @conf_tgt > 1
390
+ return false if !@conf_tgt.nil? && @conf_tgt < 0
391
+ return false if !@trading_days_per_year.nil? && @trading_days_per_year > 365
392
+ return false if !@trading_days_per_year.nil? && @trading_days_per_year < 1
393
+ return false if !@thresh.nil? && @thresh < 0
394
+ return false if !@withdrawal_tax.nil? && @withdrawal_tax > 1
395
+ return false if !@withdrawal_tax.nil? && @withdrawal_tax < 0
396
+ market_data_source_validator = EnumAttributeValidator.new('String', ['nucleus', 'integration'])
397
+ return false unless market_data_source_validator.valid?(@market_data_source)
398
+ thresh_type_validator = EnumAttributeValidator.new('String', ['amnt', 'perc'])
399
+ return false unless thresh_type_validator.valid?(@thresh_type)
400
+ horizon_frequency_validator = EnumAttributeValidator.new('String', ['year', 'six_months', 'quarter', 'month', 'two_weeks', 'week', 'day'])
401
+ return false unless horizon_frequency_validator.valid?(@horizon_frequency)
402
+ return false if !@horizon.nil? && @horizon > 350
403
+ return false if !@horizon.nil? && @horizon < 0
404
+ return false if !@curr_inv.nil? && @curr_inv < 0
405
+ true
406
+ end
407
+
408
+ # Custom attribute writer method with validation
409
+ # @param [Object] compounding_rate Value to be assigned
410
+ def compounding_rate=(compounding_rate)
411
+ if !compounding_rate.nil? && compounding_rate < -1
412
+ fail ArgumentError, 'invalid value for "compounding_rate", must be greater than or equal to -1.'
413
+ end
414
+
415
+ @compounding_rate = compounding_rate
416
+ end
417
+
418
+ # Custom attribute writer method with validation
419
+ # @param [Object] risk_score Value to be assigned
420
+ def risk_score=(risk_score)
421
+ if !risk_score.nil? && risk_score > 100
422
+ fail ArgumentError, 'invalid value for "risk_score", must be smaller than or equal to 100.'
423
+ end
424
+
425
+ if !risk_score.nil? && risk_score < 0
426
+ fail ArgumentError, 'invalid value for "risk_score", must be greater than or equal to 0.'
427
+ end
428
+
429
+ @risk_score = risk_score
430
+ end
431
+
432
+ # Custom attribute writer method checking allowed values (enum).
433
+ # @param [Object] recommend_type Object to be assigned
434
+ def recommend_type=(recommend_type)
435
+ validator = EnumAttributeValidator.new('String', ['recurring', 'one-time', 'combo', 'horizon'])
436
+ unless validator.valid?(recommend_type)
437
+ fail ArgumentError, 'invalid value for "recommend_type", must be one of #{validator.allowable_values}.'
438
+ end
439
+ @recommend_type = recommend_type
440
+ end
441
+
442
+ # Custom attribute writer method with validation
443
+ # @param [Object] n Value to be assigned
444
+ def n=(n)
445
+ if !n.nil? && n > 10000
446
+ fail ArgumentError, 'invalid value for "n", must be smaller than or equal to 10000.'
447
+ end
448
+
449
+ if !n.nil? && n < 1
450
+ fail ArgumentError, 'invalid value for "n", must be greater than or equal to 1.'
451
+ end
452
+
453
+ @n = n
454
+ end
455
+
456
+ # Custom attribute writer method checking allowed values (enum).
457
+ # @param [Object] allocation_method Object to be assigned
458
+ def allocation_method=(allocation_method)
459
+ validator = EnumAttributeValidator.new('String', ['select', 'create'])
460
+ unless validator.valid?(allocation_method)
461
+ fail ArgumentError, 'invalid value for "allocation_method", must be one of #{validator.allowable_values}.'
462
+ end
463
+ @allocation_method = allocation_method
464
+ end
465
+
466
+ # Custom attribute writer method checking allowed values (enum).
467
+ # @param [Object] allocation_priority Object to be assigned
468
+ def allocation_priority=(allocation_priority)
469
+ validator = EnumAttributeValidator.new('String', ['goal', 'risk'])
470
+ unless validator.valid?(allocation_priority)
471
+ fail ArgumentError, 'invalid value for "allocation_priority", must be one of #{validator.allowable_values}.'
472
+ end
473
+ @allocation_priority = allocation_priority
474
+ end
475
+
476
+ # Custom attribute writer method with validation
477
+ # @param [Object] conf_tgt Value to be assigned
478
+ def conf_tgt=(conf_tgt)
479
+ if !conf_tgt.nil? && conf_tgt > 1
480
+ fail ArgumentError, 'invalid value for "conf_tgt", must be smaller than or equal to 1.'
481
+ end
482
+
483
+ if !conf_tgt.nil? && conf_tgt < 0
484
+ fail ArgumentError, 'invalid value for "conf_tgt", must be greater than or equal to 0.'
485
+ end
486
+
487
+ @conf_tgt = conf_tgt
488
+ end
489
+
490
+ # Custom attribute writer method with validation
491
+ # @param [Object] trading_days_per_year Value to be assigned
492
+ def trading_days_per_year=(trading_days_per_year)
493
+ if !trading_days_per_year.nil? && trading_days_per_year > 365
494
+ fail ArgumentError, 'invalid value for "trading_days_per_year", must be smaller than or equal to 365.'
495
+ end
496
+
497
+ if !trading_days_per_year.nil? && trading_days_per_year < 1
498
+ fail ArgumentError, 'invalid value for "trading_days_per_year", must be greater than or equal to 1.'
499
+ end
500
+
501
+ @trading_days_per_year = trading_days_per_year
502
+ end
503
+
504
+ # Custom attribute writer method with validation
505
+ # @param [Object] thresh Value to be assigned
506
+ def thresh=(thresh)
507
+ if !thresh.nil? && thresh < 0
508
+ fail ArgumentError, 'invalid value for "thresh", must be greater than or equal to 0.'
509
+ end
510
+
511
+ @thresh = thresh
512
+ end
513
+
514
+ # Custom attribute writer method with validation
515
+ # @param [Object] withdrawal_tax Value to be assigned
516
+ def withdrawal_tax=(withdrawal_tax)
517
+ if !withdrawal_tax.nil? && withdrawal_tax > 1
518
+ fail ArgumentError, 'invalid value for "withdrawal_tax", must be smaller than or equal to 1.'
519
+ end
520
+
521
+ if !withdrawal_tax.nil? && withdrawal_tax < 0
522
+ fail ArgumentError, 'invalid value for "withdrawal_tax", must be greater than or equal to 0.'
523
+ end
524
+
525
+ @withdrawal_tax = withdrawal_tax
526
+ end
527
+
528
+ # Custom attribute writer method checking allowed values (enum).
529
+ # @param [Object] market_data_source Object to be assigned
530
+ def market_data_source=(market_data_source)
531
+ validator = EnumAttributeValidator.new('String', ['nucleus', 'integration'])
532
+ unless validator.valid?(market_data_source)
533
+ fail ArgumentError, 'invalid value for "market_data_source", must be one of #{validator.allowable_values}.'
534
+ end
535
+ @market_data_source = market_data_source
536
+ end
537
+
538
+ # Custom attribute writer method checking allowed values (enum).
539
+ # @param [Object] thresh_type Object to be assigned
540
+ def thresh_type=(thresh_type)
541
+ validator = EnumAttributeValidator.new('String', ['amnt', 'perc'])
542
+ unless validator.valid?(thresh_type)
543
+ fail ArgumentError, 'invalid value for "thresh_type", must be one of #{validator.allowable_values}.'
544
+ end
545
+ @thresh_type = thresh_type
546
+ end
547
+
548
+ # Custom attribute writer method checking allowed values (enum).
549
+ # @param [Object] horizon_frequency Object to be assigned
550
+ def horizon_frequency=(horizon_frequency)
551
+ validator = EnumAttributeValidator.new('String', ['year', 'six_months', 'quarter', 'month', 'two_weeks', 'week', 'day'])
552
+ unless validator.valid?(horizon_frequency)
553
+ fail ArgumentError, 'invalid value for "horizon_frequency", must be one of #{validator.allowable_values}.'
554
+ end
555
+ @horizon_frequency = horizon_frequency
556
+ end
557
+
558
+ # Custom attribute writer method with validation
559
+ # @param [Object] horizon Value to be assigned
560
+ def horizon=(horizon)
561
+ if !horizon.nil? && horizon > 350
562
+ fail ArgumentError, 'invalid value for "horizon", must be smaller than or equal to 350.'
563
+ end
564
+
565
+ if !horizon.nil? && horizon < 0
566
+ fail ArgumentError, 'invalid value for "horizon", must be greater than or equal to 0.'
567
+ end
568
+
569
+ @horizon = horizon
570
+ end
571
+
572
+ # Custom attribute writer method with validation
573
+ # @param [Object] curr_inv Value to be assigned
574
+ def curr_inv=(curr_inv)
575
+ if !curr_inv.nil? && curr_inv < 0
576
+ fail ArgumentError, 'invalid value for "curr_inv", must be greater than or equal to 0.'
577
+ end
578
+
579
+ @curr_inv = curr_inv
580
+ end
581
+
582
+ # Checks equality by comparing each attribute.
583
+ # @param [Object] Object to be compared
584
+ def ==(o)
585
+ return true if self.equal?(o)
586
+ self.class == o.class &&
587
+ recommendation_config == o.recommendation_config &&
588
+ compounding_rate == o.compounding_rate &&
589
+ risk_score == o.risk_score &&
590
+ recommend_type == o.recommend_type &&
591
+ create_log == o.create_log &&
592
+ goal_config == o.goal_config &&
593
+ n == o.n &&
594
+ allocation_method == o.allocation_method &&
595
+ allocation_priority == o.allocation_priority &&
596
+ remove_outliers == o.remove_outliers &&
597
+ adjust_for_compounding == o.adjust_for_compounding &&
598
+ goal_id == o.goal_id &&
599
+ conf_tgt == o.conf_tgt &&
600
+ trading_days_per_year == o.trading_days_per_year &&
601
+ use_proxy_data == o.use_proxy_data &&
602
+ thresh == o.thresh &&
603
+ withdrawal_tax == o.withdrawal_tax &&
604
+ client_id == o.client_id &&
605
+ opt_config == o.opt_config &&
606
+ market_data_source == o.market_data_source &&
607
+ thresh_type == o.thresh_type &&
608
+ horizon_frequency == o.horizon_frequency &&
609
+ horizon == o.horizon &&
610
+ allocations == o.allocations &&
611
+ curr_inv == o.curr_inv &&
612
+ deposit_config == o.deposit_config
613
+ end
614
+
615
+ # @see the `==` method
616
+ # @param [Object] Object to be compared
617
+ def eql?(o)
618
+ self == o
619
+ end
620
+
621
+ # Calculates hash code according to all attributes.
622
+ # @return [Fixnum] Hash code
623
+ def hash
624
+ [recommendation_config, compounding_rate, risk_score, recommend_type, create_log, goal_config, n, allocation_method, allocation_priority, remove_outliers, adjust_for_compounding, goal_id, conf_tgt, trading_days_per_year, use_proxy_data, thresh, withdrawal_tax, client_id, opt_config, market_data_source, thresh_type, horizon_frequency, horizon, allocations, curr_inv, deposit_config].hash
625
+ end
626
+
627
+ # Builds the object from hash
628
+ # @param [Hash] attributes Model attributes in the form of hash
629
+ # @return [Object] Returns the model itself
630
+ def build_from_hash(attributes)
631
+ return nil unless attributes.is_a?(Hash)
632
+ self.class.swagger_types.each_pair do |key, type|
633
+ if type =~ /\AArray<(.*)>/i
634
+ # check to ensure the input is an array given that the attribute
635
+ # is documented as an array but the input is not
636
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
637
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
638
+ end
639
+ elsif !attributes[self.class.attribute_map[key]].nil?
640
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
641
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
642
+ end
643
+
644
+ self
645
+ end
646
+ # Deserializes the data based on type
647
+ # @param string type Data type
648
+ # @param string value Value to be deserialized
649
+ # @return [Object] Deserialized data
650
+ def _deserialize(type, value)
651
+ case type.to_sym
652
+ when :DateTime
653
+ value
654
+ when :Date
655
+ value
656
+ when :String
657
+ value.to_s
658
+ when :Integer
659
+ value.to_i
660
+ when :Float
661
+ value.to_f
662
+ when :BOOLEAN
663
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
664
+ true
665
+ else
666
+ false
667
+ end
668
+ when :Object
669
+ # generic object (usually a Hash), return directly
670
+ value
671
+ when /\AArray<(?<inner_type>.+)>\z/
672
+ inner_type = Regexp.last_match[:inner_type]
673
+ value.map { |v| _deserialize(inner_type, v) }
674
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
675
+ k_type = Regexp.last_match[:k_type]
676
+ v_type = Regexp.last_match[:v_type]
677
+ {}.tap do |hash|
678
+ value.each do |k, v|
679
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
680
+ end
681
+ end
682
+ else # model
683
+ temp_model = ProtonApi.const_get(type).new
684
+ temp_model.build_from_hash(value)
685
+ end
686
+ end
687
+ # Returns the string representation of the object
688
+ # @return [String] String presentation of the object
689
+ def to_s
690
+ to_hash.to_s
691
+ end
692
+
693
+ # to_body is an alias to to_hash (backward compatibility)
694
+ # @return [Hash] Returns the object in the form of hash
695
+ def to_body
696
+ to_hash
697
+ end
698
+
699
+ # Returns the object in the form of hash
700
+ # @return [Hash] Returns the object in the form of hash
701
+ def to_hash
702
+ hash = {}
703
+ self.class.attribute_map.each_pair do |attr, param|
704
+ value = self.send(attr)
705
+ next if value.nil?
706
+ hash[param] = _to_hash(value)
707
+ end
708
+ hash
709
+ end
710
+ # Outputs non-array value in the form of hash
711
+ # For object, use to_hash. Otherwise, just return the value
712
+ # @param [Object] value Any valid value
713
+ # @return [Hash] Returns the value in the form of hash
714
+ def _to_hash(value)
715
+ if value.is_a?(Array)
716
+ value.compact.map { |v| _to_hash(v) }
717
+ elsif value.is_a?(Hash)
718
+ {}.tap do |hash|
719
+ value.each { |k, v| hash[k] = _to_hash(v) }
720
+ end
721
+ elsif value.respond_to? :to_hash
722
+ value.to_hash
723
+ else
724
+ value
725
+ end
726
+ end
727
+
728
+ end
729
+ end