hydrogen-proton-api 1.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (217) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +7 -0
  3. data/README.md +82 -0
  4. data/Rakefile +8 -0
  5. data/git_push.sh +55 -0
  6. data/lib/proton_api.rb +141 -0
  7. data/lib/proton_api/api/annuities_api.rb +347 -0
  8. data/lib/proton_api/api/business_financial_management_api.rb +293 -0
  9. data/lib/proton_api/api/cards_api.rb +185 -0
  10. data/lib/proton_api/api/financial_health_api.rb +239 -0
  11. data/lib/proton_api/api/financial_planning_api.rb +671 -0
  12. data/lib/proton_api/api/goals_api.rb +347 -0
  13. data/lib/proton_api/api/life_insurance_api.rb +77 -0
  14. data/lib/proton_api/api/personal_financial_management_api.rb +347 -0
  15. data/lib/proton_api/api/portfolio_construction_api.rb +77 -0
  16. data/lib/proton_api/api/portfolio_management_api.rb +77 -0
  17. data/lib/proton_api/api/risk_scoring_api.rb +185 -0
  18. data/lib/proton_api/api/simulations_api.rb +401 -0
  19. data/lib/proton_api/api/util_api.rb +185 -0
  20. data/lib/proton_api/api_client.rb +391 -0
  21. data/lib/proton_api/api_error.rb +38 -0
  22. data/lib/proton_api/auth_configuration.rb +181 -0
  23. data/lib/proton_api/configuration.rb +209 -0
  24. data/lib/proton_api/environment.rb +36 -0
  25. data/lib/proton_api/models/accumulation_goal_deposit_config.rb +338 -0
  26. data/lib/proton_api/models/annuity_calculator_accumulation_horizon_request.rb +459 -0
  27. data/lib/proton_api/models/annuity_calculator_annuity_amount_request.rb +461 -0
  28. data/lib/proton_api/models/annuity_calculator_decumulation_horizon_request.rb +459 -0
  29. data/lib/proton_api/models/annuity_calculator_deposit_amount_request.rb +468 -0
  30. data/lib/proton_api/models/annuity_calculator_initial_balance_request.rb +468 -0
  31. data/lib/proton_api/models/annuity_deposit_schedule.rb +254 -0
  32. data/lib/proton_api/models/answer.rb +186 -0
  33. data/lib/proton_api/models/backtest_request.rb +295 -0
  34. data/lib/proton_api/models/beneficiary_bequest_config.rb +257 -0
  35. data/lib/proton_api/models/budget_aggregation_account.rb +186 -0
  36. data/lib/proton_api/models/budget_calculator_request.rb +334 -0
  37. data/lib/proton_api/models/budget_component.rb +228 -0
  38. data/lib/proton_api/models/budget_details.rb +337 -0
  39. data/lib/proton_api/models/business_financial_health_check_request.rb +484 -0
  40. data/lib/proton_api/models/business_invoice_analysis_request.rb +361 -0
  41. data/lib/proton_api/models/calculator_deposit_schedule.rb +228 -0
  42. data/lib/proton_api/models/calculator_deposit_schedule1.rb +254 -0
  43. data/lib/proton_api/models/card_analysis_request.rb +372 -0
  44. data/lib/proton_api/models/card_limit_check_request.rb +231 -0
  45. data/lib/proton_api/models/card_transaction_authorization_request.rb +422 -0
  46. data/lib/proton_api/models/cash_analysis_request.rb +340 -0
  47. data/lib/proton_api/models/cash_flow_analysis_request.rb +366 -0
  48. data/lib/proton_api/models/children_education_config.rb +221 -0
  49. data/lib/proton_api/models/customer_analysis_request.rb +292 -0
  50. data/lib/proton_api/models/decision_tree_result_request.rb +236 -0
  51. data/lib/proton_api/models/decumulation_goal_deposit_config.rb +335 -0
  52. data/lib/proton_api/models/dimensional_risk_score_request.rb +282 -0
  53. data/lib/proton_api/models/diversification_score_request.rb +324 -0
  54. data/lib/proton_api/models/education_calculator_annual_cost_request.rb +450 -0
  55. data/lib/proton_api/models/education_calculator_deposit_amount_request.rb +483 -0
  56. data/lib/proton_api/models/education_calculator_percent_covered_request.rb +448 -0
  57. data/lib/proton_api/models/education_config.rb +271 -0
  58. data/lib/proton_api/models/emergency_fund_calculator_request.rb +561 -0
  59. data/lib/proton_api/models/event_study_request.rb +317 -0
  60. data/lib/proton_api/models/fee_analysis_request.rb +239 -0
  61. data/lib/proton_api/models/financial_health_check_request.rb +384 -0
  62. data/lib/proton_api/models/financial_picture_request.rb +270 -0
  63. data/lib/proton_api/models/financial_statement_analysis_request.rb +461 -0
  64. data/lib/proton_api/models/goal_accumulation_allocation_request.rb +729 -0
  65. data/lib/proton_api/models/goal_accumulation_recommendation_request.rb +622 -0
  66. data/lib/proton_api/models/goal_accumulation_status_request.rb +622 -0
  67. data/lib/proton_api/models/goal_config.rb +222 -0
  68. data/lib/proton_api/models/goal_decumulation_allocation_request.rb +764 -0
  69. data/lib/proton_api/models/goal_decumulation_recommendation_request.rb +657 -0
  70. data/lib/proton_api/models/goal_decumulation_status_request.rb +657 -0
  71. data/lib/proton_api/models/goal_withdrawal_config.rb +335 -0
  72. data/lib/proton_api/models/guaranteed_rate_benefit.rb +272 -0
  73. data/lib/proton_api/models/income_config.rb +266 -0
  74. data/lib/proton_api/models/life_insurance_needs_calculator_request.rb +515 -0
  75. data/lib/proton_api/models/location.rb +183 -0
  76. data/lib/proton_api/models/monte_carlo_request.rb +504 -0
  77. data/lib/proton_api/models/mortgage_calculator_down_payment_request.rb +299 -0
  78. data/lib/proton_api/models/mortgage_calculator_home_price_request.rb +299 -0
  79. data/lib/proton_api/models/mortgage_calculator_periodic_payment_request.rb +299 -0
  80. data/lib/proton_api/models/mvo_request.rb +366 -0
  81. data/lib/proton_api/models/opt_config.rb +300 -0
  82. data/lib/proton_api/models/opt_config1.rb +260 -0
  83. data/lib/proton_api/models/order_rebalance_request.rb +398 -0
  84. data/lib/proton_api/models/performance_calculator_request.rb +687 -0
  85. data/lib/proton_api/models/periods.rb +220 -0
  86. data/lib/proton_api/models/portfolio_optimization_score_request.rb +356 -0
  87. data/lib/proton_api/models/portfolio_what_if_request.rb +351 -0
  88. data/lib/proton_api/models/purchase_calculator_amount_request.rb +401 -0
  89. data/lib/proton_api/models/purchase_calculator_deposit_amount_request.rb +434 -0
  90. data/lib/proton_api/models/purchase_calculator_horizon_request.rb +356 -0
  91. data/lib/proton_api/models/ratio_targets.rb +328 -0
  92. data/lib/proton_api/models/ratio_targets1.rb +328 -0
  93. data/lib/proton_api/models/rebalancing_signal_request.rb +238 -0
  94. data/lib/proton_api/models/recommendation_config.rb +357 -0
  95. data/lib/proton_api/models/recommendation_config1.rb +346 -0
  96. data/lib/proton_api/models/recurring_transaction_analysis_request.rb +400 -0
  97. data/lib/proton_api/models/retirement_calculator_deposit_amount_request.rb +509 -0
  98. data/lib/proton_api/models/retirement_calculator_expenses_request.rb +476 -0
  99. data/lib/proton_api/models/retirement_calculator_percent_covered_request.rb +474 -0
  100. data/lib/proton_api/models/risk_allocation_request.rb +316 -0
  101. data/lib/proton_api/models/risk_score_request.rb +239 -0
  102. data/lib/proton_api/models/savings_calculator_request.rb +395 -0
  103. data/lib/proton_api/models/savings_deposit_schedule.rb +276 -0
  104. data/lib/proton_api/models/scenario_analysis_request.rb +401 -0
  105. data/lib/proton_api/models/sensitivity_analysis_request.rb +399 -0
  106. data/lib/proton_api/models/sensitivity_factor.rb +278 -0
  107. data/lib/proton_api/models/settings.rb +287 -0
  108. data/lib/proton_api/models/spending_analysis_request.rb +505 -0
  109. data/lib/proton_api/models/variable_annuity_request.rb +700 -0
  110. data/lib/proton_api/models/w_config.rb +382 -0
  111. data/lib/proton_api/models/w_config1.rb +347 -0
  112. data/lib/proton_api/version.rb +15 -0
  113. data/proton_api.gemspec +46 -0
  114. data/spec/api/annuities_api_spec.rb +107 -0
  115. data/spec/api/business_financial_management_api_spec.rb +95 -0
  116. data/spec/api/cards_api_spec.rb +71 -0
  117. data/spec/api/financial_health_api_spec.rb +83 -0
  118. data/spec/api/financial_planning_api_spec.rb +179 -0
  119. data/spec/api/goals_api_spec.rb +107 -0
  120. data/spec/api/life_insurance_api_spec.rb +47 -0
  121. data/spec/api/personal_financial_management_api_spec.rb +107 -0
  122. data/spec/api/portfolio_construction_api_spec.rb +47 -0
  123. data/spec/api/portfolio_management_api_spec.rb +47 -0
  124. data/spec/api/risk_scoring_api_spec.rb +71 -0
  125. data/spec/api/simulations_api_spec.rb +119 -0
  126. data/spec/api/util_api_spec.rb +71 -0
  127. data/spec/api_client_spec.rb +243 -0
  128. data/spec/configuration_spec.rb +42 -0
  129. data/spec/models/accumulation_goal_deposit_config_spec.rb +89 -0
  130. data/spec/models/annuity_calculator_accumulation_horizon_request_spec.rb +111 -0
  131. data/spec/models/annuity_calculator_annuity_amount_request_spec.rb +111 -0
  132. data/spec/models/annuity_calculator_decumulation_horizon_request_spec.rb +111 -0
  133. data/spec/models/annuity_calculator_deposit_amount_request_spec.rb +111 -0
  134. data/spec/models/annuity_calculator_initial_balance_request_spec.rb +111 -0
  135. data/spec/models/annuity_deposit_schedule_spec.rb +57 -0
  136. data/spec/models/answer_spec.rb +41 -0
  137. data/spec/models/backtest_request_spec.rb +95 -0
  138. data/spec/models/beneficiary_bequest_config_spec.rb +53 -0
  139. data/spec/models/budget_aggregation_account_spec.rb +41 -0
  140. data/spec/models/budget_calculator_request_spec.rb +105 -0
  141. data/spec/models/budget_component_spec.rb +53 -0
  142. data/spec/models/budget_details_spec.rb +99 -0
  143. data/spec/models/business_financial_health_check_request_spec.rb +143 -0
  144. data/spec/models/business_invoice_analysis_request_spec.rb +123 -0
  145. data/spec/models/calculator_deposit_schedule1_spec.rb +57 -0
  146. data/spec/models/calculator_deposit_schedule_spec.rb +51 -0
  147. data/spec/models/card_analysis_request_spec.rb +129 -0
  148. data/spec/models/card_limit_check_request_spec.rb +65 -0
  149. data/spec/models/card_transaction_authorization_request_spec.rb +157 -0
  150. data/spec/models/cash_analysis_request_spec.rb +115 -0
  151. data/spec/models/cash_flow_analysis_request_spec.rb +135 -0
  152. data/spec/models/children_education_config_spec.rb +47 -0
  153. data/spec/models/customer_analysis_request_spec.rb +101 -0
  154. data/spec/models/decision_tree_result_request_spec.rb +51 -0
  155. data/spec/models/decumulation_goal_deposit_config_spec.rb +89 -0
  156. data/spec/models/dimensional_risk_score_request_spec.rb +89 -0
  157. data/spec/models/diversification_score_request_spec.rb +111 -0
  158. data/spec/models/education_calculator_annual_cost_request_spec.rb +101 -0
  159. data/spec/models/education_calculator_deposit_amount_request_spec.rb +107 -0
  160. data/spec/models/education_calculator_percent_covered_request_spec.rb +101 -0
  161. data/spec/models/education_config_spec.rb +53 -0
  162. data/spec/models/emergency_fund_calculator_request_spec.rb +141 -0
  163. data/spec/models/event_study_request_spec.rb +109 -0
  164. data/spec/models/fee_analysis_request_spec.rb +77 -0
  165. data/spec/models/financial_health_check_request_spec.rb +95 -0
  166. data/spec/models/financial_picture_request_spec.rb +95 -0
  167. data/spec/models/financial_statement_analysis_request_spec.rb +155 -0
  168. data/spec/models/goal_accumulation_allocation_request_spec.rb +215 -0
  169. data/spec/models/goal_accumulation_recommendation_request_spec.rb +173 -0
  170. data/spec/models/goal_accumulation_status_request_spec.rb +173 -0
  171. data/spec/models/goal_config_spec.rb +47 -0
  172. data/spec/models/goal_decumulation_allocation_request_spec.rb +221 -0
  173. data/spec/models/goal_decumulation_recommendation_request_spec.rb +179 -0
  174. data/spec/models/goal_decumulation_status_request_spec.rb +179 -0
  175. data/spec/models/goal_withdrawal_config_spec.rb +89 -0
  176. data/spec/models/guaranteed_rate_benefit_spec.rb +59 -0
  177. data/spec/models/income_config_spec.rb +53 -0
  178. data/spec/models/life_insurance_needs_calculator_request_spec.rb +125 -0
  179. data/spec/models/location_spec.rb +41 -0
  180. data/spec/models/monte_carlo_request_spec.rb +179 -0
  181. data/spec/models/mortgage_calculator_down_payment_request_spec.rb +59 -0
  182. data/spec/models/mortgage_calculator_home_price_request_spec.rb +59 -0
  183. data/spec/models/mortgage_calculator_periodic_payment_request_spec.rb +59 -0
  184. data/spec/models/mvo_request_spec.rb +113 -0
  185. data/spec/models/opt_config1_spec.rb +69 -0
  186. data/spec/models/opt_config_spec.rb +81 -0
  187. data/spec/models/order_rebalance_request_spec.rb +123 -0
  188. data/spec/models/performance_calculator_request_spec.rb +233 -0
  189. data/spec/models/periods_spec.rb +47 -0
  190. data/spec/models/portfolio_optimization_score_request_spec.rb +127 -0
  191. data/spec/models/portfolio_what_if_request_spec.rb +123 -0
  192. data/spec/models/purchase_calculator_amount_request_spec.rb +93 -0
  193. data/spec/models/purchase_calculator_deposit_amount_request_spec.rb +99 -0
  194. data/spec/models/purchase_calculator_horizon_request_spec.rb +83 -0
  195. data/spec/models/ratio_targets1_spec.rb +71 -0
  196. data/spec/models/ratio_targets_spec.rb +71 -0
  197. data/spec/models/rebalancing_signal_request_spec.rb +71 -0
  198. data/spec/models/recommendation_config1_spec.rb +77 -0
  199. data/spec/models/recommendation_config_spec.rb +83 -0
  200. data/spec/models/recurring_transaction_analysis_request_spec.rb +129 -0
  201. data/spec/models/retirement_calculator_deposit_amount_request_spec.rb +113 -0
  202. data/spec/models/retirement_calculator_expenses_request_spec.rb +107 -0
  203. data/spec/models/retirement_calculator_percent_covered_request_spec.rb +107 -0
  204. data/spec/models/risk_allocation_request_spec.rb +85 -0
  205. data/spec/models/risk_score_request_spec.rb +71 -0
  206. data/spec/models/savings_calculator_request_spec.rb +99 -0
  207. data/spec/models/savings_deposit_schedule_spec.rb +63 -0
  208. data/spec/models/scenario_analysis_request_spec.rb +133 -0
  209. data/spec/models/sensitivity_analysis_request_spec.rb +133 -0
  210. data/spec/models/sensitivity_factor_spec.rb +59 -0
  211. data/spec/models/settings_spec.rb +79 -0
  212. data/spec/models/spending_analysis_request_spec.rb +187 -0
  213. data/spec/models/variable_annuity_request_spec.rb +209 -0
  214. data/spec/models/w_config1_spec.rb +65 -0
  215. data/spec/models/w_config_spec.rb +65 -0
  216. data/spec/spec_helper.rb +111 -0
  217. metadata +561 -0
