
Preview of the desktop screener with ratio outputs, company prioritization, and analyst-oriented watchlist logic.
Fundamental Analysis · Buy-Side Tool · Python Desktop
This project is a desktop tool for fundamental screening on French small caps. The goal is to build a full buy-side analysis chain: define an investable universe, collect and store financial data, compute fundamental ratios, build transparent multi-factor scoring, and surface the best ideas as a usable watchlist. The point is less to predict the market mechanically than to reproduce a first layer of analyst work: filter, compare, prioritize, and document the companies worth studying.
What this project demonstrates
Ability to turn an investment problem into a concrete tool: build a French small-cap universe, structure financial data, compute fundamental ratios, design interpretable multi-factor scoring, persist data locally, and deliver usable outputs for analyst prioritization.

My role
I frame the investment universe, design the architecture, model the data, implement repositories, build ratio services, define the scoring logic, write tests, and document the screening methodology.
Context
The project starts from a straightforward buy-side need: reduce a broad universe to a list of companies that are genuinely worth reviewing, with a consistent reading of ratios, attention points, and first comparison elements.
Objective
Build a buy-side pre-selection tool able to filter, compare, and prioritize French small caps while keeping ratios interpretable, the local data base usable, and the resulting watchlist useful for shaping an initial investment hypothesis.
Deep dive
The project is already well advanced on the data layer and business logic. The challenge is not only to compute ratios, but to produce a pre-selection tool that a buy-side analyst can actually use to move faster from a broad universe to an argued watchlist.
The project does not stop at ranking companies through ratios. It aims to reproduce a first stage of fundamental analyst work: understanding business quality, valuation, balance-sheet strength, growth, financial risk, and the overall consistency of the investment profile.
The project is not just a conceptual idea. The data layer and business logic are already substantially built.
The goal is not to predict stock performance mechanically. It is to help an analyst reduce a broad universe to a usable watchlist and then identify the names that deserve deeper fundamental work.
Gallery

Preview of the desktop screener with ratio outputs, company prioritization, and analyst-oriented watchlist logic.
Architecture
The interface layer handles display, filters, and user interaction. It remains intentionally thin and does not carry business logic.
The services concentrate ratio calculations, scoring, screening, and business rules. This is the layer that transforms raw data into usable pre-selection outputs.
Repositories encapsulate database, file, and external-provider access. They isolate persistence and ingestion so the rest of the code stays testable and maintainable.
SQLite acts as the local database and SQLAlchemy as the structured access layer. The objective is simple, traceable persistence suited to a local-first desktop workflow.
Pipeline
Technical choices
The project prioritizes a genuinely investable universe before any ranking logic. A good ranking has little value if the starting universe is poorly defined.
Ratios and weightings remain explicit so each score can be reviewed, debated, and challenged the way a buy-side analyst would do it.
The UI → Services → Repositories split makes unit testing easier, limits side effects, and lets the tool evolve without depending on heavy infrastructure.
The tool is designed to help filter and prioritize. It does not replace account reading or a full investment thesis.
Reliability
Limitations
Roadmap
Challenges
Define a coherent investment universe with market, size, liquidity, and exclusion filters without introducing obvious bias.
Handle imperfect financial data with missing values, heterogeneous formats, shifted fiscal years, and inconsistent accounting definitions.
Design robust ratios that can survive edge cases such as negative earnings, unusual EV values, inconsistent net debt, and extreme outliers.
Build a multi-factor score that stays economically meaningful and interpretable from an investment-style perspective.
Outcomes and learnings
Strict UI → Services → Repositories architecture already applied to separate display, business logic, and data access.
Local data model covering Company, FinancialStatement, PriceHistory, and ScreeningSnapshot.
Services already implemented for financial ratios, multi-factor scoring, and screening or filtering.
Credible working base to produce watchlists and document the first names worth investigating further through fundamental analysis.
Other projects

Personal Finance · Python · PyQt6
PyQt6 + SQLite desktop application to centralize multi-asset accounts, rebuild weekly history, and analyze portfolio performance.
View this project
Quantitative Finance · Analysis · Python
Python environment to backtest strategies, compare risk and return metrics, and analyze portfolio behavior.
View this projectDiscuss
If this project is relevant for you, I can detail the initial need, data structure, assumptions, challenges encountered, and analysis limitations.