This release is a pre-release and may not be stable for production use.
PortLearn
PortLearn is a finance-first research framework for controlled, reproducible, and modular experimentation in machine-learned portfolio choice.
Change the research component without accidentally changing the financial experiment.
PortLearn is being developed to support comparable portfolio-learning research across classical methods, forecasting-based machine learning, direct deep learning, reinforcement learning, optimization-based approaches, and user-defined research components under common financial experiment contracts.
Status
PortLearn is in early development and has not yet been published as a stable package release. The current public surface exposes the research foundation and API contracts. The public API is not yet stable.
Design Direction
PortLearn aims to provide reusable infrastructure for:
- financial data and information-set construction;
- modular feature engineering;
- portfolio strategy composition;
- common portfolio accounting;
- controlled comparison of alternative methods;
- research reproducibility and provenance.
PortLearn is a research toolkit, not a repository for individual paper-specific models or unpublished research architectures.
Brand Assets
The PortLearn logo and icon set live in docs/assets/brand/, with usage guidance (which lockup for which context, including PyPI presentation) in docs/assets/brand/README.md.
Roadmap
PortLearn is under active research development. This roadmap is intentionally high-level: it communicates broad direction only, is subject to change as the research framework develops, and does not promise dates or specific functionality.
Available now
- Research foundation: time/chronology contracts, observation handling, information sets, and the core research interfaces that define how portfolio research components compose.
- Validation utilities for detecting violations of point-in-time information contracts.
- Canonical run manifests for recording environment and command provenance.
- Data access: a researcher-facing data facade (
portlearn.data) with Fama/French and FRED provider adapters, a sealed research-dataset container with pandas conversion, and availability-aware alignment of mixed-frequency observations on a period calendar. - Chronologically valid feature transforms: lags, rolling statistics, scalers, and carry-forward.
- Contracts for the forecasting and estimation lifecycle (fitting, refitting, forecast timing, tuning, seeds, determinism, provenance); estimators are not provided yet.
- Descriptive research-dataset diagnostics (summary, correlation, coverage, missingness) with renderer-neutral plotting; rendering is available through the optional
plotextra.
Next
- Forecasting and estimation methods that implement the lifecycle contracts.
- Experiment and reproducibility infrastructure.
Planned
- Portfolio construction and accounting.
- Later deep-learning and reinforcement-learning research capabilities.
Entries move forward on this roadmap as the underlying research foundation stabilizes; nothing here is a dated commitment.
Development
The local development battery, from a fresh clone:
uv sync --locked
uv run ruff check .
uv run pytest
uv build
uv run python scripts/verify_built_wheel.py
Release files for portlearn 0.0.1.dev1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| portlearn-0.0.1.dev1.tar.gz | 2.5 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| portlearn-0.0.1.dev1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.6 MB
Release files / portlearn-0.0.1.dev1.tar.gz
| Download URL | portlearn-0.0.1.dev1.tar.gz |
|---|---|
| Size | 2.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
180c0d9d1faeb61f464028069153aa3ed17691a0a6b1038f174c6929ac7f68e4
|
|
BLAKE2b-256 checksum How to use checksums |
793cd1b3a38bbd70ba368290cefbc4518f9895856b75364212f4ebbdd35f1422
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / portlearn-0.0.1.dev1-py3-none-any.whl
| Download URL | portlearn-0.0.1.dev1-py3-none-any.whl |
|---|---|
| Size | 112.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b692b3717d0c665ca385e5f16599c3d6b8323769a6a3ccb231aae309b105cfcb
|
|
BLAKE2b-256 checksum How to use checksums |
f1bc3cc97e2cd2203e7ca36b0021bb168924ad233f593593eedd399502d22ee6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|