skfolio 0.5.2__py3-none-any.whl → 0.7.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 (62) hide show
  1. skfolio/__init__.py +5 -5
  2. skfolio/cluster/__init__.py +1 -1
  3. skfolio/cluster/_hierarchical.py +1 -1
  4. skfolio/datasets/__init__.py +2 -2
  5. skfolio/distance/__init__.py +3 -3
  6. skfolio/distance/_distance.py +7 -6
  7. skfolio/exceptions.py +2 -2
  8. skfolio/measures/__init__.py +23 -23
  9. skfolio/model_selection/__init__.py +2 -2
  10. skfolio/moments/__init__.py +11 -11
  11. skfolio/moments/covariance/__init__.py +6 -6
  12. skfolio/moments/covariance/_denoise_covariance.py +2 -1
  13. skfolio/moments/covariance/_detone_covariance.py +2 -1
  14. skfolio/moments/covariance/_empirical_covariance.py +2 -1
  15. skfolio/moments/covariance/_ew_covariance.py +2 -1
  16. skfolio/moments/covariance/_gerber_covariance.py +2 -1
  17. skfolio/moments/covariance/_implied_covariance.py +1 -1
  18. skfolio/moments/expected_returns/__init__.py +2 -2
  19. skfolio/moments/expected_returns/_empirical_mu.py +2 -1
  20. skfolio/moments/expected_returns/_equilibrium_mu.py +2 -1
  21. skfolio/moments/expected_returns/_ew_mu.py +2 -1
  22. skfolio/moments/expected_returns/_shrunk_mu.py +2 -1
  23. skfolio/optimization/__init__.py +10 -10
  24. skfolio/optimization/cluster/__init__.py +1 -1
  25. skfolio/optimization/cluster/_nco.py +3 -2
  26. skfolio/optimization/cluster/hierarchical/__init__.py +1 -1
  27. skfolio/optimization/cluster/hierarchical/_herc.py +2 -1
  28. skfolio/optimization/cluster/hierarchical/_hrp.py +2 -1
  29. skfolio/optimization/convex/__init__.py +3 -3
  30. skfolio/optimization/convex/_base.py +344 -31
  31. skfolio/optimization/convex/_distributionally_robust.py +4 -1
  32. skfolio/optimization/convex/_maximum_diversification.py +4 -2
  33. skfolio/optimization/convex/_mean_risk.py +125 -17
  34. skfolio/optimization/convex/_risk_budgeting.py +3 -1
  35. skfolio/optimization/ensemble/_stacking.py +2 -2
  36. skfolio/optimization/naive/__init__.py +1 -1
  37. skfolio/optimization/naive/_naive.py +3 -2
  38. skfolio/portfolio/__init__.py +1 -1
  39. skfolio/portfolio/_base.py +1 -0
  40. skfolio/portfolio/_portfolio.py +1 -0
  41. skfolio/pre_selection/__init__.py +1 -1
  42. skfolio/pre_selection/_drop_correlated.py +1 -1
  43. skfolio/pre_selection/_select_complete.py +6 -4
  44. skfolio/pre_selection/_select_k_extremes.py +1 -1
  45. skfolio/pre_selection/_select_non_dominated.py +1 -1
  46. skfolio/pre_selection/_select_non_expiring.py +6 -4
  47. skfolio/prior/__init__.py +3 -3
  48. skfolio/prior/_black_litterman.py +2 -1
  49. skfolio/prior/_empirical.py +2 -1
  50. skfolio/prior/_factor_model.py +2 -1
  51. skfolio/typing.py +6 -6
  52. skfolio/uncertainty_set/__init__.py +5 -5
  53. skfolio/uncertainty_set/_base.py +3 -2
  54. skfolio/utils/equations.py +58 -1
  55. skfolio/utils/stats.py +8 -8
  56. skfolio/utils/tools.py +10 -10
  57. {skfolio-0.5.2.dist-info → skfolio-0.7.0.dist-info}/METADATA +32 -29
  58. skfolio-0.7.0.dist-info/RECORD +95 -0
  59. {skfolio-0.5.2.dist-info → skfolio-0.7.0.dist-info}/WHEEL +1 -1
  60. skfolio-0.5.2.dist-info/RECORD +0 -95
  61. {skfolio-0.5.2.dist-info → skfolio-0.7.0.dist-info}/LICENSE +0 -0
  62. {skfolio-0.5.2.dist-info → skfolio-0.7.0.dist-info}/top_level.txt +0 -0
