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,507 @@
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 MonteCarloRequest
17
+ attr_accessor :portfolio_id
18
+
19
+ attr_accessor :max_sample
20
+
21
+ attr_accessor :result_type
22
+
23
+ attr_accessor :ret_mod
24
+
25
+ attr_accessor :remove_outliers
26
+
27
+ attr_accessor :max_bal
28
+
29
+ attr_accessor :market_data_source
30
+
31
+ attr_accessor :p
32
+
33
+ attr_accessor :allocation_id
34
+
35
+ attr_accessor :use_proxy_data
36
+
37
+ attr_accessor :aggregation_account_id
38
+
39
+ attr_accessor :init_bal
40
+
41
+ attr_accessor :min_sample
42
+
43
+ attr_accessor :create_log
44
+
45
+ attr_accessor :mu
46
+
47
+ attr_accessor :account_id
48
+
49
+ attr_accessor :sigma
50
+
51
+ attr_accessor :model_id
52
+
53
+ attr_accessor :n
54
+
55
+ attr_accessor :min_bal
56
+
57
+ attr_accessor :frequency_interval
58
+
59
+ attr_accessor :cf
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
+ :'portfolio_id' => :'portfolio_id',
87
+ :'max_sample' => :'max_sample',
88
+ :'result_type' => :'result_type',
89
+ :'ret_mod' => :'ret_mod',
90
+ :'remove_outliers' => :'remove_outliers',
91
+ :'max_bal' => :'max_bal',
92
+ :'market_data_source' => :'market_data_source',
93
+ :'p' => :'p',
94
+ :'allocation_id' => :'allocation_id',
95
+ :'use_proxy_data' => :'use_proxy_data',
96
+ :'aggregation_account_id' => :'aggregation_account_id',
97
+ :'init_bal' => :'init_bal',
98
+ :'min_sample' => :'min_sample',
99
+ :'create_log' => :'create_log',
100
+ :'mu' => :'mu',
101
+ :'account_id' => :'account_id',
102
+ :'sigma' => :'sigma',
103
+ :'model_id' => :'model_id',
104
+ :'n' => :'n',
105
+ :'min_bal' => :'min_bal',
106
+ :'frequency_interval' => :'frequency_interval',
107
+ :'cf' => :'cf'
108
+ }
109
+ end
110
+
111
+ # Attribute type mapping.
112
+ def self.swagger_types
113
+ {
114
+ :'portfolio_id' => :'String',
115
+ :'max_sample' => :'Array<Float>',
116
+ :'result_type' => :'String',
117
+ :'ret_mod' => :'Array<Float>',
118
+ :'remove_outliers' => :'BOOLEAN',
119
+ :'max_bal' => :'Array<Float>',
120
+ :'market_data_source' => :'String',
121
+ :'p' => :'Array<Float>',
122
+ :'allocation_id' => :'String',
123
+ :'use_proxy_data' => :'BOOLEAN',
124
+ :'aggregation_account_id' => :'String',
125
+ :'init_bal' => :'Float',
126
+ :'min_sample' => :'Array<Float>',
127
+ :'create_log' => :'BOOLEAN',
128
+ :'mu' => :'Array<Float>',
129
+ :'account_id' => :'String',
130
+ :'sigma' => :'Array<Float>',
131
+ :'model_id' => :'String',
132
+ :'n' => :'Integer',
133
+ :'min_bal' => :'Array<Float>',
134
+ :'frequency_interval' => :'String',
135
+ :'cf' => :'Array<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?(:'portfolio_id')
148
+ self.portfolio_id = attributes[:'portfolio_id']
149
+ end
150
+
151
+ if attributes.has_key?(:'max_sample')
152
+ if (value = attributes[:'max_sample']).is_a?(Array)
153
+ self.max_sample = value
154
+ end
155
+ end
156
+
157
+ if attributes.has_key?(:'result_type')
158
+ self.result_type = attributes[:'result_type']
159
+ else
160
+ self.result_type = 'raw'
161
+ end
162
+
163
+ if attributes.has_key?(:'ret_mod')
164
+ if (value = attributes[:'ret_mod']).is_a?(Array)
165
+ self.ret_mod = value
166
+ end
167
+ end
168
+
169
+ if attributes.has_key?(:'remove_outliers')
170
+ self.remove_outliers = attributes[:'remove_outliers']
171
+ else
172
+ self.remove_outliers = false
173
+ end
174
+
175
+ if attributes.has_key?(:'max_bal')
176
+ if (value = attributes[:'max_bal']).is_a?(Array)
177
+ self.max_bal = value
178
+ end
179
+ end
180
+
181
+ if attributes.has_key?(:'market_data_source')
182
+ self.market_data_source = attributes[:'market_data_source']
183
+ else
184
+ self.market_data_source = 'nucleus'
185
+ end
186
+
187
+ if attributes.has_key?(:'p')
188
+ if (value = attributes[:'p']).is_a?(Array)
189
+ self.p = value
190
+ end
191
+ end
192
+
193
+ if attributes.has_key?(:'allocation_id')
194
+ self.allocation_id = attributes[:'allocation_id']
195
+ end
196
+
197
+ if attributes.has_key?(:'use_proxy_data')
198
+ self.use_proxy_data = attributes[:'use_proxy_data']
199
+ else
200
+ self.use_proxy_data = false
201
+ end
202
+
203
+ if attributes.has_key?(:'aggregation_account_id')
204
+ self.aggregation_account_id = attributes[:'aggregation_account_id']
205
+ end
206
+
207
+ if attributes.has_key?(:'init_bal')
208
+ self.init_bal = attributes[:'init_bal']
209
+ end
210
+
211
+ if attributes.has_key?(:'min_sample')
212
+ if (value = attributes[:'min_sample']).is_a?(Array)
213
+ self.min_sample = value
214
+ end
215
+ end
216
+
217
+ if attributes.has_key?(:'create_log')
218
+ self.create_log = attributes[:'create_log']
219
+ else
220
+ self.create_log = false
221
+ end
222
+
223
+ if attributes.has_key?(:'mu')
224
+ if (value = attributes[:'mu']).is_a?(Array)
225
+ self.mu = value
226
+ end
227
+ end
228
+
229
+ if attributes.has_key?(:'account_id')
230
+ self.account_id = attributes[:'account_id']
231
+ end
232
+
233
+ if attributes.has_key?(:'sigma')
234
+ if (value = attributes[:'sigma']).is_a?(Array)
235
+ self.sigma = value
236
+ end
237
+ end
238
+
239
+ if attributes.has_key?(:'model_id')
240
+ self.model_id = attributes[:'model_id']
241
+ end
242
+
243
+ if attributes.has_key?(:'n')
244
+ self.n = attributes[:'n']
245
+ else
246
+ self.n = 1000
247
+ end
248
+
249
+ if attributes.has_key?(:'min_bal')
250
+ if (value = attributes[:'min_bal']).is_a?(Array)
251
+ self.min_bal = value
252
+ end
253
+ end
254
+
255
+ if attributes.has_key?(:'frequency_interval')
256
+ self.frequency_interval = attributes[:'frequency_interval']
257
+ else
258
+ self.frequency_interval = 'year'
259
+ end
260
+
261
+ if attributes.has_key?(:'cf')
262
+ if (value = attributes[:'cf']).is_a?(Array)
263
+ self.cf = value
264
+ end
265
+ end
266
+ end
267
+
268
+ # Show invalid properties with the reasons. Usually used together with valid?
269
+ # @return Array for valid properties with the reasons
270
+ def list_invalid_properties
271
+ invalid_properties = Array.new
272
+ if !@init_bal.nil? && @init_bal < 0
273
+ invalid_properties.push('invalid value for "init_bal", must be greater than or equal to 0.')
274
+ end
275
+
276
+ if !@n.nil? && @n > 10000
277
+ invalid_properties.push('invalid value for "n", must be smaller than or equal to 10000.')
278
+ end
279
+
280
+ if !@n.nil? && @n < 1
281
+ invalid_properties.push('invalid value for "n", must be greater than or equal to 1.')
282
+ end
283
+
284
+ if @cf.nil?
285
+ invalid_properties.push('invalid value for "cf", cf cannot be nil.')
286
+ end
287
+
288
+ invalid_properties
289
+ end
290
+
291
+ # Check to see if the all the properties in the model are valid
292
+ # @return true if the model is valid
293
+ def valid?
294
+ result_type_validator = EnumAttributeValidator.new('String', ['raw', 'custom', 'median', 'mean', 'tens'])
295
+ return false unless result_type_validator.valid?(@result_type)
296
+ market_data_source_validator = EnumAttributeValidator.new('String', ['nucleus', 'integration'])
297
+ return false unless market_data_source_validator.valid?(@market_data_source)
298
+ return false if !@init_bal.nil? && @init_bal < 0
299
+ return false if !@n.nil? && @n > 10000
300
+ return false if !@n.nil? && @n < 1
301
+ frequency_interval_validator = EnumAttributeValidator.new('String', ['year', 'six_months', 'quarter', 'month', 'two_weeks', 'week', 'day'])
302
+ return false unless frequency_interval_validator.valid?(@frequency_interval)
303
+ return false if @cf.nil?
304
+ true
305
+ end
306
+
307
+ # Custom attribute writer method checking allowed values (enum).
308
+ # @param [Object] result_type Object to be assigned
309
+ def result_type=(result_type)
310
+ validator = EnumAttributeValidator.new('String', ['raw', 'custom', 'median', 'mean', 'tens'])
311
+ unless validator.valid?(result_type)
312
+ fail ArgumentError, 'invalid value for "result_type", must be one of #{validator.allowable_values}.'
313
+ end
314
+ @result_type = result_type
315
+ end
316
+
317
+ # Custom attribute writer method checking allowed values (enum).
318
+ # @param [Object] market_data_source Object to be assigned
319
+ def market_data_source=(market_data_source)
320
+ validator = EnumAttributeValidator.new('String', ['nucleus', 'integration'])
321
+ unless validator.valid?(market_data_source)
322
+ fail ArgumentError, 'invalid value for "market_data_source", must be one of #{validator.allowable_values}.'
323
+ end
324
+ @market_data_source = market_data_source
325
+ end
326
+
327
+ # Custom attribute writer method with validation
328
+ # @param [Object] init_bal Value to be assigned
329
+ def init_bal=(init_bal)
330
+ if !init_bal.nil? && init_bal < 0
331
+ fail ArgumentError, 'invalid value for "init_bal", must be greater than or equal to 0.'
332
+ end
333
+
334
+ @init_bal = init_bal
335
+ end
336
+
337
+ # Custom attribute writer method with validation
338
+ # @param [Object] n Value to be assigned
339
+ def n=(n)
340
+ if !n.nil? && n > 10000
341
+ fail ArgumentError, 'invalid value for "n", must be smaller than or equal to 10000.'
342
+ end
343
+
344
+ if !n.nil? && n < 1
345
+ fail ArgumentError, 'invalid value for "n", must be greater than or equal to 1.'
346
+ end
347
+
348
+ @n = n
349
+ end
350
+
351
+ # Custom attribute writer method checking allowed values (enum).
352
+ # @param [Object] frequency_interval Object to be assigned
353
+ def frequency_interval=(frequency_interval)
354
+ validator = EnumAttributeValidator.new('String', ['year', 'six_months', 'quarter', 'month', 'two_weeks', 'week', 'day'])
355
+ unless validator.valid?(frequency_interval)
356
+ fail ArgumentError, 'invalid value for "frequency_interval", must be one of #{validator.allowable_values}.'
357
+ end
358
+ @frequency_interval = frequency_interval
359
+ end
360
+
361
+ # Checks equality by comparing each attribute.
362
+ # @param [Object] Object to be compared
363
+ def ==(o)
364
+ return true if self.equal?(o)
365
+ self.class == o.class &&
366
+ portfolio_id == o.portfolio_id &&
367
+ max_sample == o.max_sample &&
368
+ result_type == o.result_type &&
369
+ ret_mod == o.ret_mod &&
370
+ remove_outliers == o.remove_outliers &&
371
+ max_bal == o.max_bal &&
372
+ market_data_source == o.market_data_source &&
373
+ p == o.p &&
374
+ allocation_id == o.allocation_id &&
375
+ use_proxy_data == o.use_proxy_data &&
376
+ aggregation_account_id == o.aggregation_account_id &&
377
+ init_bal == o.init_bal &&
378
+ min_sample == o.min_sample &&
379
+ create_log == o.create_log &&
380
+ mu == o.mu &&
381
+ account_id == o.account_id &&
382
+ sigma == o.sigma &&
383
+ model_id == o.model_id &&
384
+ n == o.n &&
385
+ min_bal == o.min_bal &&
386
+ frequency_interval == o.frequency_interval &&
387
+ cf == o.cf
388
+ end
389
+
390
+ # @see the `==` method
391
+ # @param [Object] Object to be compared
392
+ def eql?(o)
393
+ self == o
394
+ end
395
+
396
+ # Calculates hash code according to all attributes.
397
+ # @return [Fixnum] Hash code
398
+ def hash
399
+ [portfolio_id, max_sample, result_type, ret_mod, remove_outliers, max_bal, market_data_source, p, allocation_id, use_proxy_data, aggregation_account_id, init_bal, min_sample, create_log, mu, account_id, sigma, model_id, n, min_bal, frequency_interval, cf].hash
400
+ end
401
+
402
+ # Builds the object from hash
403
+ # @param [Hash] attributes Model attributes in the form of hash
404
+ # @return [Object] Returns the model itself
405
+ def build_from_hash(attributes)
406
+ return nil unless attributes.is_a?(Hash)
407
+ self.class.swagger_types.each_pair do |key, type|
408
+ if type =~ /\AArray<(.*)>/i
409
+ # check to ensure the input is an array given that the attribute
410
+ # is documented as an array but the input is not
411
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
412
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
413
+ end
414
+ elsif !attributes[self.class.attribute_map[key]].nil?
415
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
416
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
417
+ end
418
+
419
+ self
420
+ end
421
+
422
+ # Deserializes the data based on type
423
+ # @param string type Data type
424
+ # @param string value Value to be deserialized
425
+ # @return [Object] Deserialized data
426
+ def _deserialize(type, value)
427
+ case type.to_sym
428
+ when :DateTime
429
+ DateTime.parse(value)
430
+ when :Date
431
+ Date.parse(value)
432
+ when :String
433
+ value.to_s
434
+ when :Integer
435
+ value.to_i
436
+ when :Float
437
+ value.to_f
438
+ when :BOOLEAN
439
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
440
+ true
441
+ else
442
+ false
443
+ end
444
+ when :Object
445
+ # generic object (usually a Hash), return directly
446
+ value
447
+ when /\AArray<(?<inner_type>.+)>\z/
448
+ inner_type = Regexp.last_match[:inner_type]
449
+ value.map { |v| _deserialize(inner_type, v) }
450
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
451
+ k_type = Regexp.last_match[:k_type]
452
+ v_type = Regexp.last_match[:v_type]
453
+ {}.tap do |hash|
454
+ value.each do |k, v|
455
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
456
+ end
457
+ end
458
+ else # model
459
+ temp_model = ProtonApi.const_get(type).new
460
+ temp_model.build_from_hash(value)
461
+ end
462
+ end
463
+
464
+ # Returns the string representation of the object
465
+ # @return [String] String presentation of the object
466
+ def to_s
467
+ to_hash.to_s
468
+ end
469
+
470
+ # to_body is an alias to to_hash (backward compatibility)
471
+ # @return [Hash] Returns the object in the form of hash
472
+ def to_body
473
+ to_hash
474
+ end
475
+
476
+ # Returns the object in the form of hash
477
+ # @return [Hash] Returns the object in the form of hash
478
+ def to_hash
479
+ hash = {}
480
+ self.class.attribute_map.each_pair do |attr, param|
481
+ value = self.send(attr)
482
+ next if value.nil?
483
+ hash[param] = _to_hash(value)
484
+ end
485
+ hash
486
+ end
487
+
488
+ # Outputs non-array value in the form of hash
489
+ # For object, use to_hash. Otherwise, just return the value
490
+ # @param [Object] value Any valid value
491
+ # @return [Hash] Returns the value in the form of hash
492
+ def _to_hash(value)
493
+ if value.is_a?(Array)
494
+ value.compact.map { |v| _to_hash(v) }
495
+ elsif value.is_a?(Hash)
496
+ {}.tap do |hash|
497
+ value.each { |k, v| hash[k] = _to_hash(v) }
498
+ end
499
+ elsif value.respond_to? :to_hash
500
+ value.to_hash
501
+ else
502
+ value
503
+ end
504
+ end
505
+
506
+ end
507
+ end