← Back to Projects

Project

Valytics — Institutional Financial Analysis

Multi-stage DCF valuation with Monte Carlo simulation. Ratio analysis with DuPont decomposition. Comparable company analysis. Portfolio risk decomposition and efficient frontier optimization.

  • Rust
  • Next.js
  • Finance
  • Monte Carlo

Problem

Most financial analysis tools are either expensive institutional platforms or simplistic calculators that lack depth. There is no accessible, production-grade platform that combines full financial statement analysis, multi-stage DCF with Monte Carlo simulation, comparable company analysis, and portfolio risk decomposition in a single interface.

Solution

A Rust-powered financial analysis engine that computes DuPont-ratio decomposition, multi-stage DCF with configurable assumptions and sensitivity tables, 10,000-iteration Monte Carlo simulations for fair value probability distributions, sector-based comparable company analysis, and portfolio risk metrics with factor decomposition and efficient frontier optimization — all exposed through a clean Next.js interface.

Architecture

Rust backend (Axum) performs all financial computation. Yahoo Finance, Financial Modeling Prep, and SEC EDGAR provide multi-source data with fallback. Monte Carlo runs in parallel via rayon. The Next.js frontend renders interactive Recharts visualizations. REST API enables third-party integration.

Implementation

// Multi-stage DCF with Monte Carlo simulation
pub fn compute_dcf(financials: &FinancialStatements, prices: &[f64], company: &Company) -> DCFValuation {
    let assumptions = build_assumptions(financials, company);
    let wacc = compute_wacc(&assumptions);
    let projected_fcf = project_free_cash_flows(financials, &assumptions);
    let terminal_value = compute_terminal_value(
        projected_fcf.last().copied().unwrap_or(0.0),
        wacc, assumptions.terminal_growth_rate
    );
    let enterprise_value = compute_enterprise_value(&projected_fcf, terminal_value, wacc);
    let equity_value = enterprise_value - compute_net_debt(financials);
    let fair_value_per_share = equity_value / assumptions.shares_outstanding;
    let upside_pct = (fair_value_per_share / assumptions.current_price) - 1.0;
    let monte_carlo_result = monte_carlo::run_dcf_simulation(&assumptions, financials);
    DCFValuation { fair_value_per_share, current_price: assumptions.current_price, upside_pct, recommendation, projected_free_cash_flows, terminal_value, wacc, terminal_growth_rate, sensitivity_table, monte_carlo: Some(monte_carlo_result) }
}

Vision

A financial analysis platform that gives individual investors, analysts, and founders the same analytical firepower as institutional desks — DCF, Monte Carlo, comparables, and portfolio risk — through a clean interface and a programmable API.

Live demoView on GitHub