.dockerignore
.gitignore
.pre-commit-config.yaml
Dockerfile
LICENSE
MANIFEST.in
Makefile
PORTFOLIO_METHODS_SUMMARY.md
PUBLISHING.md
README.md
USAGE.md
docker-compose.yml
docker-entrypoint.sh
mkdocs.yml
pyoptima.cfg.example
pyproject.toml
setup.py
setup.sh
.github/workflows/publish.yml
.github/workflows/test.yml
archive/README.md
bin/README.md
bin/release.sh
data/README.md
data/assignment.json
data/cutting_stock.json
data/knapsack.json
data/nurse_scheduling.json
data/portfolio_basic.json
data/portfolio_large.json
data/portfolio_min_risk.json
data/production_planning.json
data/transportation.json
data/templates/README.md
data/templates/portfolio/INPUT_OUTPUT_SIGNATURES.md
data/templates/portfolio/black_litterman_max_sharpe.json
data/templates/portfolio/black_litterman_with_views.json
data/templates/portfolio/cla_max_sharpe.json
data/templates/portfolio/efficient_cvar_risk.json
data/templates/portfolio/efficient_return.json
data/templates/portfolio/efficient_risk.json
data/templates/portfolio/factor_based_selection.json
data/templates/portfolio/hierarchical_min_volatility.json
data/templates/portfolio/max_diversification.json
data/templates/portfolio/max_sharpe.json
data/templates/portfolio/max_sharpe_with_costs.json
data/templates/portfolio/max_utility.json
data/templates/portfolio/min_cvar.json
data/templates/portfolio/min_semivariance.json
data/templates/portfolio/min_volatility.json
data/templates/portfolio/momentum_filtered_max_sharpe.json
data/templates/portfolio/risk_parity.json
data/templates/portfolio/with_cardinality.json
data/templates/portfolio/with_turnover.json
docs/AIRFLOW_INTEGRATION.md
docs/API_QUICK_REFERENCE.md
docs/ARCHITECTURE.md
docs/CONFIG_SCHEMAS.md
docs/CONSTRAINTS.md
docs/CONSTRAINTS_GUIDE.md
docs/ETL_INTEGRATION.md
docs/EXPRESSION_LANGUAGE.md
docs/IMPROVEMENTS.md
docs/MIGRATION_GUIDE.md
docs/PORTFOLIO_NEW_METHODS.md
docs/PYSTATOR_INTEGRATION.md
docs/README.md
docs/SCHEDULING_CUSTOM_CONSTRAINTS.md
docs/SOLVER_INSTALLATION.md
docs/TEMPLATE_DEVELOPMENT.md
docs/index.md
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
examples/configs/execution_vwap.yaml
examples/configs/multi_account_joint.yaml
examples/configs/portfolio_black_litterman.yaml
examples/configs/portfolio_max_sharpe.yaml
examples/configs/portfolio_min_vol.yaml
examples/configs/rebalance_min_cost.yaml
examples/configs/risk_budget_reduce.yaml
examples/configs/signal_sizing_mean_risk.yaml
notebooks/portfolio_optimization.ipynb
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/README.md
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/.npmrc
src/pyoptima/ui/API_CONNECTION_GUIDE.md
src/pyoptima/ui/README.md
src/pyoptima/ui/__init__.py
src/pyoptima/ui/build.py
src/pyoptima/ui/components.json
src/pyoptima/ui/dev.py
src/pyoptima/ui/next-env.d.ts
src/pyoptima/ui/next.config.js
src/pyoptima/ui/package-lock.json
src/pyoptima/ui/package.json
src/pyoptima/ui/postcss.config.js
src/pyoptima/ui/server.py
src/pyoptima/ui/tailwind.config.js
src/pyoptima/ui/tsconfig.json
src/pyoptima/ui/tsconfig.tsbuildinfo
src/pyoptima/ui/node_modules/flatted/python/flatted.py
src/pyoptima/ui/src/middleware.ts
src/pyoptima/ui/src/app/error.tsx
src/pyoptima/ui/src/app/globals.css
src/pyoptima/ui/src/app/layout.tsx
src/pyoptima/ui/src/app/loading.tsx
src/pyoptima/ui/src/app/page.tsx
src/pyoptima/ui/src/app/themes.css
src/pyoptima/ui/src/app/documentation/page.tsx
src/pyoptima/ui/src/app/jobs/page.tsx
src/pyoptima/ui/src/app/login/page.tsx
src/pyoptima/ui/src/app/methods/page.tsx
src/pyoptima/ui/src/app/optimization/page.tsx
src/pyoptima/ui/src/app/settings/page.tsx
src/pyoptima/ui/src/components/ApiUnavailableBanner.tsx
src/pyoptima/ui/src/components/AppShell.tsx
src/pyoptima/ui/src/components/AuthGuard.tsx
src/pyoptima/ui/src/components/ErrorBoundary.tsx
src/pyoptima/ui/src/components/ErrorDisplay.tsx
src/pyoptima/ui/src/components/LoadingSpinner.tsx
src/pyoptima/ui/src/components/Navigation.tsx
src/pyoptima/ui/src/components/ThemeFromConfig.tsx
src/pyoptima/ui/src/components/ThemeSync.tsx
src/pyoptima/ui/src/components/index.ts
src/pyoptima/ui/src/components/common/PageHeader.tsx
src/pyoptima/ui/src/components/common/index.ts
src/pyoptima/ui/src/components/optimization/DataInputForm.tsx
src/pyoptima/ui/src/components/optimization/FinanceTemplateForm.tsx
src/pyoptima/ui/src/components/optimization/JobShopConstraintsForm.tsx
src/pyoptima/ui/src/components/optimization/JobShopInputForm.tsx
src/pyoptima/ui/src/components/optimization/OptimizationTabBar.tsx
src/pyoptima/ui/src/components/optimization/PortfolioInputForm.tsx
src/pyoptima/ui/src/components/optimization/ResultsDisplay.tsx
src/pyoptima/ui/src/components/optimization/SolverStatusBadge.tsx
src/pyoptima/ui/src/components/optimization/index.ts
src/pyoptima/ui/src/components/sidebar/CollapsibleSidebar.tsx
src/pyoptima/ui/src/components/sidebar/index.ts
src/pyoptima/ui/src/components/ui/alert.tsx
src/pyoptima/ui/src/components/ui/button.tsx
src/pyoptima/ui/src/components/ui/card.tsx
src/pyoptima/ui/src/components/ui/input.tsx
src/pyoptima/ui/src/components/ui/label.tsx
src/pyoptima/ui/src/components/ui/skeleton.tsx
src/pyoptima/ui/src/hooks/use-auth-init.ts
src/pyoptima/ui/src/lib/api.ts
src/pyoptima/ui/src/lib/auth-storage.ts
src/pyoptima/ui/src/lib/constants.ts
src/pyoptima/ui/src/lib/jobshopPayload.ts
src/pyoptima/ui/src/lib/portfolioParser.ts
src/pyoptima/ui/src/lib/settings.ts
src/pyoptima/ui/src/lib/templates.ts
src/pyoptima/ui/src/lib/types.ts
src/pyoptima/ui/src/lib/utils.ts
src/pyoptima/ui/src/lib/types/index.ts
src/pyoptima/ui/src/stores/app-config.ts
src/pyoptima/ui/src/stores/auth.ts
src/pyoptima/ui/src/stores/index.ts
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/WL3xeujsq72eeBuPRxYwc/_buildManifest.js
src/pyoptima/ui/static/_next/static/WL3xeujsq72eeBuPRxYwc/_clientMiddlewareManifest.json
src/pyoptima/ui/static/_next/static/WL3xeujsq72eeBuPRxYwc/_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/1de1fc4dd57fce1d.css
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/757a23208d7e5cff.js
src/pyoptima/ui/static/_next/static/chunks/82abf2d65f5428ae.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/c64f68ed4eacb5bf.js
src/pyoptima/ui/static/_next/static/chunks/d08113080ece51a1.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/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/__init__.py
tests/test_etl_integration.py
tests/test_etl_pipeline.py
tests/integration/__init__.py
tests/integration/test_api_optimize.py
tests/integration/test_cli_solve.py
tests/integration/test_portfolio_optimizer.py
tests/integration/test_templates_smoke.py
tests/unit/__init__.py
tests/unit/test_base_optimizer.py
tests/unit/test_constraints.py
tests/unit/test_io.py
tests/unit/test_objectives.py
tests/unit/test_phase8_features.py
tests/unit/test_result.py
tests/unit/test_trading_infra.py
tests/unit/test_trading_templates.py