proton_api 1.8.0

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 (292) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +7 -0
  3. data/README.md +246 -0
  4. data/Rakefile +8 -0
  5. data/docs/AccumulationGoalDepositConfig.md +14 -0
  6. data/docs/AnnuitiesApi.md +344 -0
  7. data/docs/AnnuityCalculatorAccumulationHorizonRequest.md +19 -0
  8. data/docs/AnnuityCalculatorAnnuityAmountRequest.md +19 -0
  9. data/docs/AnnuityCalculatorDecumulationHorizonRequest.md +19 -0
  10. data/docs/AnnuityCalculatorDepositAmountRequest.md +19 -0
  11. data/docs/AnnuityCalculatorInitialBalanceRequest.md +19 -0
  12. data/docs/AnnuityDepositSchedule.md +10 -0
  13. data/docs/BacktestRequest.md +17 -0
  14. data/docs/BeneficiaryBequestConfig.md +10 -0
  15. data/docs/BudgetAggregationAccount.md +8 -0
  16. data/docs/BudgetCalculatorRequest.md +16 -0
  17. data/docs/BudgetComponent.md +10 -0
  18. data/docs/BudgetDetails.md +17 -0
  19. data/docs/BusinessFinancialHealthCheckRequest.md +22 -0
  20. data/docs/BusinessFinancialManagementApi.md +288 -0
  21. data/docs/BusinessInvoiceAnalysisRequest.md +20 -0
  22. data/docs/CalculatorDepositSchedule.md +9 -0
  23. data/docs/CalculatorDepositSchedule1.md +10 -0
  24. data/docs/CardLimitCheckRequest.md +9 -0
  25. data/docs/CardTransactionAuthorizationRequest.md +19 -0
  26. data/docs/CardsApi.md +120 -0
  27. data/docs/CashAnalysisRequest.md +17 -0
  28. data/docs/CashFlowAnalysisRequest.md +20 -0
  29. data/docs/ChildrenEducationConfig.md +9 -0
  30. data/docs/CustomerAnalysisRequest.md +17 -0
  31. data/docs/DecumulationGoalDepositConfig.md +14 -0
  32. data/docs/DimensionalRiskScoreRequest.md +16 -0
  33. data/docs/DiversificationScoreRequest.md +19 -0
  34. data/docs/EducationCalculatorAnnualCostRequest.md +18 -0
  35. data/docs/EducationCalculatorDepositAmountRequest.md +19 -0
  36. data/docs/EducationCalculatorPercentCoveredRequest.md +18 -0
  37. data/docs/EducationConfig.md +10 -0
  38. data/docs/EmergencyFundCalculatorRequest.md +24 -0
  39. data/docs/EventStudyRequest.md +18 -0
  40. data/docs/FeeAnalysisRequest.md +13 -0
  41. data/docs/FinancialHealthApi.md +232 -0
  42. data/docs/FinancialHealthCheckRequest.md +17 -0
  43. data/docs/FinancialPictureRequest.md +16 -0
  44. data/docs/FinancialPlanningApi.md +680 -0
  45. data/docs/FinancialStatementAnalysisRequest.md +22 -0
  46. data/docs/GoalAccumulationAllocationRequest.md +33 -0
  47. data/docs/GoalAccumulationRecommendationRequest.md +28 -0
  48. data/docs/GoalAccumulationStatusRequest.md +28 -0
  49. data/docs/GoalConfig.md +9 -0
  50. data/docs/GoalDecumulationAllocationRequest.md +34 -0
  51. data/docs/GoalDecumulationRecommendationRequest.md +29 -0
  52. data/docs/GoalDecumulationStatusRequest.md +29 -0
  53. data/docs/GoalWithdrawalConfig.md +14 -0
  54. data/docs/GoalsApi.md +344 -0
  55. data/docs/GuaranteedRateBenefit.md +11 -0
  56. data/docs/IncomeConfig.md +10 -0
  57. data/docs/LifeInsuranceApi.md +64 -0
  58. data/docs/LifeInsuranceNeedsCalculatorRequest.md +22 -0
  59. data/docs/MonteCarloRequest.md +29 -0
  60. data/docs/MortgageCalculatorDownPaymentRequest.md +11 -0
  61. data/docs/MortgageCalculatorHomePriceRequest.md +11 -0
  62. data/docs/MortgageCalculatorPeriodicPaymentRequest.md +11 -0
  63. data/docs/MvoRequest.md +18 -0
  64. data/docs/OptConfig.md +14 -0
  65. data/docs/OptConfig1.md +12 -0
  66. data/docs/Periods.md +9 -0
  67. data/docs/PersonalFinancialManagementApi.md +288 -0
  68. data/docs/PortfolioConstructionApi.md +64 -0
  69. data/docs/PortfolioManagementApi.md +64 -0
  70. data/docs/PortfolioOptimizationScoreRequest.md +21 -0
  71. data/docs/PortfolioWhatIfRequest.md +21 -0
  72. data/docs/PurchaseCalculatorAmountRequest.md +16 -0
  73. data/docs/PurchaseCalculatorDepositAmountRequest.md +17 -0
  74. data/docs/PurchaseCalculatorHorizonRequest.md +15 -0
  75. data/docs/RatioTargets.md +13 -0
  76. data/docs/RatioTargets1.md +13 -0
  77. data/docs/RebalancingSignalRequest.md +13 -0
  78. data/docs/RecommendationConfig.md +15 -0
  79. data/docs/RecommendationConfig1.md +14 -0
  80. data/docs/RecurringTransactionAnalysisRequest.md +19 -0
  81. data/docs/RetirementCalculatorDepositAmountRequest.md +20 -0
  82. data/docs/RetirementCalculatorExpensesRequest.md +19 -0
  83. data/docs/RetirementCalculatorPercentCoveredRequest.md +19 -0
  84. data/docs/RiskAllocationRequest.md +14 -0
  85. data/docs/RiskScoreRequest.md +13 -0
  86. data/docs/RiskScoringApi.md +176 -0
  87. data/docs/SavingsCalculatorRequest.md +17 -0
  88. data/docs/SavingsDepositSchedule.md +11 -0
  89. data/docs/ScenarioAnalysisRequest.md +22 -0
  90. data/docs/SensitivityAnalysisRequest.md +22 -0
  91. data/docs/SensitivityFactor.md +11 -0
  92. data/docs/Settings.md +13 -0
  93. data/docs/SimulationsApi.md +400 -0
  94. data/docs/VariableAnnuityRequest.md +34 -0
  95. data/docs/WConfig.md +12 -0
  96. data/docs/WConfig1.md +12 -0
  97. data/git_push.sh +55 -0
  98. data/lib/proton_api.rb +132 -0
  99. data/lib/proton_api/api/annuities_api.rb +347 -0
  100. data/lib/proton_api/api/business_financial_management_api.rb +293 -0
  101. data/lib/proton_api/api/cards_api.rb +131 -0
  102. data/lib/proton_api/api/financial_health_api.rb +239 -0
  103. data/lib/proton_api/api/financial_planning_api.rb +671 -0
  104. data/lib/proton_api/api/goals_api.rb +347 -0
  105. data/lib/proton_api/api/life_insurance_api.rb +77 -0
  106. data/lib/proton_api/api/personal_financial_management_api.rb +293 -0
  107. data/lib/proton_api/api/portfolio_construction_api.rb +77 -0
  108. data/lib/proton_api/api/portfolio_management_api.rb +77 -0
  109. data/lib/proton_api/api/risk_scoring_api.rb +185 -0
  110. data/lib/proton_api/api/simulations_api.rb +401 -0
  111. data/lib/proton_api/api_client.rb +391 -0
  112. data/lib/proton_api/api_error.rb +38 -0
  113. data/lib/proton_api/auth_configuration.rb +177 -0
  114. data/lib/proton_api/configuration.rb +209 -0
  115. data/lib/proton_api/models/accumulation_goal_deposit_config.rb +338 -0
  116. data/lib/proton_api/models/annuity_calculator_accumulation_horizon_request.rb +462 -0
  117. data/lib/proton_api/models/annuity_calculator_annuity_amount_request.rb +464 -0
  118. data/lib/proton_api/models/annuity_calculator_decumulation_horizon_request.rb +462 -0
  119. data/lib/proton_api/models/annuity_calculator_deposit_amount_request.rb +471 -0
  120. data/lib/proton_api/models/annuity_calculator_initial_balance_request.rb +471 -0
  121. data/lib/proton_api/models/annuity_deposit_schedule.rb +257 -0
  122. data/lib/proton_api/models/backtest_request.rb +298 -0
  123. data/lib/proton_api/models/beneficiary_bequest_config.rb +260 -0
  124. data/lib/proton_api/models/budget_aggregation_account.rb +189 -0
  125. data/lib/proton_api/models/budget_calculator_request.rb +315 -0
  126. data/lib/proton_api/models/budget_component.rb +231 -0
  127. data/lib/proton_api/models/budget_details.rb +340 -0
  128. data/lib/proton_api/models/business_financial_health_check_request.rb +478 -0
  129. data/lib/proton_api/models/business_invoice_analysis_request.rb +355 -0
  130. data/lib/proton_api/models/calculator_deposit_schedule.rb +231 -0
  131. data/lib/proton_api/models/calculator_deposit_schedule1.rb +257 -0
  132. data/lib/proton_api/models/card_limit_check_request.rb +203 -0
  133. data/lib/proton_api/models/card_transaction_authorization_request.rb +359 -0
  134. data/lib/proton_api/models/cash_analysis_request.rb +321 -0
  135. data/lib/proton_api/models/cash_flow_analysis_request.rb +338 -0
  136. data/lib/proton_api/models/children_education_config.rb +224 -0
  137. data/lib/proton_api/models/customer_analysis_request.rb +286 -0
  138. data/lib/proton_api/models/decumulation_goal_deposit_config.rb +338 -0
  139. data/lib/proton_api/models/dimensional_risk_score_request.rb +285 -0
  140. data/lib/proton_api/models/diversification_score_request.rb +327 -0
  141. data/lib/proton_api/models/education_calculator_annual_cost_request.rb +453 -0
  142. data/lib/proton_api/models/education_calculator_deposit_amount_request.rb +486 -0
  143. data/lib/proton_api/models/education_calculator_percent_covered_request.rb +451 -0
  144. data/lib/proton_api/models/education_config.rb +274 -0
  145. data/lib/proton_api/models/emergency_fund_calculator_request.rb +564 -0
  146. data/lib/proton_api/models/event_study_request.rb +320 -0
  147. data/lib/proton_api/models/fee_analysis_request.rb +231 -0
  148. data/lib/proton_api/models/financial_health_check_request.rb +387 -0
  149. data/lib/proton_api/models/financial_picture_request.rb +269 -0
  150. data/lib/proton_api/models/financial_statement_analysis_request.rb +455 -0
  151. data/lib/proton_api/models/goal_accumulation_allocation_request.rb +732 -0
  152. data/lib/proton_api/models/goal_accumulation_recommendation_request.rb +625 -0
  153. data/lib/proton_api/models/goal_accumulation_status_request.rb +625 -0
  154. data/lib/proton_api/models/goal_config.rb +225 -0
  155. data/lib/proton_api/models/goal_decumulation_allocation_request.rb +767 -0
  156. data/lib/proton_api/models/goal_decumulation_recommendation_request.rb +660 -0
  157. data/lib/proton_api/models/goal_decumulation_status_request.rb +660 -0
  158. data/lib/proton_api/models/goal_withdrawal_config.rb +338 -0
  159. data/lib/proton_api/models/guaranteed_rate_benefit.rb +275 -0
  160. data/lib/proton_api/models/income_config.rb +269 -0
  161. data/lib/proton_api/models/life_insurance_needs_calculator_request.rb +518 -0
  162. data/lib/proton_api/models/monte_carlo_request.rb +507 -0
  163. data/lib/proton_api/models/mortgage_calculator_down_payment_request.rb +302 -0
  164. data/lib/proton_api/models/mortgage_calculator_home_price_request.rb +302 -0
  165. data/lib/proton_api/models/mortgage_calculator_periodic_payment_request.rb +302 -0
  166. data/lib/proton_api/models/mvo_request.rb +369 -0
  167. data/lib/proton_api/models/opt_config.rb +303 -0
  168. data/lib/proton_api/models/opt_config1.rb +263 -0
  169. data/lib/proton_api/models/periods.rb +223 -0
  170. data/lib/proton_api/models/portfolio_optimization_score_request.rb +359 -0
  171. data/lib/proton_api/models/portfolio_what_if_request.rb +354 -0
  172. data/lib/proton_api/models/purchase_calculator_amount_request.rb +404 -0
  173. data/lib/proton_api/models/purchase_calculator_deposit_amount_request.rb +437 -0
  174. data/lib/proton_api/models/purchase_calculator_horizon_request.rb +359 -0
  175. data/lib/proton_api/models/ratio_targets.rb +331 -0
  176. data/lib/proton_api/models/ratio_targets1.rb +331 -0
  177. data/lib/proton_api/models/rebalancing_signal_request.rb +241 -0
  178. data/lib/proton_api/models/recommendation_config.rb +360 -0
  179. data/lib/proton_api/models/recommendation_config1.rb +349 -0
  180. data/lib/proton_api/models/recurring_transaction_analysis_request.rb +370 -0
  181. data/lib/proton_api/models/retirement_calculator_deposit_amount_request.rb +512 -0
  182. data/lib/proton_api/models/retirement_calculator_expenses_request.rb +479 -0
  183. data/lib/proton_api/models/retirement_calculator_percent_covered_request.rb +477 -0
  184. data/lib/proton_api/models/risk_allocation_request.rb +319 -0
  185. data/lib/proton_api/models/risk_score_request.rb +242 -0
  186. data/lib/proton_api/models/savings_calculator_request.rb +398 -0
  187. data/lib/proton_api/models/savings_deposit_schedule.rb +279 -0
  188. data/lib/proton_api/models/scenario_analysis_request.rb +404 -0
  189. data/lib/proton_api/models/sensitivity_analysis_request.rb +402 -0
  190. data/lib/proton_api/models/sensitivity_factor.rb +281 -0
  191. data/lib/proton_api/models/settings.rb +290 -0
  192. data/lib/proton_api/models/variable_annuity_request.rb +703 -0
  193. data/lib/proton_api/models/w_config.rb +385 -0
  194. data/lib/proton_api/models/w_config1.rb +350 -0
  195. data/lib/proton_api/version.rb +15 -0
  196. data/proton_api.gemspec +46 -0
  197. data/spec/api/annuities_api_spec.rb +107 -0
  198. data/spec/api/business_financial_management_api_spec.rb +95 -0
  199. data/spec/api/cards_api_spec.rb +59 -0
  200. data/spec/api/financial_health_api_spec.rb +83 -0
  201. data/spec/api/financial_planning_api_spec.rb +179 -0
  202. data/spec/api/goals_api_spec.rb +107 -0
  203. data/spec/api/life_insurance_api_spec.rb +47 -0
  204. data/spec/api/personal_financial_management_api_spec.rb +95 -0
  205. data/spec/api/portfolio_construction_api_spec.rb +47 -0
  206. data/spec/api/portfolio_management_api_spec.rb +47 -0
  207. data/spec/api/risk_scoring_api_spec.rb +71 -0
  208. data/spec/api/simulations_api_spec.rb +119 -0
  209. data/spec/api_client_spec.rb +243 -0
  210. data/spec/configuration_spec.rb +42 -0
  211. data/spec/models/accumulation_goal_deposit_config_spec.rb +89 -0
  212. data/spec/models/annuity_calculator_accumulation_horizon_request_spec.rb +111 -0
  213. data/spec/models/annuity_calculator_annuity_amount_request_spec.rb +111 -0
  214. data/spec/models/annuity_calculator_decumulation_horizon_request_spec.rb +111 -0
  215. data/spec/models/annuity_calculator_deposit_amount_request_spec.rb +111 -0
  216. data/spec/models/annuity_calculator_initial_balance_request_spec.rb +111 -0
  217. data/spec/models/annuity_deposit_schedule_spec.rb +57 -0
  218. data/spec/models/backtest_request_spec.rb +95 -0
  219. data/spec/models/beneficiary_bequest_config_spec.rb +53 -0
  220. data/spec/models/budget_aggregation_account_spec.rb +41 -0
  221. data/spec/models/budget_calculator_request_spec.rb +93 -0
  222. data/spec/models/budget_component_spec.rb +53 -0
  223. data/spec/models/budget_details_spec.rb +99 -0
  224. data/spec/models/business_financial_health_check_request_spec.rb +137 -0
  225. data/spec/models/business_invoice_analysis_request_spec.rb +117 -0
  226. data/spec/models/calculator_deposit_schedule1_spec.rb +57 -0
  227. data/spec/models/calculator_deposit_schedule_spec.rb +51 -0
  228. data/spec/models/card_limit_check_request_spec.rb +47 -0
  229. data/spec/models/card_transaction_authorization_request_spec.rb +115 -0
  230. data/spec/models/cash_analysis_request_spec.rb +103 -0
  231. data/spec/models/cash_flow_analysis_request_spec.rb +117 -0
  232. data/spec/models/children_education_config_spec.rb +47 -0
  233. data/spec/models/customer_analysis_request_spec.rb +95 -0
  234. data/spec/models/decumulation_goal_deposit_config_spec.rb +89 -0
  235. data/spec/models/dimensional_risk_score_request_spec.rb +89 -0
  236. data/spec/models/diversification_score_request_spec.rb +111 -0
  237. data/spec/models/education_calculator_annual_cost_request_spec.rb +101 -0
  238. data/spec/models/education_calculator_deposit_amount_request_spec.rb +107 -0
  239. data/spec/models/education_calculator_percent_covered_request_spec.rb +101 -0
  240. data/spec/models/education_config_spec.rb +53 -0
  241. data/spec/models/emergency_fund_calculator_request_spec.rb +141 -0
  242. data/spec/models/event_study_request_spec.rb +109 -0
  243. data/spec/models/fee_analysis_request_spec.rb +71 -0
  244. data/spec/models/financial_health_check_request_spec.rb +95 -0
  245. data/spec/models/financial_picture_request_spec.rb +89 -0
  246. data/spec/models/financial_statement_analysis_request_spec.rb +149 -0
  247. data/spec/models/goal_accumulation_allocation_request_spec.rb +215 -0
  248. data/spec/models/goal_accumulation_recommendation_request_spec.rb +173 -0
  249. data/spec/models/goal_accumulation_status_request_spec.rb +173 -0
  250. data/spec/models/goal_config_spec.rb +47 -0
  251. data/spec/models/goal_decumulation_allocation_request_spec.rb +221 -0
  252. data/spec/models/goal_decumulation_recommendation_request_spec.rb +179 -0
  253. data/spec/models/goal_decumulation_status_request_spec.rb +179 -0
  254. data/spec/models/goal_withdrawal_config_spec.rb +89 -0
  255. data/spec/models/guaranteed_rate_benefit_spec.rb +59 -0
  256. data/spec/models/income_config_spec.rb +53 -0
  257. data/spec/models/life_insurance_needs_calculator_request_spec.rb +125 -0
  258. data/spec/models/monte_carlo_request_spec.rb +179 -0
  259. data/spec/models/mortgage_calculator_down_payment_request_spec.rb +59 -0
  260. data/spec/models/mortgage_calculator_home_price_request_spec.rb +59 -0
  261. data/spec/models/mortgage_calculator_periodic_payment_request_spec.rb +59 -0
  262. data/spec/models/mvo_request_spec.rb +113 -0
  263. data/spec/models/opt_config1_spec.rb +69 -0
  264. data/spec/models/opt_config_spec.rb +81 -0
  265. data/spec/models/periods_spec.rb +47 -0
  266. data/spec/models/portfolio_optimization_score_request_spec.rb +127 -0
  267. data/spec/models/portfolio_what_if_request_spec.rb +123 -0
  268. data/spec/models/purchase_calculator_amount_request_spec.rb +93 -0
  269. data/spec/models/purchase_calculator_deposit_amount_request_spec.rb +99 -0
  270. data/spec/models/purchase_calculator_horizon_request_spec.rb +83 -0
  271. data/spec/models/ratio_targets1_spec.rb +71 -0
  272. data/spec/models/ratio_targets_spec.rb +71 -0
  273. data/spec/models/rebalancing_signal_request_spec.rb +71 -0
  274. data/spec/models/recommendation_config1_spec.rb +77 -0
  275. data/spec/models/recommendation_config_spec.rb +83 -0
  276. data/spec/models/recurring_transaction_analysis_request_spec.rb +111 -0
  277. data/spec/models/retirement_calculator_deposit_amount_request_spec.rb +113 -0
  278. data/spec/models/retirement_calculator_expenses_request_spec.rb +107 -0
  279. data/spec/models/retirement_calculator_percent_covered_request_spec.rb +107 -0
  280. data/spec/models/risk_allocation_request_spec.rb +85 -0
  281. data/spec/models/risk_score_request_spec.rb +71 -0
  282. data/spec/models/savings_calculator_request_spec.rb +99 -0
  283. data/spec/models/savings_deposit_schedule_spec.rb +63 -0
  284. data/spec/models/scenario_analysis_request_spec.rb +133 -0
  285. data/spec/models/sensitivity_analysis_request_spec.rb +133 -0
  286. data/spec/models/sensitivity_factor_spec.rb +59 -0
  287. data/spec/models/settings_spec.rb +79 -0
  288. data/spec/models/variable_annuity_request_spec.rb +209 -0
  289. data/spec/models/w_config1_spec.rb +65 -0
  290. data/spec/models/w_config_spec.rb +65 -0
  291. data/spec/spec_helper.rb +111 -0
  292. metadata +628 -0