skfolio/utils/stats.py CHANGED
@@ -23,20 +23,20 @@ from skfolio.utils.tools import AutoEnum
23
23
 
24
24
  __all__ = [
25
25
  "NBinsMethod",
26
- "n_bins_freedman",
27
- "n_bins_knuth",
28
- "is_cholesky_dec",
26
+ "assert_is_distance",
29
27
  "assert_is_square",
30
28
  "assert_is_symmetric",
31
- "assert_is_distance",
32
- "cov_nearest",
33
- "cov_to_corr",
34
- "corr_to_cov",
35
29
  "commutation_matrix",
36
30
  "compute_optimal_n_clusters",
31
+ "corr_to_cov",
32
+ "cov_nearest",
33
+ "cov_to_corr",
34
+ "is_cholesky_dec",
35
+ "minimize_relative_weight_deviation",
36
+ "n_bins_freedman",
37
+ "n_bins_knuth",
37
38
  "rand_weights",
38
39
  "rand_weights_dirichlet",
39
- "minimize_relative_weight_deviation",
40
40
  ]
41
41
 
42
42
 
skfolio/utils/tools.py CHANGED
@@ -21,21 +21,21 @@ import sklearn.base as skb
21
21
 
22
22
  __all__ = [
23
23
  "AutoEnum",
24
- "cached_property_slots",
25
- "cache_method",
26
- "input_to_array",
27
24
  "args_names",
28
- "format_measure",
29
- "optimal_rounding_decimals",
30
25
  "bisection",
31
- "safe_split",
32
- "fit_single_estimator",
33
- "fit_and_predict",
34
- "safe_indexing",
26
+ "cache_method",
27
+ "cached_property_slots",
28
+ "check_estimator",
35
29
  "deduplicate_names",
36
30
  "default_asset_names",
37
- "check_estimator",
31
+ "fit_and_predict",
32
+ "fit_single_estimator",
33
+ "format_measure",
38
34
  "get_feature_names",
35
+ "input_to_array",
36
+ "optimal_rounding_decimals",
37
+ "safe_indexing",
38
+ "safe_split",
39
39
  ]
40
40
 
41
41
  GenericAlias = type(list[int])
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: skfolio
3
- Version: 0.5.2
3
+ Version: 0.7.0
4
4
  Summary: Portfolio optimization built on top of scikit-learn
5
5
  Author-email: Hugo Delatte <delatte.hugo@gmail.com>
6
- Maintainer-email: Hugo Delatte <delatte.hugo@gmail.com>
6
+ Maintainer-email: Hugo Delatte <delatte.hugo@gmail.com>, Matteo Manzi <matteomanzi09@gmail.com>
7
7
  License: BSD 3-Clause License
8
8
 
9
9
  Copyright (c) 2007-2023 The skfolio developers.
@@ -56,34 +56,37 @@ Classifier: Topic :: Software Development
56
56
  Requires-Python: >=3.10
57
57
  Description-Content-Type: text/x-rst
58
58
  License-File: LICENSE
59
- Requires-Dist: numpy >=1.23.4
60
- Requires-Dist: scipy >=1.8.0
61
- Requires-Dist: pandas >=1.4.1
62
- Requires-Dist: cvxpy >=1.4.1
63
- Requires-Dist: scikit-learn >=1.5.0
64
- Requires-Dist: joblib >=1.3.2
65
- Requires-Dist: plotly >=5.22.0
59
+ Requires-Dist: numpy>=1.23.4
60
+ Requires-Dist: scipy>=1.8.0
61
+ Requires-Dist: pandas>=1.4.1
62
+ Requires-Dist: cvxpy>=1.4.1
63
+ Requires-Dist: scikit-learn>=1.6.0
64
+ Requires-Dist: joblib>=1.3.2
65
+ Requires-Dist: plotly>=5.22.0
66
+ 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"
66
72
  Provides-Extra: docs