@@ -0,0 +1,398 @@
1
+ =begin
2
+ #Hydrogen Proton API
3
+
4
+ #Financial engineering module of Hydrogen Atom
5
+
6
+ OpenAPI spec version: 1.9.1
7
+ Contact: info@hydrogenplatform.com
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.4.19
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module ProtonApi
16
+ class OrderRebalanceRequest
17
+ attr_accessor :non_fractional
18
+
19
+ attr_accessor :order_scope
20
+
21
+ attr_accessor :buy_threshold
22
+
23
+ attr_accessor :commit_orders
24
+
25
+ attr_accessor :account_id
26
+
27
+ attr_accessor :port_threshold
28
+
29
+ attr_accessor :use_cash_available
30
+
31
+ attr_accessor :use_strategic
32
+
33
+ attr_accessor :sell_transaction_code_id
34
+
35
+ attr_accessor :buy_transaction_code_id
36
+
37
+ attr_accessor :cash_portfolio_id
38
+
39
+ attr_accessor :restrictions_on
40
+
41
+ attr_accessor :sell_threshold
42
+
43
+ attr_accessor :portfolio_id
44
+
45
+ class EnumAttributeValidator
46
+ attr_reader :datatype
47
+ attr_reader :allowable_values
48
+
49
+ def initialize(datatype, allowable_values)
50
+ @allowable_values = allowable_values.map do |value|
51
+ case datatype.to_s
52
+ when /Integer/i
53
+ value.to_i
54
+ when /Float/i
55
+ value.to_f
56
+ else
57
+ value
58
+ end
59
+ end
60
+ end
61
+
62
+ def valid?(value)
63
+ !value || allowable_values.include?(value)
64
+ end
65
+ end
66
+
67
+ # Attribute mapping from ruby-style variable name to JSON key.
68
+ def self.attribute_map
69
+ {
70
+ :'non_fractional' => :'non_fractional',
71
+ :'order_scope' => :'order_scope',
72
+ :'buy_threshold' => :'buy_threshold',
73
+ :'commit_orders' => :'commit_orders',
74
+ :'account_id' => :'account_id',
75
+ :'port_threshold' => :'port_threshold',
76
+ :'use_cash_available' => :'use_cash_available',
77
+ :'use_strategic' => :'use_strategic',
78
+ :'sell_transaction_code_id' => :'sell_transaction_code_id',
79
+ :'buy_transaction_code_id' => :'buy_transaction_code_id',
80
+ :'cash_portfolio_id' => :'cash_portfolio_id',
81
+ :'restrictions_on' => :'restrictions_on',
82
+ :'sell_threshold' => :'sell_threshold',
83
+ :'portfolio_id' => :'portfolio_id'
84
+ }
85
+ end
86
+
87
+ # Attribute type mapping.
88
+ def self.swagger_types
89
+ {
90
+ :'non_fractional' => :'BOOLEAN',
91
+ :'order_scope' => :'String',
92
+ :'buy_threshold' => :'Float',
93
+ :'commit_orders' => :'BOOLEAN',
94
+ :'account_id' => :'String',
95
+ :'port_threshold' => :'Float',
96
+ :'use_cash_available' => :'BOOLEAN',
97
+ :'use_strategic' => :'BOOLEAN',
98
+ :'sell_transaction_code_id' => :'String',
99
+ :'buy_transaction_code_id' => :'String',
100
+ :'cash_portfolio_id' => :'String',
101
+ :'restrictions_on' => :'BOOLEAN',
102
+ :'sell_threshold' => :'Float',
103
+ :'portfolio_id' => :'String'
104
+ }
105
+ end
106
+
107
+ # Initializes the object
108
+ # @param [Hash] attributes Model attributes in the form of hash
109
+ def initialize(attributes = {})
110
+ return unless attributes.is_a?(Hash)
111
+
112
+ # convert string to symbol for hash key
113
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
114
+
115
+ if attributes.has_key?(:'non_fractional')
116
+ self.non_fractional = attributes[:'non_fractional']
117
+ else
118
+ self.non_fractional = false
119
+ end
120
+
121
+ if attributes.has_key?(:'order_scope')
122
+ self.order_scope = attributes[:'order_scope']
123
+ end
124
+
125
+ if attributes.has_key?(:'buy_threshold')
126
+ self.buy_threshold = attributes[:'buy_threshold']
127
+ else
128
+ self.buy_threshold = 0.0
129
+ end
130
+
131
+ if attributes.has_key?(:'commit_orders')
132
+ self.commit_orders = attributes[:'commit_orders']
133
+ else
134
+ self.commit_orders = true
135
+ end
136
+
137
+ if attributes.has_key?(:'account_id')
138
+ self.account_id = attributes[:'account_id']
139
+ end
140
+
141
+ if attributes.has_key?(:'port_threshold')
142
+ self.port_threshold = attributes[:'port_threshold']
143
+ else
144
+ self.port_threshold = 0.0
145
+ end
146
+
147
+ if attributes.has_key?(:'use_cash_available')
148
+ self.use_cash_available = attributes[:'use_cash_available']
149
+ else
150
+ self.use_cash_available = false
151
+ end
152
+
153
+ if attributes.has_key?(:'use_strategic')
154
+ self.use_strategic = attributes[:'use_strategic']
155
+ else
156
+ self.use_strategic = false
157
+ end
158
+
159
+ if attributes.has_key?(:'sell_transaction_code_id')
160
+ self.sell_transaction_code_id = attributes[:'sell_transaction_code_id']
161
+ end
162
+
163
+ if attributes.has_key?(:'buy_transaction_code_id')
164
+ self.buy_transaction_code_id = attributes[:'buy_transaction_code_id']
165
+ end
166
+
167
+ if attributes.has_key?(:'cash_portfolio_id')
168
+ self.cash_portfolio_id = attributes[:'cash_portfolio_id']
169
+ end
170
+
171
+ if attributes.has_key?(:'restrictions_on')
172
+ self.restrictions_on = attributes[:'restrictions_on']
173
+ else
174
+ self.restrictions_on = false
175
+ end
176
+
177
+ if attributes.has_key?(:'sell_threshold')
178
+ self.sell_threshold = attributes[:'sell_threshold']
179
+ else
180
+ self.sell_threshold = 0.0
181
+ end
182
+
183
+ if attributes.has_key?(:'portfolio_id')
184
+ self.portfolio_id = attributes[:'portfolio_id']
185
+ end
186
+ end
187
+
188
+ # Show invalid properties with the reasons. Usually used together with valid?
189
+ # @return Array for valid properties with the reasons
190
+ def list_invalid_properties
191
+ invalid_properties = Array.new
192
+ if @order_scope.nil?
193
+ invalid_properties.push('invalid value for "order_scope", order_scope cannot be nil.')
194
+ end
195
+
196
+ if !@buy_threshold.nil? && @buy_threshold < 0
197
+ invalid_properties.push('invalid value for "buy_threshold", must be greater than or equal to 0.')
198
+ end
199
+
200
+ if !@port_threshold.nil? && @port_threshold < 0
201
+ invalid_properties.push('invalid value for "port_threshold", must be greater than or equal to 0.')
202
+ end
203
+
204
+ if !@sell_threshold.nil? && @sell_threshold < 1
205
+ invalid_properties.push('invalid value for "sell_threshold", must be greater than or equal to 1.')
206
+ end
207
+
208
+ invalid_properties
209
+ end
210
+
211
+ # Check to see if the all the properties in the model are valid
212
+ # @return true if the model is valid
213
+ def valid?
214
+ return false if @order_scope.nil?
215
+ order_scope_validator = EnumAttributeValidator.new('String', ['all', 'buy_only', 'sell_only'])
216
+ return false unless order_scope_validator.valid?(@order_scope)
217
+ return false if !@buy_threshold.nil? && @buy_threshold < 0
218
+ return false if !@port_threshold.nil? && @port_threshold < 0
219
+ return false if !@sell_threshold.nil? && @sell_threshold < 1
220
+ true
221
+ end
222
+
223
+ # Custom attribute writer method checking allowed values (enum).
224
+ # @param [Object] order_scope Object to be assigned
225
+ def order_scope=(order_scope)
226
+ validator = EnumAttributeValidator.new('String', ['all', 'buy_only', 'sell_only'])
227
+ unless validator.valid?(order_scope)
228
+ fail ArgumentError, 'invalid value for "order_scope", must be one of #{validator.allowable_values}.'
229
+ end
230
+ @order_scope = order_scope
231
+ end
232
+
233
+ # Custom attribute writer method with validation
234
+ # @param [Object] buy_threshold Value to be assigned
235
+ def buy_threshold=(buy_threshold)
236
+ if !buy_threshold.nil? && buy_threshold < 0
237
+ fail ArgumentError, 'invalid value for "buy_threshold", must be greater than or equal to 0.'
238
+ end
239
+
240
+ @buy_threshold = buy_threshold
241
+ end
242
+
243
+ # Custom attribute writer method with validation
244
+ # @param [Object] port_threshold Value to be assigned
245
+ def port_threshold=(port_threshold)
246
+ if !port_threshold.nil? && port_threshold < 0
247
+ fail ArgumentError, 'invalid value for "port_threshold", must be greater than or equal to 0.'
248
+ end
249
+
250
+ @port_threshold = port_threshold
251
+ end
252
+
253
+ # Custom attribute writer method with validation
254
+ # @param [Object] sell_threshold Value to be assigned
255
+ def sell_threshold=(sell_threshold)
256
+ if !sell_threshold.nil? && sell_threshold < 1
257
+ fail ArgumentError, 'invalid value for "sell_threshold", must be greater than or equal to 1.'
258
+ end
259
+
260
+ @sell_threshold = sell_threshold
261
+ end
262
+
263
+ # Checks equality by comparing each attribute.
264
+ # @param [Object] Object to be compared
265
+ def ==(o)
266
+ return true if self.equal?(o)
267
+ self.class == o.class &&
268
+ non_fractional == o.non_fractional &&
269
+ order_scope == o.order_scope &&
270
+ buy_threshold == o.buy_threshold &&
271
+ commit_orders == o.commit_orders &&
272
+ account_id == o.account_id &&
273
+ port_threshold == o.port_threshold &&
274
+ use_cash_available == o.use_cash_available &&
275
+ use_strategic == o.use_strategic &&
276
+ sell_transaction_code_id == o.sell_transaction_code_id &&
277
+ buy_transaction_code_id == o.buy_transaction_code_id &&
278
+ cash_portfolio_id == o.cash_portfolio_id &&
279
+ restrictions_on == o.restrictions_on &&
280
+ sell_threshold == o.sell_threshold &&
281
+ portfolio_id == o.portfolio_id
282
+ end
283
+
284
+ # @see the `==` method
285
+ # @param [Object] Object to be compared
286
+ def eql?(o)
287
+ self == o
288
+ end
289
+
290
+ # Calculates hash code according to all attributes.
291
+ # @return [Fixnum] Hash code
292
+ def hash
293
+ [non_fractional, order_scope, buy_threshold, commit_orders, account_id, port_threshold, use_cash_available, use_strategic, sell_transaction_code_id, buy_transaction_code_id, cash_portfolio_id, restrictions_on, sell_threshold, portfolio_id].hash
294
+ end
295
+
296
+ # Builds the object from hash
297
+ # @param [Hash] attributes Model attributes in the form of hash
298
+ # @return [Object] Returns the model itself
299
+ def build_from_hash(attributes)
300
+ return nil unless attributes.is_a?(Hash)
301
+ self.class.swagger_types.each_pair do |key, type|
302
+ if type =~ /\AArray<(.*)>/i
303
+ # check to ensure the input is an array given that the attribute
304
+ # is documented as an array but the input is not
305
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
306
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
307
+ end
308
+ elsif !attributes[self.class.attribute_map[key]].nil?
309
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
310
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
311
+ end
312
+
313
+ self
314
+ end
315
+ # Deserializes the data based on type
316
+ # @param string type Data type
317
+ # @param string value Value to be deserialized
318
+ # @return [Object] Deserialized data
319
+ def _deserialize(type, value)
320
+ case type.to_sym
321
+ when :DateTime
322
+ value
323
+ when :Date
324
+ value
325
+ when :String
326
+ value.to_s
327
+ when :Integer
328
+ value.to_i
329
+ when :Float
330
+ value.to_f
331
+ when :BOOLEAN
332
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
333
+ true
334
+ else
335
+ false
336
+ end
337
+ when :Object
338
+ # generic object (usually a Hash), return directly
339
+ value
340
+ when /\AArray<(?<inner_type>.+)>\z/
341
+ inner_type = Regexp.last_match[:inner_type]
342
+ value.map { |v| _deserialize(inner_type, v) }
343
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
344
+ k_type = Regexp.last_match[:k_type]
345
+ v_type = Regexp.last_match[:v_type]
346
+ {}.tap do |hash|
347
+ value.each do |k, v|
348
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
349
+ end
350
+ end
351
+ else # model
352
+ temp_model = ProtonApi.const_get(type).new
353
+ temp_model.build_from_hash(value)
354
+ end
355
+ end
356
+ # Returns the string representation of the object
357
+ # @return [String] String presentation of the object
358
+ def to_s
359
+ to_hash.to_s
360
+ end
361
+
362
+ # to_body is an alias to to_hash (backward compatibility)
363
+ # @return [Hash] Returns the object in the form of hash
364
+ def to_body
365
+ to_hash
366
+ end
367
+
368
+ # Returns the object in the form of hash
369
+ # @return [Hash] Returns the object in the form of hash
370
+ def to_hash
371
+ hash = {}
372
+ self.class.attribute_map.each_pair do |attr, param|
373
+ value = self.send(attr)
374
+ next if value.nil?
375
+ hash[param] = _to_hash(value)
376
+ end
377
+ hash
378
+ end
379
+ # Outputs non-array value in the form of hash
380
+ # For object, use to_hash. Otherwise, just return the value
381
+ # @param [Object] value Any valid value
382
+ # @return [Hash] Returns the value in the form of hash
383
+ def _to_hash(value)
384
+ if value.is_a?(Array)
385
+ value.compact.map { |v| _to_hash(v) }
386
+ elsif value.is_a?(Hash)
387
+ {}.tap do |hash|
388
+ value.each { |k, v| hash[k] = _to_hash(v) }
389
+ end
390
+ elsif value.respond_to? :to_hash
391
+ value.to_hash
392
+ else
393
+ value
394
+ end
395
+ end
396
+
397
+ end
398
+ end
@@ -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.1
7
+ Contact: info@hydrogenplatform.com
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.4.19
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module ProtonApi
16
+ class 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