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