67
- Requires-Dist: Sphinx ; extra == 'docs'
68
- Requires-Dist: sphinx-gallery ; extra == 'docs'
69
- Requires-Dist: sphinx-design ; extra == 'docs'
70
- Requires-Dist: pydata-sphinx-theme ==0.13.3 ; extra == 'docs'
71
- Requires-Dist: matplotlib ; extra == 'docs'
72
- Requires-Dist: kaleido ==0.2.1 ; extra == 'docs'
73
- Requires-Dist: sphinx-copybutton ; extra == 'docs'
74
- Requires-Dist: numpydoc ; extra == 'docs'
75
- Requires-Dist: sphinx-togglebutton ; extra == 'docs'
76
- Requires-Dist: sphinx-favicon ; extra == 'docs'
77
- Requires-Dist: sphinx-prompt ; extra == 'docs'
78
- Requires-Dist: sphinxext.opengraph ; extra == 'docs'
79
- Requires-Dist: sphinx-sitemap ; extra == 'docs'
80
- Requires-Dist: jupyterlite-sphinx ; extra == 'docs'
81
- Requires-Dist: jupyterlite-pyodide-kernel ; extra == 'docs'
82
- Requires-Dist: nbformat ; extra == 'docs'
83
- Provides-Extra: tests
84
- Requires-Dist: pytest ; extra == 'tests'
85
- Requires-Dist: pytest-cov ; extra == 'tests'
86
- Requires-Dist: ruff ; extra == 'tests'
73
+ Requires-Dist: cvxpy[SCIP]; extra == "docs"
74
+ Requires-Dist: Sphinx; extra == "docs"
75
+ Requires-Dist: sphinx-gallery; extra == "docs"
76
+ Requires-Dist: sphinx-design; extra == "docs"
77
+ Requires-Dist: pydata-sphinx-theme==0.13.3; extra == "docs"
78
+ Requires-Dist: matplotlib; extra == "docs"
79
+ Requires-Dist: kaleido==0.2.1; extra == "docs"
80
+ Requires-Dist: sphinx-copybutton; extra == "docs"
81
+ Requires-Dist: numpydoc; extra == "docs"
82
+ Requires-Dist: sphinx-togglebutton; extra == "docs"
83
+ Requires-Dist: sphinx-favicon; extra == "docs"
84
+ Requires-Dist: sphinx-prompt; extra == "docs"
85
+ Requires-Dist: sphinxext.opengraph; extra == "docs"
86
+ Requires-Dist: sphinx-sitemap; extra == "docs"
87
+ Requires-Dist: jupyterlite-sphinx; extra == "docs"
88
+ Requires-Dist: jupyterlite-pyodide-kernel; extra == "docs"
89
+ Requires-Dist: nbformat; extra == "docs"
87
90
 
88
91
  .. -*- mode: rst -*-
89
92
 
