ExpertInvest is a web-based investment portfolio optimization platform designed to help users determine the optimal asset allocation under a set of constraints.
The system applies Linear Programming techniques using the Simplex method, implemented in Python with PuLP, and presents results through an interactive web interface.
This project was developed as the final assignment for the Linear Programming course during my undergraduate studies.
ExpertInvest allows users to:
- Create an account and authenticate
- Define a set of investment assets (titles)
- Apply financial and logical constraints
- Optimize portfolio allocation using Linear Programming
- Visualize the optimal allocation through interactive charts
The platform focuses on educational and analytical purposes, demonstrating how mathematical optimization techniques can be applied to real-world financial scenarios.
- Node.js
- RESTful API architecture
- Python
- PuLP (Linear Programming library)
- Simplex Method
- React
- Chart.js (for data visualization)
- SQLite
The system is divided into three main layers:
-
Frontend (React)
Responsible for user interaction, data input, and result visualization. -
Backend (Node.js)
Handles authentication, request processing, database communication, and integration with the optimization API. -
Optimization API (Python)
Receives asset data and constraints, builds a Linear Programming model using PuLP, solves it with the Simplex method, and returns the optimal allocation.
- The user accesses the Optimize section after logging in.
- The user defines:
- Investment assets (titles)
- Constraints (e.g., allocation limits, total investment rules)
- The backend sends this data to the Python optimization service.
- The optimization model is solved using the Simplex algorithm.
- The system returns:
- The optimal percentage allocation for each asset
- Results are displayed as a horizontal bar chart using Chart.js.
- Node.js
- Python 3.x
- npm
- pip
cd expertinvestcd backend
npm run dev src/app.jscd api
python app.pycd frontend/src
npm run devThe backend is responsible for authentication, request handling, database communication, and integration with the optimization API.
It is implemented using Node.js and follows a RESTful architecture.
This service is responsible for running the Linear Programming optimization using the Simplex method.
It receives asset data and constraints, builds the optimization model with PuLP, and returns the optimal portfolio allocation.
The frontend provides the user interface for interacting with the platform, submitting optimization parameters, and visualizing results.
Optimization results are displayed using interactive charts built with Chart.js.
After starting all services, the application can be accessed through the URL provided by the React development server.
- User authentication
- Asset and constraint input
- Linear Programming optimization
- Simplex-based solution
- Interactive visualization of optimal allocations
- Modular backend and optimization architecture
This project was developed as the final project for the Linear Programming course, with the goal of applying theoretical optimization concepts to a practical software solution.
This project is intended for educational and analytical purposes only and does not constitute financial or investment advice.