@@ -0,0 +1,625 @@
1
+ =begin
2
+ #Hydrogen Proton API
3
+
4
+ #Financial engineering module of Hydrogen Atom
5
+
6
+ OpenAPI spec version: 1.8.0
7
+ Contact: info@hydrogenplatform.com
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.4.17
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module ProtonApi
16
+ class GoalAccumulationRecommendationRequest
17
+ attr_accessor :thresh_type
18
+
19
+ attr_accessor :goal_id
20
+
21
+ attr_accessor :client_id
22
+
23
+ attr_accessor :conf_tgt
24
+
25
+ attr_accessor :remove_outliers
26
+
27
+ attr_accessor :p_ret
28
+
29
+ attr_accessor :compounding_rate
30
+
31
+ attr_accessor :adjust_for_compounding
32
+
33
+ attr_accessor :deposit_config
34
+
35
+ attr_accessor :thresh
36
+
37
+ attr_accessor :horizon_frequency
38
+
39
+ attr_accessor :recommendation_config
40
+
41
+ attr_accessor :create_log
42
+
43
+ attr_accessor :withdrawal_tax
44
+
45
+ attr_accessor :goal_config
46
+
47
+ attr_accessor :trading_days_per_year
48
+
49
+ attr_accessor :n
50
+
51
+ attr_accessor :p_risk
52
+
53
+ attr_accessor :horizon
54
+
55
+ attr_accessor :recommend_type
56
+
57
+ attr_accessor :curr_inv
58
+
59
+ class EnumAttributeValidator
60
+ attr_reader :datatype
61
+ attr_reader :allowable_values
62
+
63
+ def initialize(datatype, allowable_values)
64
+ @allowable_values = allowable_values.map do |value|
65
+ case datatype.to_s
66
+ when /Integer/i
67
+ value.to_i
68
+ when /Float/i
69
+ value.to_f
70
+ else
71
+ value
72
+ end
73
+ end
74
+ end
75
+
76
+ def valid?(value)
77
+ !value || allowable_values.include?(value)
78
+ end
79
+ end
80
+
81
+ # Attribute mapping from ruby-style variable name to JSON key.
82
+ def self.attribute_map
83
+ {
84
+ :'thresh_type' => :'thresh_type',
85
+ :'goal_id' => :'goal_id',
86
+ :'client_id' => :'client_id',
87
+ :'conf_tgt' => :'conf_tgt',
88
+ :'remove_outliers' => :'remove_outliers',
89
+ :'p_ret' => :'p_ret',
90
+ :'compounding_rate' => :'compounding_rate',
91
+ :'adjust_for_compounding' => :'adjust_for_compounding',
92
+ :'deposit_config' => :'deposit_config',
93
+ :'thresh' => :'thresh',
94
+ :'horizon_frequency' => :'horizon_frequency',
95
+ :'recommendation_config' => :'recommendation_config',
96
+ :'create_log' => :'create_log',
97
+ :'withdrawal_tax' => :'withdrawal_tax',
98
+ :'goal_config' => :'goal_config',
99
+ :'trading_days_per_year' => :'trading_days_per_year',
100
+ :'n' => :'n',
101
+ :'p_risk' => :'p_risk',
102
+ :'horizon' => :'horizon',
103
+ :'recommend_type' => :'recommend_type',
104
+ :'curr_inv' => :'curr_inv'
105
+ }
106
+ end
107
+
108
+ # Attribute type mapping.
109
+ def self.swagger_types
110
+ {
111
+ :'thresh_type' => :'String',
112
+ :'goal_id' => :'String',
113
+ :'client_id' => :'String',
114
+ :'conf_tgt' => :'Float',
115
+ :'remove_outliers' => :'BOOLEAN',
116
+ :'p_ret' => :'Array<Float>',
117
+ :'compounding_rate' => :'Float',
118
+ :'adjust_for_compounding' => :'BOOLEAN',
119
+ :'deposit_config' => :'Array<AccumulationGoalDepositConfig>',
120
+ :'thresh' => :'Float',
121
+ :'horizon_frequency' => :'String',
122
+ :'recommendation_config' => :'RecommendationConfig1',
123
+ :'create_log' => :'BOOLEAN',
124
+ :'withdrawal_tax' => :'Float',
125
+ :'goal_config' => :'GoalConfig',
126
+ :'trading_days_per_year' => :'Integer',
127
+ :'n' => :'Integer',
128
+ :'p_risk' => :'Array<Float>',
129
+ :'horizon' => :'Integer',
130
+ :'recommend_type' => :'String',
131
+ :'curr_inv' => :'Float'
132
+ }
133
+ end
134
+
135
+ # Initializes the object
136
+ # @param [Hash] attributes Model attributes in the form of hash
137
+ def initialize(attributes = {})
138
+ return unless attributes.is_a?(Hash)
139
+
140
+ # convert string to symbol for hash key
141
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
142
+
143
+ if attributes.has_key?(:'thresh_type')
144
+ self.thresh_type = attributes[:'thresh_type']
145
+ else
146
+ self.thresh_type = 'perc'
147
+ end
148
+
149
+ if attributes.has_key?(:'goal_id')
150
+ self.goal_id = attributes[:'goal_id']
151
+ end
152
+
153
+ if attributes.has_key?(:'client_id')
154
+ self.client_id = attributes[:'client_id']
155
+ end
156
+
157
+ if attributes.has_key?(:'conf_tgt')
158
+ self.conf_tgt = attributes[:'conf_tgt']
159
+ else
160
+ self.conf_tgt = 0.9
161
+ end
162
+
163
+ if attributes.has_key?(:'remove_outliers')
164
+ self.remove_outliers = attributes[:'remove_outliers']
165
+ else
166
+ self.remove_outliers = true
167
+ end
168
+
169
+ if attributes.has_key?(:'p_ret')
170
+ if (value = attributes[:'p_ret']).is_a?(Array)
171
+ self.p_ret = value
172
+ end
173
+ end
174
+
175
+ if attributes.has_key?(:'compounding_rate')
176
+ self.compounding_rate = attributes[:'compounding_rate']
177
+ else
178
+ self.compounding_rate = 0.0
179
+ end
180
+
181
+ if attributes.has_key?(:'adjust_for_compounding')
182
+ self.adjust_for_compounding = attributes[:'adjust_for_compounding']
183
+ else
184
+ self.adjust_for_compounding = false
185
+ end
186
+
187
+ if attributes.has_key?(:'deposit_config')
188
+ if (value = attributes[:'deposit_config']).is_a?(Array)
189
+ self.deposit_config = value
190
+ end
191
+ end
192
+
193
+ if attributes.has_key?(:'thresh')
194
+ self.thresh = attributes[:'thresh']
195
+ end
196
+
197
+ if attributes.has_key?(:'horizon_frequency')
198
+ self.horizon_frequency = attributes[:'horizon_frequency']
199
+ else
200
+ self.horizon_frequency = 'year'
201
+ end
202
+
203
+ if attributes.has_key?(:'recommendation_config')
204
+ self.recommendation_config = attributes[:'recommendation_config']
205
+ end
206
+
207
+ if attributes.has_key?(:'create_log')
208
+ self.create_log = attributes[:'create_log']
209
+ else
210
+ self.create_log = false
211
+ end
212
+
213
+ if attributes.has_key?(:'withdrawal_tax')
214
+ self.withdrawal_tax = attributes[:'withdrawal_tax']
215
+ else
216
+ self.withdrawal_tax = 0.0
217
+ end
218
+
219
+ if attributes.has_key?(:'goal_config')
220
+ self.goal_config = attributes[:'goal_config']
221
+ end
222
+
223
+ if attributes.has_key?(:'trading_days_per_year')
224
+ self.trading_days_per_year = attributes[:'trading_days_per_year']
225
+ else
226
+ self.trading_days_per_year = 252
227
+ end
228
+
229
+ if attributes.has_key?(:'n')
230
+ self.n = attributes[:'n']
231
+ else
232
+ self.n = 1000
233
+ end
234
+
235
+ if attributes.has_key?(:'p_risk')
236
+ if (value = attributes[:'p_risk']).is_a?(Array)
237
+ self.p_risk = value
238
+ end
239
+ end
240
+
241
+ if attributes.has_key?(:'horizon')
242
+ self.horizon = attributes[:'horizon']
243
+ end
244
+
245
+ if attributes.has_key?(:'recommend_type')
246
+ self.recommend_type = attributes[:'recommend_type']
247
+ else
248
+ self.recommend_type = 'horizon'
249
+ end
250
+
251
+ if attributes.has_key?(:'curr_inv')
252
+ self.curr_inv = attributes[:'curr_inv']
253
+ end
254
+ end
255
+
256
+ # Show invalid properties with the reasons. Usually used together with valid?
257
+ # @return Array for valid properties with the reasons
258
+ def list_invalid_properties
259
+ invalid_properties = Array.new
260
+ if !@conf_tgt.nil? && @conf_tgt > 1
261
+ invalid_properties.push('invalid value for "conf_tgt", must be smaller than or equal to 1.')
262
+ end
263
+
264
+ if !@conf_tgt.nil? && @conf_tgt < 0
265
+ invalid_properties.push('invalid value for "conf_tgt", must be greater than or equal to 0.')
266
+ end
267
+
268
+ if @p_ret.nil?
269
+ invalid_properties.push('invalid value for "p_ret", p_ret cannot be nil.')
270
+ end
271
+
272
+ if !@compounding_rate.nil? && @compounding_rate < -1
273
+ invalid_properties.push('invalid value for "compounding_rate", must be greater than or equal to -1.')
274
+ end
275
+
276
+ if !@thresh.nil? && @thresh < 0
277
+ invalid_properties.push('invalid value for "thresh", must be greater than or equal to 0.')
278
+ end
279
+
280
+ if !@withdrawal_tax.nil? && @withdrawal_tax > 1
281
+ invalid_properties.push('invalid value for "withdrawal_tax", must be smaller than or equal to 1.')
282
+ end
283
+
284
+ if !@withdrawal_tax.nil? && @withdrawal_tax < 0
285
+ invalid_properties.push('invalid value for "withdrawal_tax", must be greater than or equal to 0.')
286
+ end
287
+
288
+ if !@trading_days_per_year.nil? && @trading_days_per_year > 365
289
+ invalid_properties.push('invalid value for "trading_days_per_year", must be smaller than or equal to 365.')
290
+ end
291
+
292
+ if !@trading_days_per_year.nil? && @trading_days_per_year < 1
293
+ invalid_properties.push('invalid value for "trading_days_per_year", must be greater than or equal to 1.')
294
+ end
295
+
296
+ if !@n.nil? && @n > 10000
297
+ invalid_properties.push('invalid value for "n", must be smaller than or equal to 10000.')
298
+ end
299
+
300
+ if !@n.nil? && @n < 1
301
+ invalid_properties.push('invalid value for "n", must be greater than or equal to 1.')
302
+ end
303
+
304
+ if @p_risk.nil?
305
+ invalid_properties.push('invalid value for "p_risk", p_risk cannot be nil.')
306
+ end
307
+
308
+ if !@horizon.nil? && @horizon > 350
309
+ invalid_properties.push('invalid value for "horizon", must be smaller than or equal to 350.')
310
+ end
311
+
312
+ if !@horizon.nil? && @horizon < 0
313
+ invalid_properties.push('invalid value for "horizon", must be greater than or equal to 0.')
314
+ end
315
+
316
+ if !@curr_inv.nil? && @curr_inv < 0
317
+ invalid_properties.push('invalid value for "curr_inv", must be greater than or equal to 0.')
318
+ end
319
+
320
+ invalid_properties
321
+ end
322
+
323
+ # Check to see if the all the properties in the model are valid
324
+ # @return true if the model is valid
325
+ def valid?
326
+ thresh_type_validator = EnumAttributeValidator.new('String', ['amnt', 'perc'])
327
+ return false unless thresh_type_validator.valid?(@thresh_type)
328
+ return false if !@conf_tgt.nil? && @conf_tgt > 1
329
+ return false if !@conf_tgt.nil? && @conf_tgt < 0
330
+ return false if @p_ret.nil?
331
+ return false if !@compounding_rate.nil? && @compounding_rate < -1
332
+ return false if !@thresh.nil? && @thresh < 0
333
+ horizon_frequency_validator = EnumAttributeValidator.new('String', ['year', 'six_months', 'quarter', 'month', 'two_weeks', 'week', 'day'])
334
+ return false unless horizon_frequency_validator.valid?(@horizon_frequency)
335
+ return false if !@withdrawal_tax.nil? && @withdrawal_tax > 1
336
+ return false if !@withdrawal_tax.nil? && @withdrawal_tax < 0
337
+ return false if !@trading_days_per_year.nil? && @trading_days_per_year > 365
338
+ return false if !@trading_days_per_year.nil? && @trading_days_per_year < 1
339
+ return false if !@n.nil? && @n > 10000
340
+ return false if !@n.nil? && @n < 1
341
+ return false if @p_risk.nil?
342
+ return false if !@horizon.nil? && @horizon > 350
343
+ return false if !@horizon.nil? && @horizon < 0
344
+ recommend_type_validator = EnumAttributeValidator.new('String', ['recurring', 'one-time', 'combo', 'horizon'])
345
+ return false unless recommend_type_validator.valid?(@recommend_type)
346
+ return false if !@curr_inv.nil? && @curr_inv < 0
347
+ true
348
+ end
349
+
350
+ # Custom attribute writer method checking allowed values (enum).
351
+ # @param [Object] thresh_type Object to be assigned
352
+ def thresh_type=(thresh_type)
353
+ validator = EnumAttributeValidator.new('String', ['amnt', 'perc'])
354
+ unless validator.valid?(thresh_type)
355
+ fail ArgumentError, 'invalid value for "thresh_type", must be one of #{validator.allowable_values}.'
356
+ end
357
+ @thresh_type = thresh_type
358
+ end
359
+
360
+ # Custom attribute writer method with validation
361
+ # @param [Object] conf_tgt Value to be assigned
362
+ def conf_tgt=(conf_tgt)
363
+ if !conf_tgt.nil? && conf_tgt > 1
364
+ fail ArgumentError, 'invalid value for "conf_tgt", must be smaller than or equal to 1.'
365
+ end
366
+
367
+ if !conf_tgt.nil? && conf_tgt < 0
368
+ fail ArgumentError, 'invalid value for "conf_tgt", must be greater than or equal to 0.'
369
+ end
370
+
371
+ @conf_tgt = conf_tgt
372
+ end
373
+
374
+ # Custom attribute writer method with validation
375
+ # @param [Object] compounding_rate Value to be assigned
376
+ def compounding_rate=(compounding_rate)
377
+ if !compounding_rate.nil? && compounding_rate < -1
378
+ fail ArgumentError, 'invalid value for "compounding_rate", must be greater than or equal to -1.'
379
+ end
380
+
381
+ @compounding_rate = compounding_rate
382
+ end
383
+
384
+ # Custom attribute writer method with validation
385
+ # @param [Object] thresh Value to be assigned
386
+ def thresh=(thresh)
387
+ if !thresh.nil? && thresh < 0
388
+ fail ArgumentError, 'invalid value for "thresh", must be greater than or equal to 0.'
389
+ end
390
+
391
+ @thresh = thresh
392
+ end
393
+
394
+ # Custom attribute writer method checking allowed values (enum).
395
+ # @param [Object] horizon_frequency Object to be assigned
396
+ def horizon_frequency=(horizon_frequency)
397
+ validator = EnumAttributeValidator.new('String', ['year', 'six_months', 'quarter', 'month', 'two_weeks', 'week', 'day'])
398
+ unless validator.valid?(horizon_frequency)
399
+ fail ArgumentError, 'invalid value for "horizon_frequency", must be one of #{validator.allowable_values}.'
400
+ end
401
+ @horizon_frequency = horizon_frequency
402
+ end
403
+
404
+ # Custom attribute writer method with validation
405
+ # @param [Object] withdrawal_tax Value to be assigned
406
+ def withdrawal_tax=(withdrawal_tax)
407
+ if !withdrawal_tax.nil? && withdrawal_tax > 1
408
+ fail ArgumentError, 'invalid value for "withdrawal_tax", must be smaller than or equal to 1.'
409
+ end
410
+
411
+ if !withdrawal_tax.nil? && withdrawal_tax < 0
412
+ fail ArgumentError, 'invalid value for "withdrawal_tax", must be greater than or equal to 0.'
413
+ end
414
+
415
+ @withdrawal_tax = withdrawal_tax
416
+ end
417
+
418
+ # Custom attribute writer method with validation
419
+ # @param [Object] trading_days_per_year Value to be assigned
420
+ def trading_days_per_year=(trading_days_per_year)
421
+ if !trading_days_per_year.nil? && trading_days_per_year > 365
422
+ fail ArgumentError, 'invalid value for "trading_days_per_year", must be smaller than or equal to 365.'
423
+ end
424
+
425
+ if !trading_days_per_year.nil? && trading_days_per_year < 1
426
+ fail ArgumentError, 'invalid value for "trading_days_per_year", must be greater than or equal to 1.'
427
+ end
428
+
429
+ @trading_days_per_year = trading_days_per_year
430
+ end
431
+
432
+ # Custom attribute writer method with validation
433
+ # @param [Object] n Value to be assigned
434
+ def n=(n)
435
+ if !n.nil? && n > 10000
436
+ fail ArgumentError, 'invalid value for "n", must be smaller than or equal to 10000.'
437
+ end
438
+
439
+ if !n.nil? && n < 1
440
+ fail ArgumentError, 'invalid value for "n", must be greater than or equal to 1.'
441
+ end
442
+
443
+ @n = n
444
+ end
445
+
446
+ # Custom attribute writer method with validation
447
+ # @param [Object] horizon Value to be assigned
448
+ def horizon=(horizon)
449
+ if !horizon.nil? && horizon > 350
450
+ fail ArgumentError, 'invalid value for "horizon", must be smaller than or equal to 350.'
451
+ end
452
+
453
+ if !horizon.nil? && horizon < 0
454
+ fail ArgumentError, 'invalid value for "horizon", must be greater than or equal to 0.'
455
+ end
456
+
457
+ @horizon = horizon
458
+ end
459
+
460
+ # Custom attribute writer method checking allowed values (enum).
461
+ # @param [Object] recommend_type Object to be assigned
462
+ def recommend_type=(recommend_type)
463
+ validator = EnumAttributeValidator.new('String', ['recurring', 'one-time', 'combo', 'horizon'])
464
+ unless validator.valid?(recommend_type)
465
+ fail ArgumentError, 'invalid value for "recommend_type", must be one of #{validator.allowable_values}.'
466
+ end
467
+ @recommend_type = recommend_type
468
+ end
469
+
470
+ # Custom attribute writer method with validation
471
+ # @param [Object] curr_inv Value to be assigned
472
+ def curr_inv=(curr_inv)
473
+ if !curr_inv.nil? && curr_inv < 0
474
+ fail ArgumentError, 'invalid value for "curr_inv", must be greater than or equal to 0.'
475
+ end
476
+
477
+ @curr_inv = curr_inv
478
+ end
479
+
480
+ # Checks equality by comparing each attribute.
481
+ # @param [Object] Object to be compared
482
+ def ==(o)
483
+ return true if self.equal?(o)
484
+ self.class == o.class &&
485
+ thresh_type == o.thresh_type &&
486
+ goal_id == o.goal_id &&
487
+ client_id == o.client_id &&
488
+ conf_tgt == o.conf_tgt &&
489
+ remove_outliers == o.remove_outliers &&
490
+ p_ret == o.p_ret &&
491
+ compounding_rate == o.compounding_rate &&
492
+ adjust_for_compounding == o.adjust_for_compounding &&
493
+ deposit_config == o.deposit_config &&
494
+ thresh == o.thresh &&
495
+ horizon_frequency == o.horizon_frequency &&
496
+ recommendation_config == o.recommendation_config &&
497
+ create_log == o.create_log &&
498
+ withdrawal_tax == o.withdrawal_tax &&
499
+ goal_config == o.goal_config &&
500
+ trading_days_per_year == o.trading_days_per_year &&
501
+ n == o.n &&
502
+ p_risk == o.p_risk &&
503
+ horizon == o.horizon &&
504
+ recommend_type == o.recommend_type &&
505
+ curr_inv == o.curr_inv
506
+ end
507
+
508
+ # @see the `==` method
509
+ # @param [Object] Object to be compared
510
+ def eql?(o)
511
+ self == o
512
+ end
513
+
514
+ # Calculates hash code according to all attributes.
515
+ # @return [Fixnum] Hash code
516
+ def hash
517
+ [thresh_type, goal_id, client_id, conf_tgt, remove_outliers, p_ret, compounding_rate, adjust_for_compounding, deposit_config, thresh, horizon_frequency, recommendation_config, create_log, withdrawal_tax, goal_config, trading_days_per_year, n, p_risk, horizon, recommend_type, curr_inv].hash
518
+ end
519
+
520
+ # Builds the object from hash
521
+ # @param [Hash] attributes Model attributes in the form of hash
522
+ # @return [Object] Returns the model itself
523
+ def build_from_hash(attributes)
524
+ return nil unless attributes.is_a?(Hash)
525
+ self.class.swagger_types.each_pair do |key, type|
526
+ if type =~ /\AArray<(.*)>/i
527
+ # check to ensure the input is an array given that the attribute
528
+ # is documented as an array but the input is not
529
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
530
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
531
+ end
532
+ elsif !attributes[self.class.attribute_map[key]].nil?
533
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
534
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
535
+ end
536
+
537
+ self
538
+ end
539
+
540
+ # Deserializes the data based on type
541
+ # @param string type Data type
542
+ # @param string value Value to be deserialized
543
+ # @return [Object] Deserialized data
544
+ def _deserialize(type, value)
545
+ case type.to_sym
546
+ when :DateTime
547
+ DateTime.parse(value)
548
+ when :Date
549
+ Date.parse(value)
550
+ when :String
551
+ value.to_s
552
+ when :Integer
553
+ value.to_i
554
+ when :Float
555
+ value.to_f
556
+ when :BOOLEAN
557
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
558
+ true
559
+ else
560
+ false
561
+ end
562
+ when :Object
563
+ # generic object (usually a Hash), return directly
564
+ value
565
+ when /\AArray<(?<inner_type>.+)>\z/
566
+ inner_type = Regexp.last_match[:inner_type]
567
+ value.map { |v| _deserialize(inner_type, v) }
568
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
569
+ k_type = Regexp.last_match[:k_type]
570
+ v_type = Regexp.last_match[:v_type]
571
+ {}.tap do |hash|
572
+ value.each do |k, v|
573
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
574
+ end
575
+ end
576
+ else # model
577
+ temp_model = ProtonApi.const_get(type).new
578
+ temp_model.build_from_hash(value)
579
+ end
580
+ end
581
+
582
+ # Returns the string representation of the object
583
+ # @return [String] String presentation of the object
584
+ def to_s
585
+ to_hash.to_s
586
+ end
587
+
588
+ # to_body is an alias to to_hash (backward compatibility)
589
+ # @return [Hash] Returns the object in the form of hash
590
+ def to_body
591
+ to_hash
592
+ end
593
+
594
+ # Returns the object in the form of hash
595
+ # @return [Hash] Returns the object in the form of hash
596
+ def to_hash
597
+ hash = {}
598
+ self.class.attribute_map.each_pair do |attr, param|
599
+ value = self.send(attr)
600
+ next if value.nil?
601
+ hash[param] = _to_hash(value)
602
+ end
603
+ hash
604
+ end
605
+
606
+ # Outputs non-array value in the form of hash
607
+ # For object, use to_hash. Otherwise, just return the value
608
+ # @param [Object] value Any valid value
609
+ # @return [Hash] Returns the value in the form of hash
610
+ def _to_hash(value)
611
+ if value.is_a?(Array)
612
+ value.compact.map { |v| _to_hash(v) }
613
+ elsif value.is_a?(Hash)
614
+ {}.tap do |hash|
615
+ value.each { |k, v| hash[k] = _to_hash(v) }
616
+ end
617
+ elsif value.respond_to? :to_hash
618
+ value.to_hash
619
+ else
620
+ value
621
+ end
622
+ end
623
+
624
+ end
625
+ end