This application implements the Markowitz Portfolio Optimization algorithm, which is a method for selecting the optimal portfolio allocation by maximizing expected return for a given level of risk. The project is built using a combination of Next.js for the frontend, Java for the optimization logic, Python (Flask) for retrieving real financial data, and Docker for containerization.
The system is composed of three main services:
- Frontend (Next.js 14)
- Portfolio Optimization Service (Java / Spring boot)
- Stock Data Service (Python with Flask) These services work together in a Docker-based environment, where each service is isolated within its own container.
- Docker: To run the app in containers.
cd optimal-portfolio-app
docker compose up -d