Skip to content

Commit

Permalink
todos roadmap
Browse files Browse the repository at this point in the history
  • Loading branch information
enzbus committed Dec 14, 2023
1 parent a303eea commit 73bc438
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 11 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,9 @@ ENV/
# Spyder project settings
.spyderproject

# Codium
.vscode/*

# Rope project settings
.ropeproject

Expand Down
49 changes: 38 additions & 11 deletions TODOs_ROADMAP.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,8 @@ as:

*Internal* methods that are used by
Cvxportfolio objects to communicate with each other (or other tasks) and don't
have a leading underscore, are considered public
if they are exposed through the HTML documentation
and are used in the examples.
have a leading underscore, are considered public if they are exposed through
the HTML documentation and/or are used in the examples.

In this document we list the planned
changes, in particular the ones that are relevant for semantic versioning, and
Expand All @@ -28,12 +27,14 @@ their planned release.
-------------------------

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

- drop decorator
- drop dataclass
- 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
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``
Expand All @@ -47,12 +48,16 @@ their planned release.
``1.0.4``.
- ``Estimator`` could define base logic for on-disk caching. By itself it
wouldn't do anything, actual functionality implemented by forecasters' base
class.
class.

- [ ] ``initialize_estimator`` could get optional market data partial
signature for caching. Default None, no incompatible change.
signature for caching. Default None, no incompatible change.
- [ ] Could get a ``finalize_estimator`` method used for storing
data, like risk models on disk, doesn't need arguments; it can use the
partial signature got above. No incompatible change.
data, like risk models on disk, doesn't need arguments; it can use the
partial signature got above. No incompatible change.

``cvxportfolio.data``
--------------------------

``cvxportfolio.simulator``
--------------------------
Expand All @@ -63,18 +68,40 @@ their planned release.
``cvxportfolio.policies``
-------------------------

Optimization policies
~~~~~~~~~~~~~~~~~~~~~

- [ ] Improve behavior for infeasibility/unboundedness/solver error. Target
``1.1.0``.

``cvxportfolio.constraints``
----------------------------

- [ ] Add missing constraints from the paper. Target ``1.1.0``.
- [ ] Make ``MarketNeutral`` accept arbitrary benchmark (policy object).

``cvxportfolio.result``
-----------------------

- [ ] Make ``BackTestResult`` interface methods with ``MarketSimulator``
public.


Development & testing
---------------------

- Add extra pylint checkers.
- [ ] Add extra pylint checkers.

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

Documentation
-------------

- Manual
- Quickstart

Examples
--------

Expand Down

0 comments on commit 73bc438

Please sign in to comment.