Skip to content

Commit

Permalink
some updates in TODOs
Browse files Browse the repository at this point in the history
  • Loading branch information
enzbus committed Feb 7, 2024
1 parent 3b826fa commit f217224
Showing 1 changed file with 15 additions and 15 deletions.
30 changes: 15 additions & 15 deletions TODOs_ROADMAP.rst
Original file line number Diff line number Diff line change
Expand Up @@ -21,31 +21,30 @@ their planned release.
----------------------

- [ ] Not part of public API; to be redesigned and probably dropped. Should use
``_loader_*`` and ``_storer_*`` from ``cvxportfolio.data``. Target ``1.1.0``.
``_loader_*`` and ``_storer_*`` from ``cvxportfolio.data``.

``cvxportfolio.forecast``
-------------------------

- cache logic needs improvement, not easily exposable to third-parties now with ``dataclass.__hash__``

- drop decorator
- drop dataclass
- drop dataclass, PR #133
- cache IO logic should be managed by forecaster not by simulator, could be done by ``initialize_estimator``; maybe enough to just
define it in the base class of forecasters
- improve names of internal methods, clean them (lots of stuff can be re-used at universe change, ...)
- generalize the mean estimator:

- use same code for ``past_returns``, ``past_returns**2``, ``past_volumes``, ...
- add rolling window option, should be in ``pd.Timedelta``
- add exponential moving avg, should be in half-life ``pd.Timedelta``
- add same extras to the covariance estimator
- [X] use same code for ``past_returns``, ``past_returns**2``, ``past_volumes``, .... Done in #126, target ``1.2.0``
- [X] add rolling window option, should be in ``pd.Timedelta``. Done in #126, target ``1.2.0``
- [X] add exponential moving avg, should be in half-life ``pd.Timedelta``. Done in #126, target ``1.2.0``
- [X] add same extras to the covariance estimator. Done in #126, target ``1.2.0``
- goal: make this module crystal clear; third-party ML models should use it (at least for caching)

``cvxportfolio.estimator``
--------------------------

- [ ] ``DataEstimator`` needs refactoring, too long and complex methods. Target
``1.1.1``.
- [ ] ``DataEstimator`` needs refactoring, too long and complex methods.
- ``Estimator`` could define base logic for on-disk caching. By itself it
wouldn't do anything, actual functionality implemented by forecasters' base
class.
Expand All @@ -65,8 +64,8 @@ their planned release.
YF), total returns like other data sources, or neither for non-stocks assets.
This would implement all data cleaning process as sequence of small steps
in separate methods, with good logging. It would also implement data quality
check in the ``preload`` method to give feedback to the user. PR #125
- [ ] Factor ``data.py`` in ``data/`` submodule. PR #125
check in the ``preload`` method to give feedback to the user. PR #127
- [ ] Factor ``data.py`` in ``data/`` submodule. PR #127

``cvxportfolio.simulator``
--------------------------
Expand All @@ -85,11 +84,12 @@ Partially public; only ``cvx.Gamma()`` (no arguments) and ``optimize_hyperparame
(simple usage) are public, all the rest is not.

- [ ] Clean up interface w/ ``MarketSimulator``, right now it calls private
methods, maybe enough to make them public. Target ``1.1.1``.
methods, maybe enough to make them public.
- [ ] Add risk/fine default ``GammaTrade``, ``GammaRisk`` (which are
``RangeHyperParameter``) modeled after original examples from paper.
- [ ] Add ``Constant`` internal object throughout the library, also in ``DataEstimator``
- [X] Add ``Constant`` internal object throughout the library, also in ``DataEstimator``
in the case of scalar; it resolves to ``current_value`` if you pass a hyper-parameter.
Replaced with _resolve_hyperpar in #126.
- [ ] Distinguish integer and positive hyper-parameters (also enforced by Constant).
- [ ] Consider changing the increment/decrement model; hyperparameter object
could instead return a ``neighbors`` set at each point. Probably cleaner.
Expand All @@ -98,7 +98,7 @@ Partially public; only ``cvx.Gamma()`` (no arguments) and ``optimize_hyperparame
-------------------------

- [ ] Add `AllIn` policy, which allocates all to a single name (like
``AllCash``). Target ``1.1.0``.
``AllCash``).

Optimization policies
~~~~~~~~~~~~~~~~~~~~~
Expand All @@ -115,7 +115,7 @@ Optimization policies
----------------------------

- [ ] Add missing constraints from the paper.
- [ ] Make ``MarketNeutral`` accept arbitrary benchmark (policy object).
- [X] Make ``MarketNeutral`` accept arbitrary benchmark (policy object). Done in #126.

``cvxportfolio.result``
-----------------------
Expand Down Expand Up @@ -144,7 +144,7 @@ Development & testing

- [ ] Add extra pylint checkers.

- [ ] Code complexity. Target ``1.1.1``.
- [ ] Code complexity.
- [ ] Consider removing downloaded data from ``test_simulator.py``,
so only ``test_data.py`` requires internet.

Expand Down

0 comments on commit f217224

Please sign in to comment.