Glossary
Glossary
Every term, factor and metric on this site explained in plain English. For people new to the topic and for people who know it but want to look something up.
The system
What it is, how it works, what it runs on.
Multi-factor system
Trading approach
A system that ranks stocks on multiple independent criteria, not one. In my case four: momentum, value, quality and catalyst. The idea comes from academic research into what historically makes stocks outperform.
Universe
Trading universe
The stocks the system is allowed to trade. For me 554 names: roughly 500 from the S&P 500 (largest US stocks) plus 54 Dutch stocks from AEX and AMX.
Not all 554 get a score every day. Some lack sufficient data for a reliable composite. On average about 462 stocks actually get ranked.
FMP
Financial Modeling Prep
The US data provider that feeds my financial data: daily prices, quarterly reports, analyst expectations for almost every listed company worldwide. Not free, but affordable.
Supabase
Database
The online database holding all data: daily prices, quarterly numbers, all computed scores. Like Excel, but with millions of rows and fast querying.
The four factors
How the system assesses stocks. Each factor a different angle.
Momentum
Factor 1, 25% weight
How well or poorly a stock has done recently. Simple idea: stocks that performed well over 12 months often continue to do well. Not always, but decades of academic research show a statistical edge.
Two components: the stock's own 12-month return and its relative strength versus the market. Together they form a momentum z-score per stock.
Value
Factor 2, 25% weight
How much do you pay for what a company produces? Cheap is good, expensive is bad. Measured through three ratios: free cash flow yield, enterprise value over EBITDA, and earnings yield.
Important: Value is computed within the sector, not across the whole market. A chip maker with EV/EBITDA of 30 is normal for Tech. A construction firm at 30 would be ridiculously expensive. Sector-relative avoids apples-to-pears.
Quality
Factor 3, 30% weight
How healthy are the fundamentals? Good companies outperform bad ones over the long run. For me: high ROIC, low debt, healthy free cash flow growth, healthy margins.
Quality carries the heaviest weight because fundamentals are more durable than momentum or catalyst. A good company stays a good company even if the price temporarily drops.
Catalyst
Factor 4, 20% weight
Recent positive events that show up in the numbers but not always in the price. Earnings beats, buybacks, positive analyst revisions. Positive today means the market has not yet fully priced the good news.
The most time-sensitive factor: positive today, possibly different in a month. Lighter weight because the signal ages quickly.
Scores and ranking
How the four factors combine into a single number.
Z-score
Standardization
A z-score tells you how far above or below the mean you are, in standard deviations. The beauty: it makes factors with wildly different scales comparable.
+1 means one standard deviation above average. +2 is firmly in the top, an outlier. +3 is rare, the extreme. I cap z-scores at +3 to prevent a single extreme stock from dominating the ranking.
Composite score
Total score per stock
The weighted sum of the four factor z-scores. Quality 30%, Value 25%, Momentum 25%, Catalyst 20%. One number that captures how interesting a stock is across all four angles.
Higher is better. Composite +1.0 means the stock is attractive on multiple dimensions. -1.0 is the opposite.
Percentile rank
Position within the universe
What share of stocks has a lower composite score? Percentile 95 means top 5% of the entire list.
I use percentile rather than absolute scores because it is more robust. Whether the market is high or low, percentile 75 always means: top 25%.
Look-ahead bias
Backtest pitfall
A backtest error where the system uses information not actually available on that historical date. For example: using quarterly numbers on Feb 1 even though they were only published Feb 19. Produces artificially high backtests that cannot be replicated live.
My system avoids this: for fundamentals I use a 60-day buffer (reports usually take a month or two to become truly public), for earnings I use the exact announcement date.
Positions and sizing
How the system decides how much of what to buy.
Position size
Per-position size
How big an individual position is in the portfolio. For me 4 to 7% per position depending on how volatile the stock is. Volatile = smaller. Calm = larger.
The idea: equal risk per position, not equal capital. A stock moving 5% per day is riskier than one moving 1%, even if both cost the same.
ATR
Average True Range
A measure of how much a stock moves on average per day, computed as the average daily range over the last 20 trading days. Higher ATR means more volatile.
I use ATR for two things: position sizing and stop loss calculation (how far below entry the stop sits).
Sector cap
Sector limit
Maximum 25% of the portfolio in one sector. Prevents an Energy sector drop (like 2014 or 2020) from sinking the entire portfolio. Sector spread is a form of risk management.
Country cap
Country limit
Maximum 70% of the portfolio in one country. Important because my system sometimes leans heavily Dutch due to universe composition. The country cap enforces spread between NL and US.
Exit triggers
The six reasons the system closes a position. A good exit matters more than a good entry.
Stop loss
Trigger 1, capital protection
Hard exit when the position drops too far below entry. For me: max of -8% below entry or 2x ATR below entry, whichever triggers first.
For most stocks the -8% line wins. For very volatile stocks the ATR-based level wins (because 2x ATR is wider than 8%).
Trailing stop
Trigger 2, lock in profit
Activates once the position is +15% in profit. From there it follows the highest close at 10% distance. Only ratchets up, never down.
Goal: let a finally winning position run while securing the profit if it reverses. The system makes no profit until the position closes.
Thesis degradation
Trigger 3, signal gone
Close the position when the composite score drops below percentile 50. The reason to buy was: top 25% of the universe. If the stock falls to the median the thesis no longer holds.
Relative strength decay
Trigger 4, weak vs market
Close the position if it underperforms the market 20 trading days in a row (S&P 500 for US stocks, AEX for Dutch). Not necessarily that the stock falls, but that it lags the broader index.
Time stop
Trigger 5, dead money
Close the position after 40 trading days if the return is between -3% and +3%. The stock does nothing yet takes a slot in the portfolio. Better free up the capital.
Target hit
Trigger 6, valuation reached
Close the position when valuation (EV/EBITDA) reaches the sector median from below. The stock was cheap within its sector, now it is market-rate. The value opportunity is gone.
Performance metrics
How to judge whether a trading system is any good.
Sortino ratio
Asymmetric Sharpe
Like Sharpe but only penalizes downside volatility. The idea: upside moves are not "risk", you want them. Only downside spikes hurt.
Max drawdown
Largest peak-to-trough
The largest percentage the portfolio has dropped from a previous peak. Drawdown is the pain you feel in practice: portfolio from €12,000 to €9,500 is -21% drawdown.
Many investors quit at -30% drawdown ("I cannot watch anymore"). My system targets max -30% drawdown, preferably under -20%.
Win rate
% winning trades
Percentage of trades closed at a profit. Surprisingly not the most important metric. A 40% win-rate system can be profitable if winners are much larger than losers.
My system targets 40 to 55% win rate with asymmetric outcomes: average winner larger than average loser.
Backtest
Historical simulation
Running the system on historical data. What would have happened if I had started 4 years ago with these rules? An estimate of performance, not a promise.
Backtests can mislead through look-ahead bias, survivorship bias and overfitting. A good backtest checks how the system reacts to periods it has not seen before.
Market regime
When to buy freely, when to keep your wallet closed.
Market regime
Macro context
A classification of overall market conditions: risk-on (calm), neutral, cautious, or risk-off (panic). Determines how much exposure the system accepts.
In risk-off (like March 2020 or October 2022) exposure drops to 25% and the system aggressively closes positions. In risk-on the portfolio runs at 100%.
VIX
Volatility Index
An index measuring expected S&P 500 volatility over the next 30 days. Often called the "fear gauge". VIX under 15: calm market. Above 25: nervous. Above 40: panic.
Breadth
Market breadth
What share of stocks trades above its 200-day moving average. Above 60%: healthy market, broad participation. Below 40%: narrow, possibly trouble under the hood.
Credit spread
High yield vs investment grade
The yield gap between risky corporate bonds (high yield, HYG) and safe ones (investment grade, LQD). When the gap widens, bond investors see more risk. An early warning for problems not yet visible in stock prices.
How it is built
The technical side in plain English.
Cursor
AI coding tool
The AI tool that writes the actual code based on my prompts. I describe what is needed, Cursor produces the Python or TypeScript. Then I review and we test together.
Claude
AI sparring partner
My AI assistant for thinking, designing and reviewing. In this project I call him "Harry the helper" for a distinct identity in the collaboration. Writes the prompts for Cursor, helps me decide, flags when something is off.
Six-eyes principle
Three perspectives, six eyes
My workflow: three perspectives on every decision. Me (design and review), Claude (sparring and prompts), Cursor (code). No perspective may be skipped. It forces me to think before code is written.
Backend and frontend
Two sides of the site
The backend runs behind the scenes: pulling data from FMP, computing scores, generating signals, sending orders to the broker. Written in Python.
The frontend is what you see on the site: the pages, tables, charts. Written in Next.js, a popular web framework.
IBKR
Interactive Brokers
The broker where my real trading happens. Worldwide market access, low commissions, programmable. My Python backend sends orders directly to IBKR via their API.
Missing anything?
If you spot a term on the site that is not here, or an explanation that is unclear, let me know via LinkedIn. I will add it so the site stays readable for everyone.
→ Send me a message