skfolio 0.7.0__py3-none-any.whl → 0.8.0__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 (114) hide show
  1. skfolio/__init__.py +2 -2
  2. skfolio/cluster/__init__.py +1 -1
  3. skfolio/cluster/_hierarchical.py +1 -1
  4. skfolio/datasets/__init__.py +1 -1
  5. skfolio/datasets/_base.py +2 -2
  6. skfolio/datasets/data/__init__.py +1 -0
  7. skfolio/distance/__init__.py +1 -1
  8. skfolio/distance/_base.py +2 -2
  9. skfolio/distance/_distance.py +4 -4
  10. skfolio/distribution/__init__.py +56 -0
  11. skfolio/distribution/_base.py +203 -0
  12. skfolio/distribution/copula/__init__.py +35 -0
  13. skfolio/distribution/copula/_base.py +456 -0
  14. skfolio/distribution/copula/_clayton.py +539 -0
  15. skfolio/distribution/copula/_gaussian.py +407 -0
  16. skfolio/distribution/copula/_gumbel.py +560 -0
  17. skfolio/distribution/copula/_independent.py +196 -0
  18. skfolio/distribution/copula/_joe.py +609 -0
  19. skfolio/distribution/copula/_selection.py +111 -0
  20. skfolio/distribution/copula/_student_t.py +486 -0
  21. skfolio/distribution/copula/_utils.py +509 -0
  22. skfolio/distribution/multivariate/__init__.py +11 -0
  23. skfolio/distribution/multivariate/_base.py +241 -0
  24. skfolio/distribution/multivariate/_utils.py +632 -0
  25. skfolio/distribution/multivariate/_vine_copula.py +1254 -0
  26. skfolio/distribution/univariate/__init__.py +19 -0
  27. skfolio/distribution/univariate/_base.py +308 -0
  28. skfolio/distribution/univariate/_gaussian.py +136 -0
  29. skfolio/distribution/univariate/_johnson_su.py +152 -0
  30. skfolio/distribution/univariate/_normal_inverse_gaussian.py +153 -0
  31. skfolio/distribution/univariate/_selection.py +85 -0
  32. skfolio/distribution/univariate/_student_t.py +144 -0
  33. skfolio/exceptions.py +6 -6
  34. skfolio/measures/__init__.py +1 -1
  35. skfolio/measures/_enums.py +7 -7
  36. skfolio/measures/_measures.py +4 -7
  37. skfolio/metrics/__init__.py +2 -0
  38. skfolio/metrics/_scorer.py +4 -4
  39. skfolio/model_selection/__init__.py +2 -2
  40. skfolio/model_selection/_combinatorial.py +15 -12
  41. skfolio/model_selection/_validation.py +2 -2
  42. skfolio/model_selection/_walk_forward.py +3 -3
  43. skfolio/moments/covariance/_base.py +1 -1
  44. skfolio/moments/covariance/_denoise_covariance.py +1 -1
  45. skfolio/moments/covariance/_detone_covariance.py +1 -1
  46. skfolio/moments/covariance/_empirical_covariance.py +1 -1
  47. skfolio/moments/covariance/_ew_covariance.py +1 -1
  48. skfolio/moments/covariance/_gerber_covariance.py +1 -1
  49. skfolio/moments/covariance/_graphical_lasso_cv.py +1 -1
  50. skfolio/moments/covariance/_implied_covariance.py +2 -7
  51. skfolio/moments/covariance/_ledoit_wolf.py +1 -1
  52. skfolio/moments/covariance/_oas.py +1 -1
  53. skfolio/moments/covariance/_shrunk_covariance.py +1 -1
  54. skfolio/moments/expected_returns/_base.py +1 -1
  55. skfolio/moments/expected_returns/_empirical_mu.py +1 -1
  56. skfolio/moments/expected_returns/_equilibrium_mu.py +1 -1
  57. skfolio/moments/expected_returns/_ew_mu.py +1 -1
  58. skfolio/moments/expected_returns/_shrunk_mu.py +2 -2
  59. skfolio/optimization/__init__.py +2 -0
  60. skfolio/optimization/_base.py +2 -2
  61. skfolio/optimization/cluster/__init__.py +2 -0
  62. skfolio/optimization/cluster/_nco.py +7 -7
  63. skfolio/optimization/cluster/hierarchical/__init__.py +2 -0
  64. skfolio/optimization/cluster/hierarchical/_base.py +1 -2
  65. skfolio/optimization/cluster/hierarchical/_herc.py +2 -2
  66. skfolio/optimization/cluster/hierarchical/_hrp.py +2 -2
  67. skfolio/optimization/convex/__init__.py +2 -0
  68. skfolio/optimization/convex/_base.py +8 -8
  69. skfolio/optimization/convex/_distributionally_robust.py +4 -4
  70. skfolio/optimization/convex/_maximum_diversification.py +5 -5
  71. skfolio/optimization/convex/_mean_risk.py +5 -6
  72. skfolio/optimization/convex/_risk_budgeting.py +3 -3
  73. skfolio/optimization/ensemble/__init__.py +2 -0
  74. skfolio/optimization/ensemble/_base.py +2 -2
  75. skfolio/optimization/ensemble/_stacking.py +1 -1
  76. skfolio/optimization/naive/__init__.py +2 -0
  77. skfolio/optimization/naive/_naive.py +1 -1
  78. skfolio/population/__init__.py +2 -0
  79. skfolio/population/_population.py +34 -7
  80. skfolio/portfolio/_base.py +42 -8
  81. skfolio/portfolio/_multi_period_portfolio.py +3 -2
  82. skfolio/portfolio/_portfolio.py +4 -4
  83. skfolio/pre_selection/__init__.py +2 -0
  84. skfolio/pre_selection/_drop_correlated.py +2 -2
  85. skfolio/pre_selection/_select_complete.py +25 -26
  86. skfolio/pre_selection/_select_k_extremes.py +2 -2
  87. skfolio/pre_selection/_select_non_dominated.py +2 -2
  88. skfolio/pre_selection/_select_non_expiring.py +2 -2
  89. skfolio/preprocessing/__init__.py +2 -0
  90. skfolio/preprocessing/_returns.py +2 -2
  91. skfolio/prior/__init__.py +4 -0
  92. skfolio/prior/_base.py +2 -2
  93. skfolio/prior/_black_litterman.py +5 -3
  94. skfolio/prior/_empirical.py +3 -1
  95. skfolio/prior/_factor_model.py +8 -4
  96. skfolio/prior/_synthetic_data.py +239 -0
  97. skfolio/synthetic_returns/__init__.py +1 -0
  98. skfolio/typing.py +1 -1
  99. skfolio/uncertainty_set/__init__.py +2 -0
  100. skfolio/uncertainty_set/_base.py +2 -2
  101. skfolio/uncertainty_set/_bootstrap.py +1 -1
  102. skfolio/uncertainty_set/_empirical.py +1 -1
  103. skfolio/utils/__init__.py +1 -0
  104. skfolio/utils/bootstrap.py +2 -2
  105. skfolio/utils/equations.py +13 -10
  106. skfolio/utils/sorting.py +2 -2
  107. skfolio/utils/stats.py +7 -7
  108. skfolio/utils/tools.py +76 -12
  109. {skfolio-0.7.0.dist-info → skfolio-0.8.0.dist-info}/METADATA +99 -24
  110. skfolio-0.8.0.dist-info/RECORD +120 -0
  111. {skfolio-0.7.0.dist-info → skfolio-0.8.0.dist-info}/WHEEL +1 -1
  112. skfolio-0.7.0.dist-info/RECORD +0 -95
  113. {skfolio-0.7.0.dist-info → skfolio-0.8.0.dist-info/licenses}/LICENSE +0 -0
  114. {skfolio-0.7.0.dist-info → skfolio-0.8.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: skfolio
3
- Version: 0.7.0
3
+ Version: 0.8.0
4
4
  Summary: Portfolio optimization built on top of scikit-learn
5
5
  Author-email: Hugo Delatte <delatte.hugo@gmail.com>
6
6
  Maintainer-email: Hugo Delatte <delatte.hugo@gmail.com>, Matteo Manzi <matteomanzi09@gmail.com>
@@ -57,20 +57,21 @@ Requires-Python: >=3.10
57
57
  Description-Content-Type: text/x-rst
58
58
  License-File: LICENSE
59
59
  Requires-Dist: numpy>=1.23.4
60
- Requires-Dist: scipy>=1.8.0
60
+ Requires-Dist: scipy>=1.15.2
61
61
  Requires-Dist: pandas>=1.4.1
62
- Requires-Dist: cvxpy>=1.4.1
62
+ Requires-Dist: cvxpy-base>=1.5.0
63
+ Requires-Dist: clarabel>=0.9.0
63
64
  Requires-Dist: scikit-learn>=1.6.0
64
65
  Requires-Dist: joblib>=1.3.2
65
66
  Requires-Dist: plotly>=5.22.0
66
67
  Provides-Extra: dev
67
- Requires-Dist: cvxpy[SCIP]<2.0.0,>=1.6.0; extra == "dev"
68
- Requires-Dist: pytest<9.0.0,>=8.3.4; extra == "dev"
69
- Requires-Dist: pytest-cov<7.0.0,>=6.0.0; extra == "dev"
70
- Requires-Dist: ruff<1.0.0,>=0.8.4; extra == "dev"
71
- Requires-Dist: pre-commit<4.2.0,>=4.0.0; extra == "dev"
68
+ Requires-Dist: PySCIPOpt; extra == "dev"
69
+ Requires-Dist: pytest; extra == "dev"
70
+ Requires-Dist: pytest-cov; extra == "dev"
71
+ Requires-Dist: ruff; extra == "dev"
72
+ Requires-Dist: pre-commit; extra == "dev"
72
73
  Provides-Extra: docs
73
- Requires-Dist: cvxpy[SCIP]; extra == "docs"
74
+ Requires-Dist: PySCIPOpt; extra == "docs"
74
75
  Requires-Dist: Sphinx; extra == "docs"
75
76
  Requires-Dist: sphinx-gallery; extra == "docs"
76
77
  Requires-Dist: sphinx-design; extra == "docs"
@@ -87,6 +88,7 @@ Requires-Dist: sphinx-sitemap; extra == "docs"
87
88
  Requires-Dist: jupyterlite-sphinx; extra == "docs"
88
89
  Requires-Dist: jupyterlite-pyodide-kernel; extra == "docs"
89
90
  Requires-Dist: nbformat; extra == "docs"
91
+ Dynamic: license-file
90
92
 
91
93
  .. -*- mode: rst -*-
92
94
 
@@ -129,8 +131,9 @@ Requires-Dist: nbformat; extra == "docs"
129
131
  .. |NumpyMinVersion| replace:: 1.23.4
130
132
  .. |ScipyMinVersion| replace:: 1.8.0
131
133
  .. |PandasMinVersion| replace:: 1.4.1
132
- .. |CvxpyMinVersion| replace:: 1.4.1
133
- .. |SklearnMinVersion| replace:: 1.5.0
134
+ .. |CvxpyBaseMinVersion| replace:: 1.5.0
135
+ .. |ClarabelMinVersion| replace:: 0.9.0
136
+ .. |SklearnMinVersion| replace:: 1.6.0
134
137
  .. |JoblibMinVersion| replace:: 1.3.2
135
138
  .. |PlotlyMinVersion| replace:: 5.22.0
136
139
 
@@ -148,7 +151,7 @@ Requires-Dist: nbformat; extra == "docs"
148
151
  It offers a unified interface and tools compatible with scikit-learn to build, fine-tune,
149
152
  and cross-validate portfolio models.
150
153
 
151
- It is distributed under the open source 3-Clause BSD license.
154
+ It is distributed under the open-source 3-Clause BSD license.
152
155
 
153
156
  .. image:: https://raw.githubusercontent.com/skfolio/skfolio/master/docs/_static/expo.jpg
154
157
  :target: https://skfolio.org/auto_examples/
@@ -180,7 +183,8 @@ Dependencies
180
183
  - numpy (>= |NumpyMinVersion|)
181
184
  - scipy (>= |ScipyMinVersion|)
182
185
  - pandas (>= |PandasMinVersion|)
183
- - cvxpy (>= |CvxpyMinVersion|)
186
+ - cvxpy-base (>= |CvxpyBaseMinVersion|)
187
+ - clarabel (>= |ClarabelMinVersion|)
184
188
  - scikit-learn (>= |SklearnMinVersion|)
185
189
  - joblib (>= |JoblibMinVersion|)
186
190
  - plotly (>= |PlotlyMinVersion|)
@@ -194,7 +198,7 @@ Unfortunately, it faces a number of shortcomings, including high sensitivity to
194
198
  input parameters (expected returns and covariance), weight concentration, high turnover,
195
199
  and poor out-of-sample performance.
196
200
 
197
- It is well known that naive allocation (1/N, inverse-vol, etc.) tends to outperform
201
+ It is well-known that naive allocation (1/N, inverse-vol, etc.) tends to outperform
198
202
  MVO out-of-sample (DeMiguel, 2007).
199
203
 
200
204
  Numerous approaches have been developed to alleviate these shortcomings (shrinkage,
@@ -203,10 +207,10 @@ approaches, coherent risk measures, left-tail risk optimization, distributionall
203
207
  optimization, factor model, risk-parity, hierarchical clustering, ensemble methods,
204
208
  pre-selection, etc.).
205
209
 
206
- With this large number of methods, added to the fact that they can be composed together,
207
- there is a need for a unified framework with a machine learning approach to perform
208
- model selection, validation, and parameter tuning while reducing the risk of data
209
- leakage and overfitting.
210
+ Given the large number of methods, and the fact that they can be combined, there is a
211
+ need for a unified framework with a machine-learning approach to perform model
212
+ selection, validation, and parameter tuning while mitigating the risk of data leakage
213
+ and overfitting.
210
214
 
211
215
  This framework is built on scikit-learn's API.
212
216
 
@@ -256,10 +260,27 @@ Available models
256
260
  * Distance Correlation
257
261
  * Variation of Information
258
262
 
263
+ * Distribution Estimator:
264
+ * Univariate:
265
+ * Gaussian
266
+ * Student's t
267
+ * Johnson Su
268
+ * Normal Inverse Gaussian
269
+ * Bivariate Copula
270
+ * Gaussian Copula
271
+ * Student's t Copula
272
+ * Clayton Copula
273
+ * Gumbel Copula
274
+ * Joe Copula
275
+ * Independent Copula
276
+ * Multivariate
277
+ * Vine Copula (Regular, Centered, Clustered, Conditional Sampling)
278
+
259
279
  * Prior Estimator:
260
280
  * Empirical
261
281
  * Black & Litterman
262
282
  * Factor Model
283
+ * Synthetic Data (Stress Test, Factor Stress Test)
263
284
 
264
285
  * Uncertainty Set Estimator:
265
286
  * On Expected Returns:
@@ -267,12 +288,14 @@ Available models
267
288
  * Circular Bootstrap
268
289
  * On Covariance:
269
290
  * Empirical
270
- * Circular bootstrap
291
+ * Circular Bootstrap
271
292
 
272
293
  * Pre-Selection Transformer:
273
294
  * Non-Dominated Selection
274
295
  * Select K Extremes (Best or Worst)
275
296
  * Drop Highly Correlated Assets
297
+ * Select Non-Expiring Assets
298
+ * Select Complete Assets (handle late inception, delisting, etc.)
276
299
 
277
300
  * Cross-Validation and Model Selection:
278
301
  * Compatible with all `sklearn` methods (KFold, etc.)
@@ -317,6 +340,8 @@ Available models
317
340
  * Budget Constraints
318
341
  * Tracking Error Constraints
319
342
  * Turnover Constraints
343
+ * Cardinality and Group Cardinality Constraints
344
+ * Threshold (Long and Short) Constraints
320
345
 
321
346
  Quickstart
322
347
  ~~~~~~~~~~
@@ -339,6 +364,7 @@ Imports
339
364
 
340
365
  from skfolio import RatioMeasure, RiskMeasure
341
366
  from skfolio.datasets import load_factors_dataset, load_sp500_dataset
367
+ from skfolio.distribution import VineCopula
342
368
  from skfolio.model_selection import (
343
369
  CombinatorialPurgedCV,
344
370
  WalkForward,
@@ -359,7 +385,7 @@ Imports
359
385
  )
360
386
  from skfolio.pre_selection import SelectKExtremes
361
387
  from skfolio.preprocessing import prices_to_returns
362
- from skfolio.prior import BlackLitterman, EmpiricalPrior, FactorModel
388
+ from skfolio.prior import BlackLitterman, EmpiricalPrior, FactorModel, SyntheticData
363
389
  from skfolio.uncertainty_set import BootstrapMuUncertaintySet
364
390
 
365
391
  Load Dataset
@@ -630,12 +656,61 @@ Combinatorial Purged Cross-Validation
630
656
  print(population.summary())
631
657
 
632
658
 
659
+ Minimum CVaR Optimization on Synthetic Returns
660
+ ----------------------------------------------
661
+ .. code-block:: python
662
+
663
+ vine = VineCopula(log_transform=True, n_jobs=-1)
664
+ prior = =SyntheticData(distribution_estimator=vine, n_samples=2000)
665
+ model = MeanRisk(risk_measure=RiskMeasure.CVAR, prior_estimator=prior)
666
+ model.fit(X)
667
+ print(model.weights_)
668
+
669
+
670
+ Stress Test
671
+ -----------
672
+ .. code-block:: python
673
+
674
+ vine = VineCopula(log_transform=True, central_assets=["BAC"] n_jobs=-1)
675
+ vine.fit(X)
676
+ X_stressed = vine.sample(n_samples=10_000, conditioning = {"BAC": -0.2})
677
+ ptf_stressed = model.predict(X_stressed)
678
+
679
+
680
+ Minimum CVaR Optimization on Synthetic Factors
681
+ ----------------------------------------------
682
+ .. code-block:: python
683
+
684
+ vine = VineCopula(central_assets=["QUAL"], log_transform=True, n_jobs=-1)
685
+ factor_prior = SyntheticData(
686
+ distribution_estimator=vine,
687
+ n_samples=10_000,
688
+ sample_args=dict(conditioning={"QUAL": -0.2}),
689
+ )
690
+ factor_model = FactorModel(factor_prior_estimator=factor_prior)
691
+ model = MeanRisk(risk_measure=RiskMeasure.CVAR, prior_estimator=factor_model)
692
+ model.fit(X, y)
693
+ print(model.weights_)
694
+
695
+
696
+ Factor Stress Test
697
+ ------------------
698
+ .. code-block:: python
699
+
700
+ factor_model.set_params(factor_prior_estimator__sample_args=dict(
701
+ conditioning={"QUAL": -0.5}
702
+ ))
703
+ factor_model.fit(X,y)
704
+ stressed_X = factor_model.prior_model_.returns
705
+ stressed_ptf = model.predict(stressed_X)
706
+
707
+
633
708
  Recognition
634
709
  ~~~~~~~~~~~
635
710
 
636
- We would like to thank all contributors behind our direct dependencies, such as
637
- scikit-learn and cvxpy, but also the contributors of the following resources that were a
638
- source of inspiration:
711
+ We would like to thank all contributors to our direct dependencies, such as
712
+ scikit-learn and cvxpy, as well as the contributors of the following resources that
713
+ served as sources of inspiration:
639
714
 
640
715
  * PyPortfolioOpt
641
716
  * Riskfolio-Lib
@@ -0,0 +1,120 @@
1
+ skfolio/__init__.py,sha256=XdSV1bcfft5pNl5Y_mX8MR0IzjXjRs8uRURp42UGa08,635
2
+ skfolio/exceptions.py,sha256=omi5qQiEuFDpIoZfQHQxORZRcKYkusmdGPLBJt-Sna0,805
3
+ skfolio/typing.py,sha256=5wnu_qoGZtCWKu-nHlZ5w3rOKy5CXxGI5ZvzDSR9pLU,1394
4
+ skfolio/cluster/__init__.py,sha256=ycySaq2MgG3etqNF-pITuYKfYPHYm3-frjFc8PRzMc0,267
5
+ skfolio/cluster/_hierarchical.py,sha256=PTtr6H4keY6DEVvXyYM24AnNjj72sNaXKjGFEyMXZ5c,12839
6
+ skfolio/datasets/__init__.py,sha256=hxeG8dQOQWzlsKagxyAp2nX67wj7fAD-UZtv36xzMIE,497
7
+ skfolio/datasets/_base.py,sha256=n95CwIYEgh4cShFUItph7Prgv5XkndhBZ0OdOIE66Wk,16088
8
+ skfolio/datasets/data/__init__.py,sha256=XN1VFRn8-YLCbu6avsq21aUA94gN5f0WX0I5riTsNEk,27
9
+ skfolio/datasets/data/factors_dataset.csv.gz,sha256=brCJlT25DJo40yg1gnUXAakNtvWZZYR_1ksFeN5JcWE,36146
10
+ skfolio/datasets/data/sp500_dataset.csv.gz,sha256=7iHKwovvsdCnOanOsiGE-ZU5RyaqDP3pohlB0awErA0,426065
11
+ skfolio/datasets/data/sp500_index.csv.gz,sha256=iUw0QxwoT4aqZKRn4Xbio8m2l8hX65qzUAbC3VXT_fI,41898
12
+ skfolio/distance/__init__.py,sha256=KFDHNcpzA8Hng0xAs9JyFEkbDRubgeDrQUP4B2ZwYjw,563
13
+ skfolio/distance/_base.py,sha256=3qqkWfqb3igC6Y7XHwPYir9A2qwi2LjCtLlczMGi6UI,1343
14
+ skfolio/distance/_distance.py,sha256=-ztyE8oittGfn-ib4-JztAXxeIQ4QLAOj4OX4AJ2G64,19107
15
+ skfolio/distribution/__init__.py,sha256=A42xmx-VjMSy-An6ZIdhwPLFAoViCaOY7KUQDHgaOAY,1295
16
+ skfolio/distribution/_base.py,sha256=YEnJsLSO-_NkucUNKSaW9ZTwoORXFj7DWnFrxwaYaco,5665
17
+ skfolio/distribution/copula/__init__.py,sha256=dKN-BGl5t5EXlVb7Qamkktbj1V098Ocf3J6qNlRssI4,1106
18
+ skfolio/distribution/copula/_base.py,sha256=1N3I2lFuzm5ge1zG9VZWufIwwMKf8oE1OT_PtVEPyHo,15982
19
+ skfolio/distribution/copula/_clayton.py,sha256=xat9ZyhV3FbWcDVn6ax6Z8YGuOsHTKGVUXXNxxCqhcQ,18307
20
+ skfolio/distribution/copula/_gaussian.py,sha256=-OxQdvFEBesozIPofBG_X0j1tDmwlu4i9bpxnV7iqS4,14128
21
+ skfolio/distribution/copula/_gumbel.py,sha256=KIhyfGyF9jLRKqZo8D5k19k3Wgw9X6hX1o9pVDxzG00,19354
22
+ skfolio/distribution/copula/_independent.py,sha256=OIqmig7hP-KTCuBi0bsb4fwEkQkaxipYoy1JR1xer6w,6360
23
+ skfolio/distribution/copula/_joe.py,sha256=kSqPqMyyyNTgPEGSnlOm8drrRqMRhV2fNuJw1daxcMc,21446
24
+ skfolio/distribution/copula/_selection.py,sha256=JovKO2_Vq9Zq1WFArFTeKXSDVLFJtCRB8qi3N7vhnRM,4438
25
+ skfolio/distribution/copula/_student_t.py,sha256=Zl5WlmZ5fum2v6CH4VyVPln7Aivo_49Jj5hHcYlNQfU,17821
26
+ skfolio/distribution/copula/_utils.py,sha256=drMtv71bkwlerR0HJCdNCZTuFSitN5vn33avRGWxj94,16440
27
+ skfolio/distribution/multivariate/__init__.py,sha256=E9AR0Hh5wWShOTwj62R1RVMkzZpXc5Ams4ppibwhrUY,339
28
+ skfolio/distribution/multivariate/_base.py,sha256=MV3rhTafPlKdb3wuLbHfhApyV1ll7WmfzdR97Dq8VZw,8716
29
+ skfolio/distribution/multivariate/_utils.py,sha256=WNL1lzO0Ki5x_yO8p3GRKrXwG4fK99je7sDQ3avyUQ8,19274
30
+ skfolio/distribution/multivariate/_vine_copula.py,sha256=b545CKAMXUXMaIiI7hQ-P8jHhmZ4hUnGo2F22uWtbac,49756
31
+ skfolio/distribution/univariate/__init__.py,sha256=m9vZUhZyRUT5IOQRixGPdGci1wtC5ua8RWtHsC8HAlU,628
32
+ skfolio/distribution/univariate/_base.py,sha256=8oPMOdQi2wHc-UOWG18x_eZ57G_ksQhPM9C0ncYf1Lg,9874
33
+ skfolio/distribution/univariate/_gaussian.py,sha256=pe8YxTQjvObeVeZD2YXduN5M-k2kNNTy2q0AvYCm1n4,4274
34
+ skfolio/distribution/univariate/_johnson_su.py,sha256=Dl1WyCmn-sRE4BrckVNGXHz9biDQtXyPq1JXEPKIHBo,4857
35
+ skfolio/distribution/univariate/_normal_inverse_gaussian.py,sha256=oq5omNUQanFWBGaYSNwf9YDa6c-B1j9ZErq6p96resc,4983
36
+ skfolio/distribution/univariate/_selection.py,sha256=6KL4gngiLKwaBUpCDX19ABOkMBzZp1YVRnXFrUtppCs,3110
37
+ skfolio/distribution/univariate/_student_t.py,sha256=GcI4fKp6q5XegfvT_i3AqfWlUMxCq7A5sX6Xsf4pye8,4553
38
+ skfolio/measures/__init__.py,sha256=lB5xBqEFU-8x-12AA1VdCHaPwYpfwvejRaiYnr8IGYg,1647
39
+ skfolio/measures/_enums.py,sha256=S6WOT8NHzm-eMHELuOjngIBupCctCdiTA2BaJlWl-4E,8956
40
+ skfolio/measures/_measures.py,sha256=LmKgSAOXaKGomAcO1FkeypD6tRiEeDLUIh6lySky4vs,16835
41
+ skfolio/metrics/__init__.py,sha256=ebu5h7Q9X0f3ZZ1VFmAEBPic2sirboKG_zNBHO5abjo,98
42
+ skfolio/metrics/_scorer.py,sha256=L-qct4cby15a4xC4arSaG5__1mxBCQYeMjlrHBIVnSY,4325
43
+ skfolio/model_selection/__init__.py,sha256=BT8VCXW7C4bXI2Oam4amTHOcJVlKxLpkcsHjB63pZHQ,524
44
+ skfolio/model_selection/_combinatorial.py,sha256=XVbZuVA0ePEYpbKiyioQcNULtEEm5KM0Bc_-AvzQTtk,19109
45
+ skfolio/model_selection/_validation.py,sha256=fM3PnB9O6JrgyEznf4-yvmFLz-z0trOoYSKkMLzWqVc,10051
46
+ skfolio/model_selection/_walk_forward.py,sha256=Q_RV2Aw4J7nB5UhhrWuWcoYmyxc9CN45yL3vpyfuFGo,15060
47
+ skfolio/moments/__init__.py,sha256=st8AYX3tHT2ZkqnnMNbS6CiwufvHq6Tl6nHtRVhtlq0,794
48
+ skfolio/moments/covariance/__init__.py,sha256=twNNLP44sv4-3EgET27UdJ-8wbVgF2cYmIn8DERwFTk,1068
49
+ skfolio/moments/covariance/_base.py,sha256=vrYW0q1tG-l_uvnRk1TBTlQnamdmMXdJOZutRrRl08M,3986
50
+ skfolio/moments/covariance/_denoise_covariance.py,sha256=mXjcEYZn9HXVTkiUn4CkKM9Jy27XLOnweInbyu4f-_o,7002
51
+ skfolio/moments/covariance/_detone_covariance.py,sha256=Yw24UA68mw4yHe_utOD4FpOdWfV8kFXAMCNLZgGLD8c,6109
52
+ skfolio/moments/covariance/_empirical_covariance.py,sha256=ayIr0yn3oJS_H9LpHNCfHwttSGry3lR6_umXE_nE6tg,3560
53
+ skfolio/moments/covariance/_ew_covariance.py,sha256=z0-mcnewjKya8uz8JOO9BkS5xkSgTI1sG0ndJVScn1o,3732
54
+ skfolio/moments/covariance/_gerber_covariance.py,sha256=IHO4wcefrbvTUECrkEEnL_UOQSHNRLTrj6arrDKk73o,5915
55
+ skfolio/moments/covariance/_graphical_lasso_cv.py,sha256=vCQxDsqxJlNHUAs_ETPPW1y_v_5Zp0ePZC2NkTNmM-s,6555
56
+ skfolio/moments/covariance/_implied_covariance.py,sha256=ioXg1oThiOAHHZVZh3upPdDVJcCzACe831ypPXlZoM8,17625
57
+ skfolio/moments/covariance/_ledoit_wolf.py,sha256=bCorMMeQ7137QDKDW_TUzDiC0DdcRAvzRPoKL5EMCX8,4891
58
+ skfolio/moments/covariance/_oas.py,sha256=V9FAE4-VsiOXpAA5tGilphA32hfPolfzfoI974jLEY4,3700
59
+ skfolio/moments/covariance/_shrunk_covariance.py,sha256=URJgonaWoiOUQcSrtN1LUrJtdi4tCrwiuNUg-FaDNvE,3111
60
+ skfolio/moments/expected_returns/__init__.py,sha256=Bi3c4bok3SyktdYeFUs3VepTrtpmDITIk9GXPhIuDc0,504
61
+ skfolio/moments/expected_returns/_base.py,sha256=Bla1peGBVafIUwOxNuRF5-T84k-QHN8Z2W6mdLoSbzU,887
62
+ skfolio/moments/expected_returns/_empirical_mu.py,sha256=KLwO_9HCK7H6eiB9JU5EdLWcMqD2Vr7wcSjXONJk1Cg,1879
63
+ skfolio/moments/expected_returns/_equilibrium_mu.py,sha256=A4zAYZ7ex2Y68YV0HajYDKtnH0luQuKEN4hENEwk4Lk,4423
64
+ skfolio/moments/expected_returns/_ew_mu.py,sha256=vDOqpTpTY3iaJc9PfMU_dpdfglT1dJ_DuM3pCTpjHpc,2125
65
+ skfolio/moments/expected_returns/_shrunk_mu.py,sha256=nqypZJweZIf6u3Idz-TLPHiD3h3XzuKgTEQWJHSVnwo,8292
66
+ skfolio/optimization/__init__.py,sha256=LA4n85e-wVTeRNI-NlTU1ID5FhP3-B410kmsh9268Ho,1049
67
+ skfolio/optimization/_base.py,sha256=lPVvoV36URnjMUJGOO23QbaFYiuyVA9oRuvk68Dwd7o,5780
68
+ skfolio/optimization/cluster/__init__.py,sha256=nxsuDxviDbj-YMHhQXIkUEWUoKPhPn10bQ0_nULNUoE,424
69
+ skfolio/optimization/cluster/_nco.py,sha256=Gbd18HYlwq_MUd9JmytM1-Uqu-GFT8NXb8QWPVgmDxk,16433
70
+ skfolio/optimization/cluster/hierarchical/__init__.py,sha256=eT1A6YKETKCBEnrUc6pHwyTkDVRcUr8jtdtmN3kdh0c,446
71
+ skfolio/optimization/cluster/hierarchical/_base.py,sha256=mdplfuwUepui8RWPlySxoviuA0PNIkgn6wSYENNy9H0,16295
72
+ skfolio/optimization/cluster/hierarchical/_herc.py,sha256=5ZYkoi8ywN89U2xi1lc-3B8TPQjLlxbUmOSB3PR_nKA,20414
73
+ skfolio/optimization/cluster/hierarchical/_hrp.py,sha256=06kch9QkthV5yB8RNB_5Xz-IUuNq-fcZPjz99Mz5otg,18171
74
+ skfolio/optimization/convex/__init__.py,sha256=q1Q2p7HcnmbQlBIA0SXm0TwDGxl7hRc0JhF1o01lFSg,605
75
+ skfolio/optimization/convex/_base.py,sha256=mUTXVM6bq5cvlieAl6TXNGd6BNIqBajoAiDL28fPx9o,89455
76
+ skfolio/optimization/convex/_distributionally_robust.py,sha256=4iWfEuJGuBawVGU5X1-QHVMMh9hBnMtou2Uh5hRdXeA,17958
77
+ skfolio/optimization/convex/_maximum_diversification.py,sha256=a8nDecN6jTR_bOFKBsenI4G2kNu5t98y5ALY78lNrAU,19657
78
+ skfolio/optimization/convex/_mean_risk.py,sha256=mM5KMCxwAf1dT6JTxJuuQfvvk63hMQg5GD3LumQkfjQ,49534
79
+ skfolio/optimization/convex/_risk_budgeting.py,sha256=xtRg3CGmasi-ebx7e5XevHJs3n9PpccaZR7Z7loyKDc,23653
80
+ skfolio/optimization/ensemble/__init__.py,sha256=IJhsX8f-6wclc9a6Fd8yAQvZKxtxq4Qf7AC2CLryHrU,195
81
+ skfolio/optimization/ensemble/_base.py,sha256=e0dWCEIYnho3HU2KGGS9UHQdycdVuqMcTe7hi0LihjQ,3416
82
+ skfolio/optimization/ensemble/_stacking.py,sha256=DaswFVBTghP10vHGESn6aLT7C9wgp-D8NuXGtpdZcwE,14192
83
+ skfolio/optimization/naive/__init__.py,sha256=1QKgOuA6DoqKVOsJxWKogaGPyOir6ln-aQ28PTAbtJs,181
84
+ skfolio/optimization/naive/_naive.py,sha256=w5lDVpn5YeO6NN5dRzSRvj-V6GpfLogOW7FVxevwZl8,6453
85
+ skfolio/population/__init__.py,sha256=ehKwWhDJCifjhEL-QezVR0xYjzRTeyHbrEMbfWjF9cU,106
86
+ skfolio/population/_population.py,sha256=jmfy759zm5Z0ReRBaHMHCaPHEOf8AFxqXVzYrNhaVIw,31354
87
+ skfolio/portfolio/__init__.py,sha256=YeDSH0ZdyE-lcbDqpNw9IOltURtoM-ewAzzcec44Q5Q,586
88
+ skfolio/portfolio/_base.py,sha256=V81HUQ2CWmohGOeNip1dPESGnmRKQk8eDAthjkvVFhQ,40541
89
+ skfolio/portfolio/_multi_period_portfolio.py,sha256=9z71aZL2GrV6rQ_EkIyPkK-mJ9N2ZLZCIinSScfRgfw,24412
90
+ skfolio/portfolio/_portfolio.py,sha256=o1e1KNZAuxlC8y3zTIcaW7c2jk_LlEBCzEF8FRJht20,32791
91
+ skfolio/pre_selection/__init__.py,sha256=3hqxwd8nAa1dBna5MrE1P5JPrM-OkSvXGyhbMq7ZKIk,511
92
+ skfolio/pre_selection/_drop_correlated.py,sha256=4-PSd8R20Rcdyc8Zzcy9B2eRPEtaEkM3YXi74YKF-Pk,3839
93
+ skfolio/pre_selection/_select_complete.py,sha256=2nEvcjROMJzhAHMCHADeAiCws_tc-BMtndIkjRexL84,3902
94
+ skfolio/pre_selection/_select_k_extremes.py,sha256=nMugK88igmscribCw_I1UnjE_O7cuIjrJF8AGuVTfiA,3082
95
+ skfolio/pre_selection/_select_non_dominated.py,sha256=Auv7G8E1QNO96heb35oBWmFLd68LlVDRgSpcg7wpv5A,6004
96
+ skfolio/pre_selection/_select_non_expiring.py,sha256=hVXLNw5KBU7WxOI6v4feZ9lJaVIgl-CBhW80T9-ZUac,5105
97
+ skfolio/preprocessing/__init__.py,sha256=94jMyP_E7FlwQVE8D_bXDi8KyfAA2xPHTDvYOi6zf_g,123
98
+ skfolio/preprocessing/_returns.py,sha256=6G5qJIVHGnIoeBNAqpJTB-569g9NeXVIyrz033bK5Gk,4576
99
+ skfolio/prior/__init__.py,sha256=daUO3ha87Nu0ixJci33dR1dKgoYC6-1Nf3AUoaskE5o,544
100
+ skfolio/prior/_base.py,sha256=Py3Ip3mDhaDyBVWQy9Mz7ztv3RkovVC58gw4rCcC-jU,1958
101
+ skfolio/prior/_black_litterman.py,sha256=oMNYNyDSBp8Uygp0EvQissjNKS41GMLCVzITUqA0HeY,10470
102
+ skfolio/prior/_empirical.py,sha256=jDWgNhCfqOFVbVBphACZsqpK47OPOKGUCnOVsgmdqXI,7324
103
+ skfolio/prior/_factor_model.py,sha256=GhilLpNu8UdPrj5vb63zKJ9WWnt79k3SpNf6ULqZ8Bk,11571
104
+ skfolio/prior/_synthetic_data.py,sha256=XhavOTbbwBtO1suoA4pfZnm5YAdlykb07NQvvqPpRxo,8551
105
+ skfolio/synthetic_returns/__init__.py,sha256=-dnmFSmrTJcsMmrwIxPCbqENbx6gTuWAm_cx7nQHpns,29
106
+ skfolio/uncertainty_set/__init__.py,sha256=SHbOq0ip3vuwEK9G4pzz0GncDbGsHw7ywF9tPnkUrZ8,648
107
+ skfolio/uncertainty_set/_base.py,sha256=R6qH8Zg5Ti3Qny-guL4Js8rY9JhpF8jMwV_w9HCbgWI,4307
108
+ skfolio/uncertainty_set/_bootstrap.py,sha256=tDnUvhTtl0HWu-xL6MWZZZyWs4Y06PKQ5xPDiOU7RE4,11265
109
+ skfolio/uncertainty_set/_empirical.py,sha256=t9_V23gH1eJ0jaASQcus-QOSATAr9HKVW2hjHMNYjO0,9380
110
+ skfolio/utils/__init__.py,sha256=bC6-MsCVF7xKTr48z7OzJJUeWvqAB7BiHeNTiKsme70,20
111
+ skfolio/utils/bootstrap.py,sha256=6BN_9CgfbeImBSNEE0dF52FRGuQT41HcQXeHPLwFqJc,3565
112
+ skfolio/utils/equations.py,sha256=yj6-TReoPq3YaUQyAx-t4wZNbODON2T4TyA82z2SnkU,15577
113
+ skfolio/utils/sorting.py,sha256=F7gfIBfnulfDUiqvzrlR-pba4PPLJT6NH7-5s4sdRhw,3521
114
+ skfolio/utils/stats.py,sha256=glVHo7rjwy06dl5kkULLOADMrEkVJcfXXAz-1qmYQL4,17005
115
+ skfolio/utils/tools.py,sha256=sGJFiqc60TqXyaWoH7JdsbaFYj_bvwq3hHIk6FxDC3U,22994
116
+ skfolio-0.8.0.dist-info/licenses/LICENSE,sha256=F6Gi-ZJX5BlVzYK8R9NcvAkAsKa7KO29xB1OScbrH6Q,1526
117
+ skfolio-0.8.0.dist-info/METADATA,sha256=2I3oPRJjRLU5M_KQRaAx9xmrcARPZbaMuE8qu2RdSAE,22383
118
+ skfolio-0.8.0.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
119
+ skfolio-0.8.0.dist-info/top_level.txt,sha256=NXEaoS9Ms7t32gxkb867nV0OKlU0KmssL7IJBVo0fJs,8
120
+ skfolio-0.8.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (77.0.3)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,95 +0,0 @@
1
- skfolio/__init__.py,sha256=FbnqIQGdiw2fg-jy2N--TnXGknEahle2zj7y47bxQkY,618
2
- skfolio/exceptions.py,sha256=poWfE5geF121AR9QqrG781KebGneIZ028161tV0YfS0,784
3
- skfolio/typing.py,sha256=SqYkUNbeq_go0pJaoIAFE-MNvHtHSGLzhNrhrRxkpfM,1378
4
- skfolio/cluster/__init__.py,sha256=5yp3qkvBoN0qNDmmPahjPMegc0oQXCJ1FPxwgEqJpiY,251
5
- skfolio/cluster/_hierarchical.py,sha256=i7ckFpKdxymzrqXZBc0AZj-Qcz65JuUoJQ7pYWfAo7E,12823
6
- skfolio/datasets/__init__.py,sha256=0tuS8CR26EUBqBFjyxgZ2L5PgZDy3AjK3qh4GV-fB1U,481
7
- skfolio/datasets/_base.py,sha256=ECeHHlNOb2U5hEE3kaK8yQtegcVYiuGTjMLJ3Dop0Ks,16073
8
- skfolio/datasets/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- skfolio/datasets/data/factors_dataset.csv.gz,sha256=brCJlT25DJo40yg1gnUXAakNtvWZZYR_1ksFeN5JcWE,36146
10
- skfolio/datasets/data/sp500_dataset.csv.gz,sha256=7iHKwovvsdCnOanOsiGE-ZU5RyaqDP3pohlB0awErA0,426065
11
- skfolio/datasets/data/sp500_index.csv.gz,sha256=iUw0QxwoT4aqZKRn4Xbio8m2l8hX65qzUAbC3VXT_fI,41898
12
- skfolio/distance/__init__.py,sha256=MnNOJOQTdt3e-MH_uXMaaogWzF7Ubymvc8I0Ks7VElU,547
13
- skfolio/distance/_base.py,sha256=jBgRk6lZrP1woSI9541fTfxBBkp4WCTLlRPmWcmA3j4,1326
14
- skfolio/distance/_distance.py,sha256=0x77Yf_Tukb2l8J1VmvPT3YWJxVzGQo4u5rNjjo9-1M,19097
15
- skfolio/measures/__init__.py,sha256=b4hcaWXTzgQjF80ex3G1YJurfjLiii-ggrqJCIXsJTE,1631
16
- skfolio/measures/_enums.py,sha256=NJcngwg9b2JMMiekwkWU9POfnDvgfUgtYtyV2VSFDVM,8934
17
- skfolio/measures/_measures.py,sha256=Z7XHSyM9xfecDgOqm-lJQJhvZxasF018-oFS4QjC4g0,16829
18
- skfolio/metrics/__init__.py,sha256=MomHJ5_bgjq4qUwGS2bfhNmG_ld0oQ4wK6y0Yy_Eonc,75
19
- skfolio/metrics/_scorer.py,sha256=h1VuZk-zzn4rIChHl9FvM7RxqVT3b-jR1CEB-cr9F2s,4306
20
- skfolio/model_selection/__init__.py,sha256=Hl90pxVZjxrEFrI8DCGmoR0CBo1rMGw1z-cR2scKyls,507
21
- skfolio/model_selection/_combinatorial.py,sha256=uf5DzklgyLhfMKm0kWHXl2QLlUOAoiaxNb7cafrHVIg,19062
22
- skfolio/model_selection/_validation.py,sha256=3eFYzPejjDZljc33vRehDuBQTEKCkrj-mZihMVuGA4s,10034
23
- skfolio/model_selection/_walk_forward.py,sha256=T57HhdFGjG31mAufujHQuRK1uKfAdkiBx9eucQZ-WG0,15043
24
- skfolio/moments/__init__.py,sha256=st8AYX3tHT2ZkqnnMNbS6CiwufvHq6Tl6nHtRVhtlq0,794
25
- skfolio/moments/covariance/__init__.py,sha256=twNNLP44sv4-3EgET27UdJ-8wbVgF2cYmIn8DERwFTk,1068
26
- skfolio/moments/covariance/_base.py,sha256=98o4YDFcOZ4X4hRFlrJAwWifULGzisEyRZaxFYW1qeA,3970
27
- skfolio/moments/covariance/_denoise_covariance.py,sha256=kp90Jey_0NMHqZObhadO0FymF1TXBO6J8gvXoDbv9dE,6986
28
- skfolio/moments/covariance/_detone_covariance.py,sha256=4hh-wvxLdNb61PJkF2_AHb5jDZogZiFRHtUoWuXywWw,6093
29
- skfolio/moments/covariance/_empirical_covariance.py,sha256=mndfugw9Yp1Kus8rPAYcAIUcDT-6yX7By4gHhxyj6iI,3544
30
- skfolio/moments/covariance/_ew_covariance.py,sha256=wqvErW0OfvWWSrz1-g_M5EdfA4ludAD3wbn-y3ec-gY,3716
31
- skfolio/moments/covariance/_gerber_covariance.py,sha256=B_H02D7kWuUGaLUB9E39Kxh4f9mQESsoFJvuvKNJ0Jk,5899
32
- skfolio/moments/covariance/_graphical_lasso_cv.py,sha256=_6WQ1sjYJRG8XDq8zb5YIPtDhpb8CmLhLBlfewBvqjM,6539
33
- skfolio/moments/covariance/_implied_covariance.py,sha256=dD-LT7vXYs3-GGgxkQon3xCVLmA8zUuWIaExqY4vtXA,17736
34
- skfolio/moments/covariance/_ledoit_wolf.py,sha256=iV92TpAopOAgQwa4zk7NF1rYdXkgm3uXn5ZZpbcMss0,4875
35
- skfolio/moments/covariance/_oas.py,sha256=ru8BNz7vQU75ARCuUbtJstmR2fy2fiD9OXLDlztUm5g,3684
36
- skfolio/moments/covariance/_shrunk_covariance.py,sha256=OOUahkiSdU3vFOb8i0iHtn8WU0AHl7o9pf8pFkG6Lv4,3095
37
- skfolio/moments/expected_returns/__init__.py,sha256=Bi3c4bok3SyktdYeFUs3VepTrtpmDITIk9GXPhIuDc0,504
38
- skfolio/moments/expected_returns/_base.py,sha256=xk9mzi48uCOHaMTGQBMr3FU7Ai_shxYhmGeOsVwjv9Q,871
39
- skfolio/moments/expected_returns/_empirical_mu.py,sha256=Gg1t4pEkVXGzCTXkATc5G1riMmIcMGqvPnIl2vnYF2k,1863
40
- skfolio/moments/expected_returns/_equilibrium_mu.py,sha256=x35nIc4aoLledFmFmKY00d5jesx8xfLU2Udh4JQIkEg,4407
41
- skfolio/moments/expected_returns/_ew_mu.py,sha256=hMjv9XJYftQ9X7RiEQWwAGZktPPFWc0_FFDEFhqC-fI,2109
42
- skfolio/moments/expected_returns/_shrunk_mu.py,sha256=UbLM2B3nwa2ndLR5Or1yetnj2dCAzKxqpr34JwXfvmo,8275
43
- skfolio/optimization/__init__.py,sha256=dx5S-xSsISCXO9s64jjcDSqSsUl6TVAaIICWOc8aHK4,1021
44
- skfolio/optimization/_base.py,sha256=LoRONJP70AwbFpdgqVS_g145pCx0JGkazjWvkQzT_iM,5748
45
- skfolio/optimization/cluster/__init__.py,sha256=5Ek5dlLq9TqoLNHJad3EpBb35csuV-ilcoaKnc73lQc,388
46
- skfolio/optimization/cluster/_nco.py,sha256=UQfWEdYVPU6cd-WBlp9uf44zDzpTrXDIvH82k5GOdh4,16413
47
- skfolio/optimization/cluster/hierarchical/__init__.py,sha256=hZ6GzND_uGO3_derqt3wkOJ-jTtOs_x8Ifgo173EDxw,405
48
- skfolio/optimization/cluster/hierarchical/_base.py,sha256=l8rJHCH_79FOPdDL2I0dmAWcVWnNkcXHtzt0U-L7BN8,16280
49
- skfolio/optimization/cluster/hierarchical/_herc.py,sha256=fFUk-NEbP7ltjeiYQwzmVvXoVYYjd3JY_RjHoWVq0lw,20401
50
- skfolio/optimization/cluster/hierarchical/_hrp.py,sha256=wUeTIwQxhV5yhqZ4UIr-61rgttTP7fPh91GtMaCNjPc,18158
51
- skfolio/optimization/convex/__init__.py,sha256=mii3YiVwzAjnTMpJNK44jHevZXrfFxB-4z-3ZJP9nSc,570
52
- skfolio/optimization/convex/_base.py,sha256=9-0aZ_nzU5F6CkxhjK-VTvyGz96xyFVuRG7lWRl_3i4,89430
53
- skfolio/optimization/convex/_distributionally_robust.py,sha256=32jVUn2PG1agwuTSfj9QlP9GyQo_26sJcIwSqv9zy2I,17933
54
- skfolio/optimization/convex/_maximum_diversification.py,sha256=T3-O4U6irJ7iU9IWzKWr5K4aHC8JxNyF6JW_IckVezM,19631
55
- skfolio/optimization/convex/_mean_risk.py,sha256=77Dhe9xN6mSwgkXvXen5pySX-uHo3rOhPvpSQOd8l_Q,49509
56
- skfolio/optimization/convex/_risk_budgeting.py,sha256=Lt13xD41PEMXjxa1yjnaIe7nEZ_bnUqeT3MLiUCfTWI,23631
57
- skfolio/optimization/ensemble/__init__.py,sha256=8TXxcxH2_gG3C1xtgQj9OHHr0Le8lhdejtlURL6T3ZY,158
58
- skfolio/optimization/ensemble/_base.py,sha256=GaNDQu6ivosYuwMrb-b0PhToCsNrmhSYyXkxeM8W4rU,3399
59
- skfolio/optimization/ensemble/_stacking.py,sha256=Y79cHEOBJbtMgkKbgPKfgL6H9qYHi4VDm0JR5ugVwr4,14176
60
- skfolio/optimization/naive/__init__.py,sha256=LNmqRIkGf4RLaOGLt2ZB7SHnBBraxxn0WbTkDQGCxd0,147
61
- skfolio/optimization/naive/_naive.py,sha256=tQG6XqQKfWnbixjwtUiGNivGXuTPAYErkJMYl-UPYxQ,6437
62
- skfolio/population/__init__.py,sha256=rsPPMUv95aTK7vmpPeQwF8NzFuBwk6RDo5g4HNaPzNM,80
63
- skfolio/population/_population.py,sha256=ej45tdk_CcMlNToCsx2VUk2YRktK3k4cRczGBpjlnDE,30427
64
- skfolio/portfolio/__init__.py,sha256=YeDSH0ZdyE-lcbDqpNw9IOltURtoM-ewAzzcec44Q5Q,586
65
- skfolio/portfolio/_base.py,sha256=6HPFbCUve11lAhyD3KanDrlLjwzhVp6tIBy03XGBAGs,39613
66
- skfolio/portfolio/_multi_period_portfolio.py,sha256=K2JfEwlPD9iGO58lOdk7WUbWuXZDWw2prPT5T7pOdto,24387
67
- skfolio/portfolio/_portfolio.py,sha256=MoVuCM8rQnlzI2SvKmu1EDrNJfFFZRIyyhrZuNSdou0,32778
68
- skfolio/pre_selection/__init__.py,sha256=gVrGZYwuQ--AZGlIZ2ddXst3n_wJluEUBXpysOH5DM0,482
69
- skfolio/pre_selection/_drop_correlated.py,sha256=dgDl4YCHAC1lECSzuQGjI6rLoPNxvJ5bhtmwqduZH8Y,3822
70
- skfolio/pre_selection/_select_complete.py,sha256=5xgy1c3jSXQHRIwWk1ZSuRw36WeEVIQNy55qCIl9nJY,3978
71
- skfolio/pre_selection/_select_k_extremes.py,sha256=FSpvYN5vSGqRREFxceQiRjgGl50lJodpYJV7u-d3esQ,3065
72
- skfolio/pre_selection/_select_non_dominated.py,sha256=q5kae1tpMrcbgKfkPQMy0RWaXknnWI0eJ5Ne-h9VKE8,5987
73
- skfolio/pre_selection/_select_non_expiring.py,sha256=asD4xK83je4oWvB2ISu_HeRaDJjJ6pq88etr7CPkwPs,5088
74
- skfolio/preprocessing/__init__.py,sha256=15A1bzfPsbfxxXgGP1gstf4R0E_347Wn18z5W5jH-hk,94
75
- skfolio/preprocessing/_returns.py,sha256=6mdNi7Dun5eNK4LdqKAxP4CCZEVfAEz40HXVrOiAaLA,4561
76
- skfolio/prior/__init__.py,sha256=ajpcpYe6qgnjoPE5Q3ofr4ckQ2WrBxUapED5VV0ShbA,446
77
- skfolio/prior/_base.py,sha256=u9GLCKJl-Txiem5rIO-qkH3VIyem3taD6T9kMzsYPRY,1941
78
- skfolio/prior/_black_litterman.py,sha256=rs0GKbVbDGG-Wdrfb8LVUqq4BE_j-DDLoPsC8sGQvBk,10390
79
- skfolio/prior/_empirical.py,sha256=sJkqb60XRt_VsVWTrqDgdhfRn0MMOpmLbFeBcEUGEVs,7250
80
- skfolio/prior/_factor_model.py,sha256=HiR6JdmusAB1RbjOGjFQgQaTCp_ctzrL5IzUCxgqGKA,11354
81
- skfolio/uncertainty_set/__init__.py,sha256=NhGmOhrmIgAA5DwPs0y48RQb-pVrfkdRRIlPgQjPvJc,617
82
- skfolio/uncertainty_set/_base.py,sha256=b2T0r8brV8h8gt96GcArFTEFNg3vKwN1qPmPN6QkdeU,4290
83
- skfolio/uncertainty_set/_bootstrap.py,sha256=BRD8LhGKULkqqCBjLqU1EtCAMBkLJKEXJygQT6WsaAY,11249
84
- skfolio/uncertainty_set/_empirical.py,sha256=ACqMVTBKibJm6E3IP4TOi3MYsxKMhiEoix5D_fp9X-w,9364
85
- skfolio/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
- skfolio/utils/bootstrap.py,sha256=3zY2kO_GQURKEcQMCasJOSByde9Mt2IAi3KJH0_a4mk,3550
87
- skfolio/utils/equations.py,sha256=9XFcRB6_UuxlAR-dWwf1XPxAHO9p5DfcC-bF5onr7Ws,15539
88
- skfolio/utils/sorting.py,sha256=lSjMvH2L-sSj-06B3MlwBrH1rtjCeGEe4hG894W7TE0,3504
89
- skfolio/utils/stats.py,sha256=OoePNjqBNGKGJzHTqzG9-i8JXVJcx7k-qCVCE9TL-pY,16995
90
- skfolio/utils/tools.py,sha256=m31oruGPMMTf5XYm3BruXyv1dv6I7rvhCpEVWUcusdE,20925
91
- skfolio-0.7.0.dist-info/LICENSE,sha256=F6Gi-ZJX5BlVzYK8R9NcvAkAsKa7KO29xB1OScbrH6Q,1526
92
- skfolio-0.7.0.dist-info/METADATA,sha256=uCACwU4Q--zy8DpkNlAANtkdrDQWTWEDBjfzpfD12U4,20109
93
- skfolio-0.7.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
94
- skfolio-0.7.0.dist-info/top_level.txt,sha256=NXEaoS9Ms7t32gxkb867nV0OKlU0KmssL7IJBVo0fJs,8
95
- skfolio-0.7.0.dist-info/RECORD,,