azapyGUI 0.0.1__py3-none-any.whl

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 (54) hide show
  1. azapyGUI/AppSettingsPage.py +213 -0
  2. azapyGUI/AppSettingsPageMisc.py +101 -0
  3. azapyGUI/AppSettingsWindow.py +52 -0
  4. azapyGUI/BacktestComputation.py +166 -0
  5. azapyGUI/BacktestEntryWindow.py +307 -0
  6. azapyGUI/BacktestMenuPortfolioWindow.py +20 -0
  7. azapyGUI/CloneMenuPortfolioWindow.py +93 -0
  8. azapyGUI/CrossHairBCursor.py +80 -0
  9. azapyGUI/DF_Window.py +63 -0
  10. azapyGUI/DF_table.py +282 -0
  11. azapyGUI/EditMenuPortfolioWindow.py +16 -0
  12. azapyGUI/EditPortfolioWindow.py +475 -0
  13. azapyGUI/EntryClonePortfolioWindow.py +35 -0
  14. azapyGUI/EntryNameWindow.py +55 -0
  15. azapyGUI/EntryRenamePortfolioWindow.py +33 -0
  16. azapyGUI/GetMktData.py +85 -0
  17. azapyGUI/MenuApp.py +194 -0
  18. azapyGUI/MktDataFrame.py +129 -0
  19. azapyGUI/MktDataNode.py +34 -0
  20. azapyGUI/ModelParamEditWindow.py +143 -0
  21. azapyGUI/NrShares_table.py +54 -0
  22. azapyGUI/PortAnalyseWindow.py +179 -0
  23. azapyGUI/PortDataNode.py +180 -0
  24. azapyGUI/PortfolioFrame.py +197 -0
  25. azapyGUI/RebalanceMenuPortfolioWindow.py +21 -0
  26. azapyGUI/RemoveMenuPortfolioWindow.py +33 -0
  27. azapyGUI/SaveMenuPortfolioWindow.py +36 -0
  28. azapyGUI/Scrollable.py +60 -0
  29. azapyGUI/SelectOneWindow.py +65 -0
  30. azapyGUI/SymbAnalyseWindow.py +21 -0
  31. azapyGUI/SymbExtractWindow.py +129 -0
  32. azapyGUI/SymbTableEntry.py +109 -0
  33. azapyGUI/TimeSeriesViewWindow.py +480 -0
  34. azapyGUI/ViewTip.py +72 -0
  35. azapyGUI/WeightsWindow.py +352 -0
  36. azapyGUI/__init__.py +6 -0
  37. azapyGUI/azHelper.py +27 -0
  38. azapyGUI/azapyApp.py +89 -0
  39. azapyGUI/config.py +35 -0
  40. azapyGUI/configHelps.py +84 -0
  41. azapyGUI/configMSG.py +194 -0
  42. azapyGUI/configModels.py +519 -0
  43. azapyGUI/configPlot.py +70 -0
  44. azapyGUI/configSettings.py +138 -0
  45. azapyGUI/configTips.py +240 -0
  46. azapyGUI/mktDataValidation.py +42 -0
  47. azapyGUI/modelParametersValidation.py +442 -0
  48. azapyGUI/serviceMasterUserConfig.py +28 -0
  49. azapyGUI/tkHelper.py +18 -0
  50. azapyGUI-0.0.1.dist-info/LICENSE +674 -0
  51. azapyGUI-0.0.1.dist-info/METADATA +126 -0
  52. azapyGUI-0.0.1.dist-info/RECORD +54 -0
  53. azapyGUI-0.0.1.dist-info/WHEEL +5 -0
  54. azapyGUI-0.0.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,519 @@
