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