LICENSE
MANIFEST.in
README.md
pyproject.toml
setup.py
examples/01_quickstart.py
examples/02_from_config.py
examples/03_objectives.py
examples/04_constraints.py
examples/05_execution.py
examples/06_rebalance.py
examples/07_signal_sizing.py
examples/08_risk_budget.py
examples/09_config_driven.py
examples/10_diagnostics.py
examples/11_warm_start.py
examples/12_custom_constraint.py
examples/README.md
src/pyoptima/__init__.py
src/pyoptima/cli.py
src/pyoptima/config.py
src/pyoptima/config_app.py
src/pyoptima/config_utils.py
src/pyoptima/diagnostics.py
src/pyoptima/exceptions.py
src/pyoptima/py.typed
src/pyoptima.egg-info/PKG-INFO
src/pyoptima.egg-info/SOURCES.txt
src/pyoptima.egg-info/dependency_links.txt
src/pyoptima.egg-info/entry_points.txt
src/pyoptima.egg-info/requires.txt
src/pyoptima.egg-info/top_level.txt
src/pyoptima/api/__init__.py
src/pyoptima/api/main.py
src/pyoptima/api/utils.py
src/pyoptima/api/dependencies/__init__.py
src/pyoptima/api/dependencies/auth.py
src/pyoptima/api/dependencies/core.py
src/pyoptima/api/models/__init__.py
src/pyoptima/api/models/jobs.py
src/pyoptima/api/models/optimization.py
src/pyoptima/api/models/requests.py
src/pyoptima/api/models/responses.py
src/pyoptima/api/models/solvers.py
src/pyoptima/api/models/templates.py
src/pyoptima/api/routes/__init__.py
src/pyoptima/api/routes/v1/__init__.py
src/pyoptima/api/routes/v1/auth.py
src/pyoptima/api/routes/v1/jobs.py
src/pyoptima/api/routes/v1/optimize.py
src/pyoptima/api/routes/v1/settings.py
src/pyoptima/api/routes/v1/solvers.py
src/pyoptima/api/routes/v1/templates.py
src/pyoptima/api/services/__init__.py
src/pyoptima/api/services/database_job_manager.py
src/pyoptima/api/services/job_manager.py
src/pyoptima/api/services/optimization_service.py
src/pyoptima/app_config/__init__.py
src/pyoptima/app_config/paths.py
src/pyoptima/app_config/ui.py
src/pyoptima/configs/__init__.py
src/pyoptima/configs/constraints.py
src/pyoptima/configs/execution.py
src/pyoptima/configs/multi_account.py
src/pyoptima/configs/portfolio.py
src/pyoptima/configs/rebalance.py
src/pyoptima/configs/risk_budget.py
src/pyoptima/configs/signal_sizing.py
src/pyoptima/configs/solver.py
src/pyoptima/configs/trading_schedule.py
src/pyoptima/constraints/__init__.py
src/pyoptima/constraints/base.py
src/pyoptima/constraints/bounds.py
src/pyoptima/constraints/cardinality.py
src/pyoptima/constraints/linear.py
src/pyoptima/constraints/liquidity.py
src/pyoptima/constraints/portfolio.py
src/pyoptima/constraints/risk.py
src/pyoptima/constraints/sector.py
src/pyoptima/constraints/turnover.py
src/pyoptima/core/__init__.py
src/pyoptima/core/problem.py
src/pyoptima/core/protocols.py
src/pyoptima/core/result.py
src/pyoptima/db/__init__.py
src/pyoptima/db/base.py
src/pyoptima/db/models/__init__.py
src/pyoptima/db/models/optimization_job.py
src/pyoptima/docs/__init__.py
src/pyoptima/docs/cli.py
src/pyoptima/estimators/__init__.py
src/pyoptima/estimators/base.py
src/pyoptima/estimators/execution.py
src/pyoptima/estimators/multi_account.py
src/pyoptima/estimators/portfolio.py
src/pyoptima/estimators/rebalance.py
src/pyoptima/estimators/risk_budget.py
src/pyoptima/estimators/signal_sizing.py
src/pyoptima/etl/__init__.py
src/pyoptima/etl/adapter.py
src/pyoptima/etl/output.py
src/pyoptima/expression/__init__.py
src/pyoptima/expression/ast.py
src/pyoptima/expression/evaluator.py
src/pyoptima/expression/parser.py
src/pyoptima/io/__init__.py
src/pyoptima/io/data.py
src/pyoptima/io/readers.py
src/pyoptima/model/__init__.py
src/pyoptima/model/core.py
src/pyoptima/model/sets.py
src/pyoptima/objectives/__init__.py
src/pyoptima/objectives/base.py
src/pyoptima/objectives/portfolio.py
src/pyoptima/objectives/trading.py
src/pyoptima/solvers/__init__.py
src/pyoptima/solvers/base.py
src/pyoptima/solvers/pyomo_solver.py
src/pyoptima/templates/__init__.py
src/pyoptima/templates/base.py
src/pyoptima/templates/classic.py
src/pyoptima/templates/execution.py
src/pyoptima/templates/execution_config.py
src/pyoptima/templates/facility.py
src/pyoptima/templates/mathematical.py
src/pyoptima/templates/multi_account.py
src/pyoptima/templates/multi_account_config.py
src/pyoptima/templates/network.py
src/pyoptima/templates/packing.py
src/pyoptima/templates/portfolio.py
src/pyoptima/templates/portfolio_config.py
src/pyoptima/templates/rebalance.py
src/pyoptima/templates/rebalance_config.py
src/pyoptima/templates/risk_budget.py
src/pyoptima/templates/risk_budget_config.py
src/pyoptima/templates/routing.py
src/pyoptima/templates/scheduling.py
src/pyoptima/templates/signal_sizing.py
src/pyoptima/templates/signal_sizing_config.py
src/pyoptima/templates/trading_schedule.py
src/pyoptima/templates/trading_schedule_config.py
src/pyoptima/trading/__init__.py
src/pyoptima/trading/costs.py
src/pyoptima/trading/market_data.py
src/pyoptima/trading/risk.py
src/pyoptima/ui/__init__.py
src/pyoptima/ui/build.py
src/pyoptima/ui/dev.py
src/pyoptima/ui/server.py
src/pyoptima/ui/node_modules/flatted/python/flatted.py
src/pyoptima/ui/static/404.html
src/pyoptima/ui/static/__next.__PAGE__.txt
src/pyoptima/ui/static/__next._full.txt
src/pyoptima/ui/static/__next._head.txt
src/pyoptima/ui/static/__next._index.txt
src/pyoptima/ui/static/__next._tree.txt
src/pyoptima/ui/static/index.html
src/pyoptima/ui/static/index.txt
src/pyoptima/ui/static/404/index.html
src/pyoptima/ui/static/_next/static/DOhKUGPaKmzUbrPqdHcbf/_buildManifest.js
src/pyoptima/ui/static/_next/static/DOhKUGPaKmzUbrPqdHcbf/_clientMiddlewareManifest.json
src/pyoptima/ui/static/_next/static/DOhKUGPaKmzUbrPqdHcbf/_ssgManifest.js
src/pyoptima/ui/static/_next/static/chunks/15264ee59506e6b2.js
src/pyoptima/ui/static/_next/static/chunks/1d1a106d95d665e1.js
src/pyoptima/ui/static/_next/static/chunks/35f906c0a64d35d6.js
src/pyoptima/ui/static/_next/static/chunks/4db8d98338d15ed8.js
src/pyoptima/ui/static/_next/static/chunks/592ebcfbfad5e19d.js
src/pyoptima/ui/static/_next/static/chunks/59ccaa9325a631ec.js
src/pyoptima/ui/static/_next/static/chunks/61443c7e4c464347.js
src/pyoptima/ui/static/_next/static/chunks/61cc43b3d7ad2990.js
src/pyoptima/ui/static/_next/static/chunks/7dad0aa6fcf0a754.css
src/pyoptima/ui/static/_next/static/chunks/82abf2d65f5428ae.js
src/pyoptima/ui/static/_next/static/chunks/8a5fe704a8256a8a.js
src/pyoptima/ui/static/_next/static/chunks/8f0eed398101b02e.js
src/pyoptima/ui/static/_next/static/chunks/a6dad97d9634a72d.js
src/pyoptima/ui/static/_next/static/chunks/a6dad97d9634a72d.js.map
src/pyoptima/ui/static/_next/static/chunks/a9ed074e89b16a5e.js
src/pyoptima/ui/static/_next/static/chunks/bdfd4b6fe812022a.js
src/pyoptima/ui/static/_next/static/chunks/d6bf9748e45e25cb.js
src/pyoptima/ui/static/_next/static/chunks/dde2c8e6322d1671.js
src/pyoptima/ui/static/_next/static/chunks/ff080b9512b96878.js
src/pyoptima/ui/static/_next/static/chunks/ff1a16fafef87110.js
src/pyoptima/ui/static/_next/static/chunks/turbopack-7026dae43e6d3026.js
src/pyoptima/ui/static/_not-found/__next._full.txt
src/pyoptima/ui/static/_not-found/__next._head.txt
src/pyoptima/ui/static/_not-found/__next._index.txt
src/pyoptima/ui/static/_not-found/__next._not-found.__PAGE__.txt
src/pyoptima/ui/static/_not-found/__next._not-found.txt
src/pyoptima/ui/static/_not-found/__next._tree.txt
src/pyoptima/ui/static/_not-found/index.html
src/pyoptima/ui/static/_not-found/index.txt
src/pyoptima/ui/static/documentation/__next._full.txt
src/pyoptima/ui/static/documentation/__next._head.txt
src/pyoptima/ui/static/documentation/__next._index.txt
src/pyoptima/ui/static/documentation/__next._tree.txt
src/pyoptima/ui/static/documentation/__next.documentation.__PAGE__.txt
src/pyoptima/ui/static/documentation/__next.documentation.txt
src/pyoptima/ui/static/documentation/index.html
src/pyoptima/ui/static/documentation/index.txt
src/pyoptima/ui/static/jobs/__next._full.txt
src/pyoptima/ui/static/jobs/__next._head.txt
src/pyoptima/ui/static/jobs/__next._index.txt
src/pyoptima/ui/static/jobs/__next._tree.txt
src/pyoptima/ui/static/jobs/__next.jobs.__PAGE__.txt
src/pyoptima/ui/static/jobs/__next.jobs.txt
src/pyoptima/ui/static/jobs/index.html
src/pyoptima/ui/static/jobs/index.txt
src/pyoptima/ui/static/login/__next._full.txt
src/pyoptima/ui/static/login/__next._head.txt
src/pyoptima/ui/static/login/__next._index.txt
src/pyoptima/ui/static/login/__next._tree.txt
src/pyoptima/ui/static/login/__next.login.__PAGE__.txt
src/pyoptima/ui/static/login/__next.login.txt
src/pyoptima/ui/static/login/index.html
src/pyoptima/ui/static/login/index.txt
src/pyoptima/ui/static/methods/__next._full.txt
src/pyoptima/ui/static/methods/__next._head.txt
src/pyoptima/ui/static/methods/__next._index.txt
src/pyoptima/ui/static/methods/__next._tree.txt
src/pyoptima/ui/static/methods/__next.methods.__PAGE__.txt
src/pyoptima/ui/static/methods/__next.methods.txt
src/pyoptima/ui/static/methods/index.html
src/pyoptima/ui/static/methods/index.txt
src/pyoptima/ui/static/optimization/__next._full.txt
src/pyoptima/ui/static/optimization/__next._head.txt
src/pyoptima/ui/static/optimization/__next._index.txt
src/pyoptima/ui/static/optimization/__next._tree.txt
src/pyoptima/ui/static/optimization/__next.optimization.__PAGE__.txt
src/pyoptima/ui/static/optimization/__next.optimization.txt
src/pyoptima/ui/static/optimization/index.html
src/pyoptima/ui/static/optimization/index.txt
src/pyoptima/ui/static/settings/__next._full.txt
src/pyoptima/ui/static/settings/__next._head.txt
src/pyoptima/ui/static/settings/__next._index.txt
src/pyoptima/ui/static/settings/__next._tree.txt
src/pyoptima/ui/static/settings/__next.settings.__PAGE__.txt
src/pyoptima/ui/static/settings/__next.settings.txt
src/pyoptima/ui/static/settings/index.html
src/pyoptima/ui/static/settings/index.txt
src/pyoptima/utils/__init__.py
src/pyoptima/utils/logging.py
src/pyoptima/worker/__init__.py
src/pyoptima/worker/config.py
src/pyoptima/worker/models.py
src/pyoptima/worker/processor.py
src/pyoptima/worker/runner.py
src/pyoptima/worker/job_sources/__init__.py
src/pyoptima/worker/job_sources/base.py
src/pyoptima/worker/job_sources/database.py
tests/test_etl_integration.py
tests/test_etl_pipeline.py