1
+ import azapyGUI.configTips as configTips
2
+ import azapyGUI.modelParametersValidation as mpv
3
+ import azapyGUI.configHelps as configHelps
4
+
5
+
6
+ __rtype_param = {'default': 'Sharpe',
7
+ 'values': ['Risk', 'Sharpe', 'Sharpe2', 'MinRisk', 'RiskAverse', 'InvNrisk',
8
+ 'Diverse', 'Diverse2', 'MaxDiverse', 'InvNdiverse', 'InvNdrr'],
9
+ 'visible': True,
10
+ 'validate': mpv._validate_nothing,
11
+ 'tip': configTips._rtype_param_tip,
12
+ 'param': {'mu': {'default': 0.05,
13
+ 'conditional': ['Risk', 'Diverse', 'Diverse2'],
14
+ 'visible': True,
15
+ 'validate': mpv._validate_mu,
16
+ 'tip': configTips._mu_param_tip,
17
+ },
18
+ 'mu0': {'default': 0,
19
+ 'conditional': ['Sharpe', 'Sharpe2'],
20
+ 'visible': True,
21
+ 'validate': mpv._validate_mu0,
22
+ 'tip': configTips._mu0_param_tip,
23
+ },
24
+ 'aversion': {'default': 0.3,
25
+ 'conditional': ['RiskAverse'],
26
+ 'visible': True,
27
+ 'validate': mpv._validate_aversion,
28
+ 'tip': configTips._aversion_param_tip,
29
+ },
30
+ 'ww0': {'default': [1, 1, 1],
31
+ 'conditional': ['InvNrisk', 'InvNdiverse', 'InvNdrr'],
32
+ 'visible': True,
33
+ 'validate': mpv._validate_nothing,
34
+ 'tip': configTips._ww0_param_tip,
35
+ },
36
+ },
37
+ }
38
+
39
+ __freq_val = {'default': 'Q',
40
+ 'values': ['M', 'Q'],
41
+ 'visible': True,
42
+ 'validate': mpv._validate_nothing,
43
+ 'tip': configTips._freq_param_tip,
44
+ }
45
+
46
+ __method_lin = {'default': 'ecos',
47
+ 'values': ['ecos', 'highs-ds', 'highs-ipm', 'highs', 'glpk', 'cvxopt'],
48
+ 'visible': True,
49
+ 'validate': mpv._validate_nothing,
50
+ 'tip': configTips._method_lin_param_tip,
51
+ }
52
+
53
+ __method_socp = {'default': 'ecos',
54
+ 'values': ['ecos', 'cvxopt'],
55
+ 'visible': True,
56
+ 'validate': mpv._validate_nothing,
57
+ 'tip': configTips._method_socp_param_tip,
58
+ }
59
+
60
+ __method_exp = {'default': 'ncp',
61
+ 'values': ['ncp', 'ncp2', 'excp'],
62
+ 'visible': True,
63
+ 'validate': mpv._validate_nothing,
64
+ 'tip': configTips._method_exp_param_tip,
65
+ }
66
+
67
+ __method_quad = {'default': 'ecos',
68
+ 'values': ['ecos', 'cvxopt'],
69
+ 'visible': True,
70
+ 'validate': mpv._validate_nothing,
71
+ 'tip': configTips._method_quad_param_tip,
72
+ }
73
+
74
+ __hlength_val = {'default': 1.25,
75
+ 'visible': True,
76
+ 'validate': mpv._validate_hlength,
77
+ 'tip': configTips._hlength_val_param_tip,
78
+ }
79
+
80
+ __col_calibration = {'default': 'adjusted',
81
+ 'values': ['adjusted'],
82
+ 'visible': False,
83
+ 'validate': mpv._validate_nothing,
84
+ 'tip': configTips._col_calibration_param_tip,
85
+ }
86
+
87
+ selector_models = {'Dual Momentum': {'param': {'ftype': {'default': 'f13612w',
88
+ 'values': ['f13612w'],
89
+ 'visible': True,
90
+ 'validate': mpv._validate_nothing,
91
+ 'tip': configTips._ftype_param_tip,
92
+ 'param': {'fw': {'default': [1, 1, 1, 1],
93
+ 'conditional': ['f13612w'],
94
+ 'visible': True,
95
+ 'validate': mpv._validate_fw,
96
+ 'tip': configTips._fw_param_tip,
97
+ }
98
+ },
99
+ },
100
+ 'nw': {'default': 3,
101
+ 'visible': True,
102
+ 'validate': mpv._validate_nw,
103
+ 'tip': configTips._nw_param_tip,
104
+ },
105
+ 'threshold': {'default': 6,
106
+ 'visible': True,
107
+ 'validate': mpv._validate_threshold,
108
+ 'tip': configTips._threshold_param_tip,
109
+ },
110
+ 'col_price': __col_calibration,
111
+ 'hlength': {'default': 1,
112
+ 'visible': False,
113
+ 'validate': mpv._validate_nothing,
114
+ 'tip': configTips._hlength_val_param_tip,
115
+ }
116
+ },
117
+ 'val_priority': ['nw'],
118
+ 'validate': [{'nw': mpv._validate_nw},
119
+ {'threshold': mpv._validate_threshold}],
120
+ 'tip': configTips._Dual_Momentum_model_tip,
121
+ 'help': configHelps._Dual_Momentum_model_help,
122
+ 'azapy': 'DualMomentumSelector',
123
+ },
124
+
125
+ 'Correlation Clustering': {'param': {'corr_threshold': {'default': 0.98,
126
+ 'visible': True,
127
+ 'validate': mpv._validate_corr_threshold,
128
+ 'tip': configTips._corr_threshold_param_tip,
129
+ },
130
+ 'freq': __freq_val,
131
+ 'ftype': {'default': 'f13612w',
132
+ 'values': ['f13612w'],
133
+ 'visible': True,
134
+ 'validate': mpv._validate_nothing,
135
+ 'tip': configTips._ftype_param_tip,
136
+ 'param': {'fw': {'default': [1, 1, 1, 1],
137
+ 'conditional': ['f13612w'],
138
+ 'visible': True,
139
+ 'validate': mpv._validate_fw,
140
+ 'tip': configTips._fw_param_tip,
141
+ }
142
+ },
143
+ },
144
+ 'hlength': __hlength_val,
145
+ 'col_price': __col_calibration,
146
+ },
147
+ 'val_priority': [],
148
+ 'validate': [],
149
+ 'tip': configTips._Correlation_Clustering_model_tip,
150
+ 'help': configHelps._Correlation_Clustering_model_help,
151
+ 'azapy': 'CorrClusterSelector',
152
+ },
153
+ }
154
+
155
+
156
+ risk_based_models = {'mCVaR': {'param': {'alpha': {'default': [0.95, 0.9],
157
+ 'visible': True,
158
+ 'validate': mpv._validate_alpha_mCVaR,
159
+ 'tip': configTips._alpha_mCVaR_param_tip,
160
+ },
161
+ 'coef': {'default': [1, 1],
162
+ 'visible': True,
163
+ 'validate': mpv._validate_coef,
164
+ 'tip': configTips._coef_param_tip
165
+ },
166
+ 'rtype': __rtype_param,
167
+ 'freq': __freq_val,
168
+ 'hlength': __hlength_val,
169
+ 'colname': __col_calibration,
170
+ 'method': __method_lin,
171
+ },
172
+ 'comptype': 'pipe',
173
+ 'val_priority': ['alpha'],
174
+ 'validate': [{'ww0': mpv._validate_ww0}],
175
+ 'tip': configTips._mCVaR_model_tip,
176
+ 'help': configHelps._mCVaR_model_help,
177
+ 'azapy': 'CVaRAnalyzer',
178
+ },
179
+ 'mSMCR': {'param': {'alpha': {'default': [0.85, 0.75],
180
+ 'visible': True,
181
+ 'validate': mpv._validate_alpha_mSMCR,
182
+ 'tip': configTips._alpha_mSMCR_param_tip,
183
+ },
184
+ 'coef': {'default': [1, 1],
185
+ 'visible': True,
186
+ 'validate': mpv._validate_coef,
187
+ 'tip': configTips._coef_param_tip,
188
+ },
189
+ 'rtype': __rtype_param,
190
+ 'freq': __freq_val,
191
+ 'hlength': __hlength_val,
192
+ 'colname': __col_calibration,
193
+ 'method': __method_socp,
194
+ },
195
+ 'comptype': 'pipe',
196
+ 'val_priority': ['alpha'],
197
+ 'validate': [{'ww0': mpv._validate_ww0}],
198
+ 'tip': configTips._mSMCR_model_tip,
199
+ 'help': configHelps._mSMCR_model_help,
200
+ 'azapy': 'SMCRAnalyzer',
201
+ },
202
+ 'mEVaR': {'param': {'alpha': {'default': [0.75, 0.65],
203
+ 'visible': True,
204
+ 'validate': mpv._validate_alpha_mEVaR,
205
+ 'tip': configTips._alpha_mEVaR_param_tip,
206
+ },
207
+ 'coef': {'default': [1, 1],
208
+ 'visible': True,
209
+ 'validate': mpv._validate_coef,
210
+ 'tip': configTips._coef_param_tip,
211
+ },
212
+ 'rtype': __rtype_param,
213
+ 'freq': __freq_val,
214
+ 'hlength': __hlength_val,
215
+ 'colname': __col_calibration,
216
+ 'method': __method_exp,
217
+ },
218
+ 'comptype': 'pipe',
219
+ 'val_priority': ['alpha'],
220
+ 'validate': [{'ww0': mpv._validate_ww0}],
221
+ 'tip': configTips._mEVaR_model_tip,
222
+ 'help': configHelps._mEVaR_model_help,
223
+ 'azapy': 'EVaRAnalyzer',
224
+ },
225
+ 'mMAD': {'param': {'coef': {'default': [1, 1],
226
+ 'visible': True,
227
+ 'validate': mpv._validate_coef_mMAD,
228
+ 'tip': configTips._coef_mMAD_param_tip,
229
+ },
230
+ 'rtype': __rtype_param,
231
+ 'freq': __freq_val,
232
+ 'hlength': __hlength_val,
233
+ 'colname': __col_calibration,
234
+ 'method': __method_lin,
235
+ },
236
+ 'comptype': 'pipe',
237
+ 'val_priority': [],
238
+ 'validate': [{'ww0': mpv._validate_ww0}],
239
+ 'tip': configTips._mMAD_model_tip,
240
+ 'help': configHelps._mMAD_model_help,
241
+ 'azapy': 'MADAnalyzer',
242
+ },
243
+ 'mLSD': {'param': {'coef': {'default': [1, 1],
244
+ 'visible': True,
245
+ 'validate': mpv._validate_coef_mLSD,
246
+ 'tip': configTips._coef_mMAD_param_tip,
247
+ },
248
+ 'rtype': __rtype_param,
249
+ 'freq': __freq_val,
250
+ 'hlength': __hlength_val,
251
+ 'colname': __col_calibration,
252
+ 'method': __method_socp,
253
+ },
254
+ 'comptype': 'pipe',
255
+ 'val_priority': [],
256
+ 'validate': [{'ww0': mpv._validate_ww0}],
257
+ 'tip': configTips._mLSD_model_tip,
258
+ 'help': configHelps._mLSD_model_help,
259
+ 'azapy': 'LSDAnalyzer',
260
+ },
261
+ 'mBTAD': {'param': {'alpha': {'default': [-0.5, 0],
262
+ 'visible': True,
263
+ 'validate': mpv._validate_alpha_mBTAD,
264
+ 'tip': configTips._alpha_mBTAD_param_tip,
265
+ },
266
+ 'coef': {'default': [1, 1],
267
+ 'visible': True,
268
+ 'validate': mpv._validate_coef,
269
+ 'tip': configTips._coef_BTAD_param_tip,
270
+ },
271
+ 'rtype': __rtype_param,
272
+ 'detrended': {'default': True,
273
+ 'values': [True, False],
274
+ 'visible': True,
275
+ 'validate': mpv._validate_nothing,
276
+ 'tip': configTips._detrended_param_tip,
277
+ },
278
+ 'freq': __freq_val,
279
+ 'hlength': __hlength_val,
280
+ 'colname': __col_calibration,
281
+ 'method': __method_lin,
282
+ },
283
+ 'comptype': 'pipe',
284
+ 'val_priority': ['alpha'],
285
+ 'validate': [{'ww0': mpv._validate_ww0}],
286
+ 'tip': configTips._mBTAD_model_tip,
287
+ 'help': configHelps._mBTAD_model_help,
288
+ 'azapy': 'BTADAnalyzer',
289
+ },
290
+ 'mBTSD': {'param': {'alpha': {'default': [-0.5, 0],
291
+ 'visible': True,
292
+ 'validate': mpv._validate_alpha_mBTSD,
293
+ 'tip': configTips._alpha_mBTAD_param_tip,
294
+ },
295
+ 'coef': {'default': [1, 1],
296
+ 'visible': True,
297
+ 'validate': mpv._validate_coef,
298
+ 'tip': configTips._coef_BTAD_param_tip,
299
+ },
300
+ 'rtype': __rtype_param,
301
+ 'detrended': {'default': True,
302
+ 'values': [True, False],
303
+ 'visible': True,
304
+ 'validate': mpv._validate_nothing,
305
+ 'tip': configTips._detrended_param_tip,
306
+ },
307
+ 'freq': __freq_val,
308
+ 'hlength': __hlength_val,
309
+ 'colname': __col_calibration,
310
+ 'method': __method_lin,
311
+ },
312
+ 'comptype': 'pipe',
313
+ 'val_priority': ['alpha'],
314
+ 'validate': [{'ww0': mpv._validate_ww0}],
315
+ 'tip': configTips._mBTSD_model_tip,
316
+ 'help': configHelps._mBTSD_model_help,
317
+ 'azapy': 'BTSDAnalyzer',
318
+ },
319
+ 'GINI': {'param': {'rtype': __rtype_param,
320
+ 'freq': __freq_val,
321
+ 'hlength': __hlength_val,
322
+ 'colname': __col_calibration,
323
+ 'method': __method_lin,
324
+ },
325
+ 'comptype': 'pipe',
326
+ 'val_priority': [],
327
+ 'validate': [{'ww0': mpv._validate_ww0}],
328
+ 'tip': configTips._GINI_model_tip,
329
+ 'help': configHelps._GINI_model_help,
330
+ 'azapy': 'GINIAnalyzer',
331
+ },
332
+ 'SD': {'param': {'rtype': __rtype_param,
333
+ 'freq': __freq_val,
334
+ 'hlength': __hlength_val,
335
+ 'colname': __col_calibration,
336
+ 'method': __method_quad,
337
+ },
338
+ 'comptype': 'pipe',
339
+ 'val_priority': [],
340
+ 'validate': [{'ww0': mpv._validate_ww0}],
341
+ 'tip': configTips._SD_model_tip,
342
+ 'help': configHelps._SD_model_help,
343
+ 'azapy': 'SDAnalyzer',
344
+ },
345
+ 'MV': {'param': {'rtype': __rtype_param,
346
+ 'freq': __freq_val,
347
+ 'hlength': __hlength_val,
348
+ 'colname': __col_calibration,
349
+ 'method': __method_quad,
350
+ },
351
+ 'comptype': 'pipe',
352
+ 'val_priority': [],
353
+ 'validate': [{'ww0': mpv._validate_ww0}],
354
+ 'tip': configTips._MV_model_tip,
355
+ 'help': configHelps._MV_model_help,
356
+ 'azapy': 'MVAnalyzer',
357
+ },
358
+ }
359
+
360
+ naive_models = {'Equal Weighted': {'param':{'freq': __freq_val,
361
+ },
362
+ 'comptype': 'pipe',
363
+ 'val_priority': [],
364
+ 'validate': [],
365
+ 'tip': configTips._Equal_Weighted_model_tip,
366
+ 'help': configHelps._Equal_Weighted_model_help,
367
+ 'azapy': 'EWPEngine',
368
+ },
369
+ 'Inverse Volatility': {'param': {'freq': __freq_val,
370
+ 'hlength': __hlength_val,
371
+ 'colname': __col_calibration,
372
+ },
373
+ 'comptype': 'pipe',
374
+ 'val_priority': [],
375
+ 'validate': [],
376
+ 'tip': configTips._Inverse_Volatility_model_tip,
377
+ 'help': configHelps._Inverse_Volatility_model_help,
378
+ 'azapy': 'InvVolEngine',
379
+ },
380
+ 'Inverse Variance': {'param': {'freq': __freq_val,
381
+ 'hlength': __hlength_val,
382
+ 'colname': __col_calibration,
383
+ },
384
+ 'comptype': 'pipe',
385
+ 'val_priority': [],
386
+ 'validate': [],
387
+ 'tip': configTips._Inverse_Variance_model_tip,
388
+ 'help': configHelps._Inverse_Variance_model_help,
389
+ 'azapy': 'InvVarEngine',
390
+ },
391
+ 'Inverse Drawdown': {'param': {'freq': __freq_val,
392
+ 'hlength': __hlength_val,
393
+ 'colname': __col_calibration,
394
+ },
395
+ 'comptype': 'pipe',
396
+ 'val_priority': [],
397
+ 'validate': [],
398
+ 'tip': configTips._Inverse_Drawdown_model_tip,
399
+ 'help': configHelps._Inverse_Drawdown_model_help,
400
+ 'azapy': 'InvDDEngine',
401
+ },
402
+ }
403
+
404
+ greedy_models = {'Kelly': {'param': {'freq': __freq_val,
405
+ 'hlength': __hlength_val,
406
+ 'colname': __col_calibration,
407
+ 'rtype': {'default': 'ExpCone',
408
+ 'values': ['ExpCone', 'Full', 'Order2'],
409
+ 'param': {'method': {'default': 'ecos',
410
+ 'values': ['ecos', 'cvxopt'],
411
+ 'conditional': ['Order2'],
412
+ 'visible': True,
413
+ 'validate': mpv._validate_nothing,
414
+ 'tip': configTips._method_quad_param_tip,
415
+ },
416
+ },
417
+ 'visible': True,
418
+ 'validate': mpv._validate_nothing,
419
+ 'tip': configTips._rtype_Kelly_param_tip,
420
+ },
421
+ },
422
+ 'comptype': 'pipe',
423
+ 'val_priority': [],
424
+ 'validate': [],
425
+ 'tip': configTips._Kelly_model_tip,
426
+ 'help': configHelps._Kelly_model_help,
427
+ 'azapy': 'KellyEngine',
428
+ },
429
+ 'Universal': {'param': {'freq': __freq_val,
430
+ 'colname': __col_calibration,
431
+ 'dirichlet_alpha': {'default': 1,
432
+ 'visible': True,
433
+ 'validate': mpv._validate_nothing,
434
+ 'tip': configTips._dirichlet_alpha_param_tip,
435
+ },
436
+ 'variance_reduction': {'default': 'True',
437
+ 'values': ['True', 'False'],
438
+ 'visible': True,
439
+ 'validate': mpv._validate_variance_reduction,
440
+ 'tip': configTips._variance_reduction_param_tip,
441
+ },
442
+ 'nr_batches': {'default': 16,
443
+ 'visible': True,
444
+ 'validate': mpv._validate_nr_batches,
445
+ 'tip': configTips._nr_batches_param_tip,
446
+ },
447
+ 'mc_paths': {'default': 100,
448
+ 'visible': True,
449
+ 'validate': mpv._validate_mc_paths,
450
+ 'tip': configTips._mc_paths_param_tip,
451
+ },
452
+ 'mc_seed': {'default': 42,
453
+ 'visible': True,
454
+ 'validate': mpv._validate_mc_seed,
455
+ 'tip': configTips._mc_seed_param_tip,
456
+ },
457
+ 'hlength': {'default': 12,
458
+ 'visible': True,
459
+ 'validate': mpv._validate_hlength,
460
+ 'tip': configTips._univ_hlength_val_param_tip,
461
+ }
462
+ },
463
+ 'comptype': 'standalone',
464
+ 'val_priority': [],
465
+ 'validate': [{'dirichlet_alpha': mpv._validate_dirichlet_alpha}],
466
+ 'tip': configTips._Universal_model_tip,
467
+ 'help': configHelps._Universal_model_help,
468
+ 'azapy': ['azHelper.UniversalEngineWrap', 'Port_Universal']
469
+ },
470
+ }
471
+
472
+
473
+ portfolio_model_family = {'Selector': selector_models,
474
+ 'Risk based': risk_based_models,
475
+ 'Naive': naive_models,
476
+ 'Greedy': greedy_models,
477
+ }
478
+
479
+ optim_model_types = ('Risk based', 'Naive', 'Greedy')
480
+
481
+
482
+ def get_model_family(model):
483
+ for family in portfolio_model_family.keys():
484
+ if model in portfolio_model_family[family].keys():
485
+ return family
486
+ return None
487
+
488
+
489
+ def param_default(model, visible=True):
490
+ family = get_model_family(model)
491
+ out = {}
492
+ def work(param):
493
+ for kk, vv in param.items():
494
+ if vv['visible'] == visible:
495
+ out[kk] = vv['default']
496
+ if 'param' in vv.keys():
497
+ work(vv['param'])
498
+
499
+ param = portfolio_model_family[family][model]['param']
500
+ work(param)
501
+ return out
502
+
503
+
504
+ def flat_param_default(family, model):
505
+ out = {}
506
+ def work(param):
507
+ for kk, vv in param.items():
508
+ out[kk] = vv
509
+ if 'param' in vv.keys():
510
+ work(vv['param'])
511
+
512
+ param = portfolio_model_family[family][model]['param']
513
+ work(param)
514
+ return out
515
+
516
+
517
+ def get_comptype(mname):
518
+ ff = get_model_family(mname)
519
+ return portfolio_model_family[ff][mname]['comptype']
azapyGUI/configPlot.py ADDED
@@ -0,0 +1,70 @@
1
+ import pandas as pd
2
+
3
+ _plot_types = {"linear": {'param': {"value": 'linear'},
4
+ 'relative': False,
5
+ 'percent': False,
6
+ 'xgrid': {"visible": True, 'axis': 'x'},
7
+ 'ygrid': {"visible": True, 'axis': 'y'},
8
+ },
9
+ "rel-linear": {'param': {"value": 'linear'},
10
+ 'relative': True,
11
+ 'percent': False,
12
+ 'xgrid': {"visible": True, 'axis': 'x'},
13
+ 'ygrid': {"visible": True, 'axis': 'y'},
14
+ },
15
+ "percent": {'param': {"value": 'linear'},
16
+ 'relative': True,
17
+ 'percent': True,
18
+ 'xgrid': {"visible": True, 'axis': 'x'},
19
+ 'ygrid': {"visible": True, 'axis': 'y'},
20
+ },
21
+ "log": {"param": {"value": 'log',},
22
+ 'relative': False,
23
+ 'percent': False,
24
+ 'xgrid': {"visible": True, 'axis': 'x'},
25
+ 'ygrid': {"visible": True, "which": 'both', 'axis': 'y'},
26
+ },
27
+
28
+ "rel-log": {"param": {"value": 'log'},#, "base": 10},
29
+ 'relative': True,
30
+ 'percent': False,
31
+ 'xgrid': {"visible": True, 'axis': 'x'},
32
+ 'ygrid': {"visible": True, "which": 'both', 'axis': 'y'},
33
+ },
34
+ }
35
+
36
+ _plot_lengths = {"Max": {'offset': lambda dd: dd - pd.DateOffset(years=100),
37
+ 'mark': '-',
38
+ },
39
+ "3M": {'offset': lambda dd: dd - pd.DateOffset(months=3),
40
+ 'mark': '-|',
41
+ },
42
+ "6M": {'offset': lambda dd: dd - pd.DateOffset(months=6),
43
+ 'mark': '-|',
44
+ },
45
+ "1Y": {'offset': lambda dd: dd - pd.DateOffset(years=1),
46
+ 'mark': '-',
47
+ },
48
+ "2Y": {'offset': lambda dd: dd - pd.DateOffset(years=2),
49
+ 'mark': '-',
50
+ },
51
+ "3Y": {'offset': lambda dd: dd - pd.DateOffset(years=3),
52
+ 'mark': '-',
53
+ },
54
+ "4Y": {'offset': lambda dd: dd - pd.DateOffset(years=4),
55
+ 'mark': '-',
56
+ },
57
+ "5Y": {'offset': lambda dd: dd - pd.DateOffset(years=5),
58
+ 'mark': '-',
59
+ },
60
+ "7Y": {'offset': lambda dd: dd - pd.DateOffset(years=5),
61
+ 'mark': '-',
62
+ },
63
+ "10Y": {'offset': lambda dd: dd - pd.DateOffset(years=10),
64
+ 'mark': '-',
65
+ },
66
+ "YTD": {'offset': lambda dd: pd.Timestamp(year=dd.year-1, month=12, day=30),
67
+ 'mark': '-',
68
+ },
69
+ }
70
+