@@ -0,0 +1,95 @@
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.5.0)
2
+ Generator: setuptools (75.6.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,95 +0,0 @@
1
- skfolio/__init__.py,sha256=5pn5LpTz6v2j2sxGkY97cVRrSPsN3Yav9b6Uw08boEI,618
2
- skfolio/exceptions.py,sha256=3LCxKlxgEaIMPQPCHjo1UiL7rlJnD15dNRMyBeYyKcc,784
3
- skfolio/typing.py,sha256=yEZiCZ6UIyfYUqtfj9Kf2KA9mrjUbmxyzpH9uqVboJs,1378
4
- skfolio/cluster/__init__.py,sha256=4g-PFB_ld9BhiQ1ZPvvAorpFbRwd_p_DkeRlulDv2Hk,251
5
- skfolio/cluster/_hierarchical.py,sha256=16INBe5HB7ALODO3RNI8ZjOYALtMZa3U_7EP1aEIxp8,12819
6
- skfolio/datasets/__init__.py,sha256=TKzb3wucwuaBI7V8GSiEIun-oaV0W0Mhl_XJgMjlajU,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=vpdmjFlJeI0AvPV3r5tp2zooAG4N9ihCwPlaqqdVj1w,547
13
- skfolio/distance/_base.py,sha256=jBgRk6lZrP1woSI9541fTfxBBkp4WCTLlRPmWcmA3j4,1326
14
- skfolio/distance/_distance.py,sha256=yRyyxMXqKYOiuXdq35aQ2MfS8fp6Xh9BR_ABbUVkaGg,19034
15
- skfolio/measures/__init__.py,sha256=9ThQikIAQcfKRLSCoMr-Z5vE2-ThtYe9B-L40b6Ewg0,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=8j9Z5tpbgBScjFbn8ZsCm_6rZO7RkPQ1QIF8BqYMVA8,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=zwxaRO4TLoPj8qrcYSofNyd3tYhbLLcZWQaErzfDdNg,794
25
- skfolio/moments/covariance/__init__.py,sha256=maWkl5Uh0RMgfaxQ0yO-c5zhJg51vm1zrtxZrk_p0pg,1068
26
- skfolio/moments/covariance/_base.py,sha256=98o4YDFcOZ4X4hRFlrJAwWifULGzisEyRZaxFYW1qeA,3970
27
- skfolio/moments/covariance/_denoise_covariance.py,sha256=8NW76w8Sdok1OqcqdjM6KtzpzWYp6cnOeaTlma-i7OA,6943
28
- skfolio/moments/covariance/_detone_covariance.py,sha256=XmIk0ZpkWwO2nu_gH9zK2s09qoNGHHyJwy0F0JZ9250,6050
29
- skfolio/moments/covariance/_empirical_covariance.py,sha256=_7T1x4p-vdATQvQzQjQBMJhXw7Xvq1qmDvgsaRGyQvA,3501
30
- skfolio/moments/covariance/_ew_covariance.py,sha256=jzLE4zSEfLCToNBTIG5CMy1n9EYWo1IHJPifcyLVe1g,3673
31
- skfolio/moments/covariance/_gerber_covariance.py,sha256=3wSwZtji2cEr2rzZ6pi2knmuOSzTFpyb_4XJl_S3Yj0,5856
32
- skfolio/moments/covariance/_graphical_lasso_cv.py,sha256=_6WQ1sjYJRG8XDq8zb5YIPtDhpb8CmLhLBlfewBvqjM,6539
33
- skfolio/moments/covariance/_implied_covariance.py,sha256=L8odXiyNTfrnyroZUZSr8KkHv9_c3OCpdoqrtLqkonQ,17732
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=8UxgcLNGoVy-xty8S2z2kre7IE_P1cmE9tGAE08jZfE,504
38
- skfolio/moments/expected_returns/_base.py,sha256=xk9mzi48uCOHaMTGQBMr3FU7Ai_shxYhmGeOsVwjv9Q,871
39
- skfolio/moments/expected_returns/_empirical_mu.py,sha256=tD7v_LV6WWjox967X22i6xzhKqnipmday_wS4RhywhA,1820
40
- skfolio/moments/expected_returns/_equilibrium_mu.py,sha256=npVmeksqdoKwYtt-QF0_58764VNzS4ruuUj9Fr343YI,4364
41
- skfolio/moments/expected_returns/_ew_mu.py,sha256=8xVq1dnNK_Ed9b4CUT-rI2V4b5qe-oxzQ5cL0reTlBw,2066
42
- skfolio/moments/expected_returns/_shrunk_mu.py,sha256=IJ7nj0xvNdUG2f6QaXg3grztDnu0l2nSRnTDTZgNQok,8232
43
- skfolio/optimization/__init__.py,sha256=vXIbwWJL48zJ1jy7ZB2PPBVx7rZo0vVA8QQQuD-L6ts,1021
44
- skfolio/optimization/_base.py,sha256=LoRONJP70AwbFpdgqVS_g145pCx0JGkazjWvkQzT_iM,5748
45
- skfolio/optimization/cluster/__init__.py,sha256=M3xVdYhNKp4e9CB7hzb4yjTxkkNCHh7Mt_KGFFrkOgs,388
46
- skfolio/optimization/cluster/_nco.py,sha256=J3pPd9XkrAcWaKPSW5vMdtaFpDshBvOdUudbDGQSoNI,16366
47
- skfolio/optimization/cluster/hierarchical/__init__.py,sha256=YnfcPHvjwB6kcG4hoQqc0NqIJKaG7OjBtmXNbOxCq08,405
48
- skfolio/optimization/cluster/hierarchical/_base.py,sha256=l8rJHCH_79FOPdDL2I0dmAWcVWnNkcXHtzt0U-L7BN8,16280
49
- skfolio/optimization/cluster/hierarchical/_herc.py,sha256=LPtUrvyW9G60OZhMWlZH_GHZHdX8mJHksrYGB-WPRVg,20358
50
- skfolio/optimization/cluster/hierarchical/_hrp.py,sha256=dn6EKiTJ1wkoFhPdst6vlXnSQvXSYsMtB2zaGNVPpyA,18115
51
- skfolio/optimization/convex/__init__.py,sha256=F6BPFikTo0B-7JCKazqLGEwM3RkgTNbFm5GAGkaq9Uo,570
52
- skfolio/optimization/convex/_base.py,sha256=P1rSw1oJAZR_BuOxJeXJrYHlkFD0AwCOaBl3mj54E8U,76413
53
- skfolio/optimization/convex/_distributionally_robust.py,sha256=tw_UNSDfAXP02khE10hpmcdlz3DQXQD7ttDqFDSHV1E,17811
54
- skfolio/optimization/convex/_maximum_diversification.py,sha256=IVKVbK7bh4KPkhpNWLLerl-qx9Qcmf2cIIRotP8r8nI,19500
55
- skfolio/optimization/convex/_mean_risk.py,sha256=H4Ik6vvIETdAZnNCA4Jhk_OTirHJg26KQZ5iLsXgaHo,44176
56
- skfolio/optimization/convex/_risk_budgeting.py,sha256=VXm6vUeB-BDEn6KhWxg1-9UmjqpFR1E04SM4NLcNuBY,23510
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=ZoICUnc_MwoXDQAR2kewCg-KIezSOIUdDV1fuf7vMyA,14168
60
- skfolio/optimization/naive/__init__.py,sha256=Dkr55R48urC-jfYN007NTbei16N91Na_EDYLVqzhGgQ,147
61
- skfolio/optimization/naive/_naive.py,sha256=AhEyYKEUAm-Fjn4p8SHwhp7yE9iF0tRyDZIjKYV4EeU,6390
62
- skfolio/population/__init__.py,sha256=rsPPMUv95aTK7vmpPeQwF8NzFuBwk6RDo5g4HNaPzNM,80
63
- skfolio/population/_population.py,sha256=ej45tdk_CcMlNToCsx2VUk2YRktK3k4cRczGBpjlnDE,30427
64
- skfolio/portfolio/__init__.py,sha256=YYtcAPmA2zeCxFGTXegg2FXcA7py6CxOX7IMTdYuXl0,586
65
- skfolio/portfolio/_base.py,sha256=EFLsvHoxZmDvGPOKePr6hQGXU7y7TWsALvzYP9qt0fQ,39588
66
- skfolio/portfolio/_multi_period_portfolio.py,sha256=K2JfEwlPD9iGO58lOdk7WUbWuXZDWw2prPT5T7pOdto,24387
67
- skfolio/portfolio/_portfolio.py,sha256=gqvCKM6ZVfwZrgixiYdahgbQ1DRNW2LkGHkXOpjleb4,32753
68
- skfolio/pre_selection/__init__.py,sha256=_H0jziIOq0nUETFQvjBP4AtKGzdh0EGGSXaECTcUhxY,482
69
- skfolio/pre_selection/_drop_correlated.py,sha256=EDwRVqmkU-52VXQ-u350PYgjWCI5QnB8CfR1taLWffY,3818
70
- skfolio/pre_selection/_select_complete.py,sha256=sE9TCitUA5KbEqPssl0qsCBD-oV_5Vx-b-kdU0hsFHI,3885
71
- skfolio/pre_selection/_select_k_extremes.py,sha256=25FGievaDqlAHAxUmyznAd3LIq_7D3ajaSVD6E7luSI,3061
72
- skfolio/pre_selection/_select_non_dominated.py,sha256=HLGNS14vgQlg5I5zj-b1QpgCaZROd0FALQSmyXGpK7o,5983
73
- skfolio/pre_selection/_select_non_expiring.py,sha256=RAWnuW2u7y0ibsimJp5mRM9JQFOn0hHp-mWsp0FLPbs,4995
74
- skfolio/preprocessing/__init__.py,sha256=15A1bzfPsbfxxXgGP1gstf4R0E_347Wn18z5W5jH-hk,94
75
- skfolio/preprocessing/_returns.py,sha256=6mdNi7Dun5eNK4LdqKAxP4CCZEVfAEz40HXVrOiAaLA,4561
76
- skfolio/prior/__init__.py,sha256=jql8NTiWlykPKJUXTOPdqm531mP8Pul1QAR6hXTXA6c,446
77
- skfolio/prior/_base.py,sha256=u9GLCKJl-Txiem5rIO-qkH3VIyem3taD6T9kMzsYPRY,1941
78
- skfolio/prior/_black_litterman.py,sha256=W3HbpvkViEiD7AOgpdVmNYTlWKSGDgo9Y3BfSrbMIQ4,10347
79
- skfolio/prior/_empirical.py,sha256=K3htSj_MGX6wNL-XxkTqFxz8WeqNzek6X4YYwKUmMC4,7207
80
- skfolio/prior/_factor_model.py,sha256=xMWyOaJNrCM6NyDQK_-G4wCfREaThI4QvhxxGhsodII,11311
81
- skfolio/uncertainty_set/__init__.py,sha256=LlMHtYv9G9fgtM7m4sCSToS9et57Pm2Q2gGchTVrj6c,617
82
- skfolio/uncertainty_set/_base.py,sha256=Wk8nr-FwurfX13lJR5x2LMxWTHAO6B61A-G5yHEevDw,4243
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=MQ1w3VSM2n_j9bTIKAQA716aWKYyUqtw5yM2bU-9t-M,13745
88
- skfolio/utils/sorting.py,sha256=lSjMvH2L-sSj-06B3MlwBrH1rtjCeGEe4hG894W7TE0,3504
89
- skfolio/utils/stats.py,sha256=mWMpJ_XBy400kx7GlwBvR4Fwo8ValOZ9J3VDLODDaHQ,16995
90
- skfolio/utils/tools.py,sha256=4KrmBR9jOLiI6j0hb27gsPC--OHXo4Sp1xl-6i-k9Tg,20925
91
- skfolio-0.5.2.dist-info/LICENSE,sha256=F6Gi-ZJX5BlVzYK8R9NcvAkAsKa7KO29xB1OScbrH6Q,1526
92
- skfolio-0.5.2.dist-info/METADATA,sha256=YCnMzyRfmhzQpJ6P6VySw-DJlYuHBdw4bkcfIrR_Gc8,19906
93
- skfolio-0.5.2.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
94
- skfolio-0.5.2.dist-info/top_level.txt,sha256=NXEaoS9Ms7t32gxkb867nV0OKlU0KmssL7IJBVo0fJs,8
95
- skfolio-0.5.2.dist-info/RECORD,,