Portfolio Research Lab — a local-first Python app for backtesting investment strategies.
Tasks are defined as poe tasks in pyproject.toml.
uv run poe setup # install deps + fetch data/ (fresh-clone setup)
uv run poe refresh-data # re-fetch latest S&P 500 + fed funds data
uv sync --extra dev # install deps only (creates .venv/)
uv run poe dev # run the Streamlit app
uv run poe lint # ruff check .
uv run poe format # ruff format .
uv run poe typecheck # ty check
uv run poe test # pytest
uv run poe cov # pytest + coverage report
uv run poe check # lint + typecheck + test
uv run poe # list all tasks- Python ≥ 3.12, managed with
uv. - ruff for lint + format (line length 100, double quotes);
tyfor type checking. All config lives inpyproject.toml. Keep the code fully type-annotated. - Run
uv run poe checkbefore committing. CI (.github/workflows/ci.yml) runs the same gates on push and PRs.