Skip to content

szrich83/PortfolioPilot

Repository files navigation

PortfolioPilot – Portfolio Decision Support & Investment Simulation

.NET F# WebSharper Status GitHub repo size GitHub last commit

PortfolioPilot Preview


Motivation

Investment decisions are inherently multi-dimensional.

A portfolio with the highest expected return may also carry excessive risk, low liquidity, poor diversification, or high management fees.

Most beginner investment tools simplify portfolio comparison into a single metric, which often produces misleading conclusions.

The goal of PortfolioPilot is to model portfolio selection as a multi-criteria decision support problem, where multiple financial factors are weighted, normalized, and evaluated simultaneously.

In addition to ranking portfolios, the system also performs long-term growth simulations to visualize how investment strategies may evolve over time.

The project also demonstrates how functional programming concepts can be applied to reactive financial modeling and decision-support systems.

A reactive single-page portfolio analysis application built with F# and WebSharper.


Features

Core

  • Manual financial asset management
  • Portfolio creation with custom allocations
  • Multi-criteria portfolio ranking
  • Weighted decision scoring
  • Long-term growth simulation
  • JSON export functionality
  • JSON import functionality

Advanced

  • Weighted decision engine

    • configurable importance values
    • return vs risk balancing
    • normalization-based scoring
  • Portfolio simulation

    • monthly contribution support
    • compound growth modeling
    • long-term projection analysis
  • Dynamic visualization

    • portfolio comparison bars
    • growth charts
    • ranking panels
    • simulation summaries
  • Browser persistence

    • save current data locally
    • reload saved portfolios
    • offline-compatible workflow
    • LocalStorage-based persistence

Decision Model

Portfolio scoring

Each portfolio is evaluated using multiple weighted criteria:

Criterion Type
Expected Return Benefit
Risk Cost
Annual Fee Cost
Liquidity Benefit
Diversification Benefit

The scoring engine normalizes all portfolio metrics before applying weighted calculations.


Weighted ranking system

The final portfolio score is determined by:

  • metric normalization
  • criterion weighting
  • weighted aggregation

This allows users to prioritize:

  • aggressive growth
  • low risk
  • diversification
  • liquidity
  • fee minimization

Growth simulation

The system simulates long-term investment growth using:

  • initial capital
  • monthly contributions
  • expected annual return
  • compound growth

This enables:

  • portfolio comparison over time
  • long-term strategy evaluation
  • future value estimation

UI

Inputs

  • Asset parameters
  • Portfolio allocations
  • Decision weights
  • Initial capital
  • Monthly contribution
  • Investment duration

Outputs

  • Portfolio rankings
  • Weighted scores
  • Growth charts
  • Final portfolio values
  • Portfolio explanations
  • JSON export file

Tech Stack

  • F#
  • WebSharper UI
  • ASP.NET Core
  • Reactive UI (Var / View)
  • Functional domain modeling
  • Browser LocalStorage API
  • Client-side JSON serialization
  • Functional multi-criteria scoring engine

Installation

Requirements

  • .NET 10 SDK
  • Node.js
  • npm

Clone the repository

git clone https://github.com/szrich83/PortfolioPilot.git
cd PortfolioPilot

Install dependencies

dotnet restore
npm install

Build

dotnet build -c Release

Run the project

dotnet run

Then open the URL shown in the terminal.


Project Structure

PortfolioPilot/
├── src/
│   ├── Client.fs              # Main WebSharper SPA UI
│   ├── Domain.fs              # Domain models
│   ├── Explanation.fs         # Ranking explanations
│   ├── Normalization.fs       # Criteria normalization logic
│   ├── PortfolioMetrics.fs    # Portfolio metric calculations
│   ├── Samples.fs             # Demo assets and portfolios
│   ├── Scoring.fs             # Multi-criteria scoring engine
│   ├── Simulation.fs          # Investment growth simulation
│   ├── Startup.fs             # Application startup configuration
├── wwwroot/
│   ├── custom.css             # Styling and dashboard UI
├── index.html                 # Entry point
├── PortfolioPilot.fsproj
├── Dockerfile

Screenshots

Main dashboard

Main UI

Asset editor

Assets

Portfolio editor

Portfolio Editor Portfolio Editor Portfolio Editor

Portfolio ranking

Ranking

Growth simulation

Simulation Simulation

JSON export and browser storage

Export


Future Improvements

  • CSV import/export
  • Historical market data
  • Monte Carlo simulation
  • Portfolio optimization algorithms
  • Backend database support
  • User authentication
  • Real-time financial APIs

Live Demo

Note: The live demo may take a few seconds to start if the Render instance is inactive.

https://portfoliopilot-yx7c.onrender.com/


Author

Richárd Szőke
GNMH44
Software Engineering Student


About

Portfolio decision support and investment simulation platform with multi criteria evaluation, scenario analysis and long term growth projections.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors