Trader's Second Brain Trader's Second Brain

Notion Trading Formulas: Copy-Paste Ready (2026)

Copy-paste formulas are only useful when the database contract is equally copy-pasteable. In Notion, the same expression can fail because a property was renamed, a rollup returns a list instead of a number, an empty denominator is treated as zero, or a percentage is scaled twice.

Quick Answer

Match every property name and type exactly, guard each denominator, filter summaries to reconciled eligible trades, and test zero, blank, win, loss, and breakeven rows before trusting a dashboard. Percent formulas should return a decimal fraction for Notion's Percent format, and undefined ratios need a visible readiness state.

Trader's Second Brain · Notion System
Trading workspace + 10 chart embeds

The Notion system, already built

This guide shows how to build it yourself. If you would rather start from a finished workspace — journal, setups, notes, unlimited CSV/TSV/JSON/HTML import, and 10 chart embeds for life — that is the TSB Notion system.

Get the Notion system →
Trader's Second Brain preview
Reading map

Three checkpoints in this guide

Follow the full walkthrough in order, or jump directly to one of its main sections.

  1. 01Opening checkpointCreate the Database Contract First
  2. 02Middle checkpointTest the Formulas Before Using Them
  3. 03Closing checkpointFinal Verdict: Copy the Contract, Not Just the Formula

Copy-paste formulas are only useful when the database contract is equally copy-pasteable. In Notion, the same expression can fail because a property was renamed, a rollup returns a list instead of a number, an empty denominator is treated as zero, or a percentage is scaled twice.

This guide defines the properties first, then gives formulas for per-trade values and period summaries. Every percentage formula below returns a decimal fraction for Notion’s Percent number format: 0.5714 displays as 57.14%.

The short answer: paste formulas only after matching every property name and type exactly. Guard each denominator, filter summaries to reconciled eligible trades, and test zero, blank, win, loss, and breakeven rows before trusting a dashboard. Notion’s formula editor is case-sensitive.

1. Create the Database Contract First

Use one Trade Log database for source rows and one Performance Summary database for a month, strategy, account, or other declared cohort. Link them with a Relation. A summary row only describes the trade rows actually related to it.

Trade Log — source properties
Net P&Lafter the costs included in your policy
Number
Planned Riskpositive amount in the same unit
Number
Stop Distancepositive pips, points, ticks, or price units
Number
Target Distancesame unit as Stop Distance
Number
OutcomeWin, Loss, or Breakeven
Select
Eligiblechecked only after reconciliation
Checkbox
In Planchecked from a predeclared rule
Checkbox

Property names must match, including capitalization, spaces, and punctuation. If you prefer another name or currency, change both the property and every prop("…") reference. The broader trading-journal field guide explains why source IDs, timestamps, costs, account currency, and strategy version belong beside these inputs.

2. Notion Formula Syntax That Causes Silent Errors

  • Percent format expects a fraction. Return 0.25 to display 25%; do not return 25 and then apply Percent formatting.
  • empty(0) is true. A generic empty check can treat a legitimate zero like a blank. Use a separate eligibility or readiness field when zero and missing must be distinguished.
  • Formula output is not a cohort. A summary depends on which pages are related, not which rows happen to be visible in a filtered view.
  • Types must line up. A rollup configured to “Show original” is a list; the formulas below require numeric Sum rollups.
  • HTML must escape comparison operators. In article source, write &lt; for a literal less-than sign inside a formula block. The reader must see <.

3. Copy-Paste Per-Trade Formulas

Create these as Formula properties in the Trade Log. Numeric formulas return 0 when the denominator is absent or invalid. Treat that zero as a guard value until Eligible is checked; it is not evidence that the metric was measured.

R Multiple
Number
lets( pnl, prop("Net P&L"), risk, prop("Planned Risk"), if(or(not prop("Eligible"), risk <= 0), 0, round(pnl / risk * 100) / 100) )

Net outcome divided by planned risk. Both inputs need the same currency or normalized unit. A partial loss can be greater or smaller than negative one R; the formula reports the record rather than assuming every loss hit the initial stop.

Planned Reward-to-Risk
Number
lets( stop, prop("Stop Distance"), target, prop("Target Distance"), if(or(empty(stop), stop <= 0, empty(target)), 0, round(target / stop * 100) / 100) )

This describes the plan at entry, not the realized R multiple. Stop and target must use the same distance unit. A zero result is a missing/invalid-input sentinel unless zero target distance is intentionally allowed by your schema.

Eligible Trade
Number: 0 or 1
if(prop("Eligible"), 1, 0)

Use the sum of this helper as the denominator. Cancelled orders, duplicate imports, open trades, and unreconciled rows stay unchecked and do not dilute win rate or expectancy.

Winning Trade
Number: 0 or 1
if(and(prop("Eligible"), prop("Outcome") == "Win"), 1, 0)

The exact spelling of the Select option must match. Breakevens remain eligible but are not wins, so the denominator stays explicit.

In-Plan Trade
Number: 0 or 1
if(and(prop("Eligible"), prop("In Plan")), 1, 0)

Define “in plan” before the session. This flag measures recorded adherence; it does not establish that the plan is profitable or that a profitable exception was good process.

Gross Profit
Number
if(and(prop("Eligible"), prop("Net P&L") > 0), prop("Net P&L"), 0)

Positive eligible outcomes only. Sum this property in the summary database.

Gross Loss
Positive magnitude
if(and(prop("Eligible"), prop("Net P&L") < 0), abs(prop("Net P&L")), 0)

The source loss stays negative in Net P&L; this helper returns its positive magnitude for profit-factor arithmetic. The escaped less-than operator prevents the web page from truncating the formula.

4. Copy-Paste Performance Summary Formulas

Relate the intended Trade Log rows to one Performance Summary row. Add numeric Rollups using Sum for Eligible Trade, Winning Trade, Net P&L, Gross Profit, Gross Loss, R Multiple, and In-Plan Trade. Name the results exactly as follows:

Summary rollupTrade Log propertyCalculation
Eligible TradesEligible TradeSum
Winning TradesWinning TradeSum
Total Net P&LNet P&LSum
Total Gross ProfitGross ProfitSum
Total Gross LossGross LossSum
Total RR MultipleSum
In-Plan TradesIn-Plan TradeSum
Summary Readiness
Text
ifs( prop("Eligible Trades") == 0, "No eligible trades", prop("Total Gross Loss") == 0 and prop("Total Gross Profit") > 0, "Profit factor undefined: no losing trades", prop("Total Gross Loss") == 0, "Profit factor not available", "Ready" )

Read this beside every numeric summary. A guarded zero prevents an error but must not masquerade as a measured profit factor.

Win Rate
Number → Percent
lets( n, prop("Eligible Trades"), if(n == 0, 0, round(prop("Winning Trades") / n * 10000) / 10000) )

Format as Percent with two decimal places. The output stays on a zero-to-one scale; do not multiply it by 100 again. Interpret it with payoff distribution and the expectancy formula.

Profit Factor
Number
lets( loss, prop("Total Gross Loss"), if(loss <= 0, 0, round(prop("Total Gross Profit") / loss * 100) / 100) )

Gross profit divided by the positive magnitude of gross loss. When loss is zero, the numeric guard returns zero and Summary Readiness explains why the ratio is undefined. Do not label a fixed range “good” without costs, exposure, path, concentration, dependence, and uncertainty; see the profit-factor interpretation guide.

Net Expectancy per Eligible Trade
Number
lets( n, prop("Eligible Trades"), if(n == 0, 0, round(prop("Total Net P&L") / n * 100) / 100) )

This is the historical mean of the included net outcomes, not a daily-income promise. Keep the unit, date range, eligibility policy, costs, sample size, uncertainty, and strategy version visible.

Average R per Eligible Trade
Number
lets( n, prop("Eligible Trades"), if(n == 0, 0, round(prop("Total R") / n * 100) / 100) )

This averages realized R multiples. It is not “average R:R”: reward-to-risk is the entry plan, while realized R is an outcome normalized by planned risk.

Plan Adherence
Number → Percent
lets( n, prop("Eligible Trades"), if(n == 0, 0, round(prop("In-Plan Trades") / n * 10000) / 10000) )

Format as Percent. Use a predeclared checklist and audit missing labels; no universal adherence percentage proves discipline or future profitability.

5. Test the Formulas Before Using Them

Create a temporary summary linked to controlled test rows. The minimum acceptance matrix is:

CaseExpected resultFailure it catches
No eligible tradesAll guarded metrics 0; readiness explains absenceDivision by zero
Eligible win onlyWin rate 100%; PF undefined stateFalse finite profit factor
Eligible loss onlyWin rate 0%; gross loss positiveNegative PF denominator
One win, one loss, one breakevenThree-trade denominatorBreakeven silently excluded
Unreconciled duplicateNo change until Eligible is checkedDuplicate dilution
Zero or blank Planned RiskR guard returns 0; row remains not readyInfinite or misleading R
Win-rate result 0.5714Percent display 57.14%Double percentage scaling

Change one input at a time and compare the Notion result with hand arithmetic. The copy-paste expression is not verified for your workspace until these rows pass with your actual property types.

6. Prop-Rule Formulas: Store the Rule Before Calculating It

A generic percentage of “current balance” is not a universal daily-loss or maximum-drawdown formula. A named program may use balance, equity, a start-of-day reference, an intraday high-water mark, static or trailing thresholds, specific reset timezones, and different treatment of open P&L, fees, payouts, or platform events.

For a rule independently verified as static, store Reference Value, Maximum Loss Amount, Current Rule Value, Rule Type, Verified On, and Official Rule URL. Then these arithmetic helpers are safe only within that snapshot:

Static Loss Floor
Number
if( or(prop("Rule Type") != "Static", empty(prop("Reference Value")), empty(prop("Maximum Loss Amount"))), 0, prop("Reference Value") - prop("Maximum Loss Amount") )
Configured Rule Status
Text
ifs( empty(prop("Verified On")), "Not verified", empty(prop("Official Rule URL")), "Not verified", prop("Rule Type") != "Static", "External calculation required", prop("Current Rule Value") <= prop("Static Loss Floor"), "Boundary reached", "Configured" )

Do not adapt these helpers to trailing or intraday rules by changing one label. Those calculations require a time-ordered path and the exact current rule. The Notion prop-firm tracker guide covers the schema boundary; official program terms remain controlling.

7. What Notion Formulas Cannot Prove by Themselves

Formula 2.0 can work with properties on related pages using list functions such as map and filter. That is more capable than a strict “one row only” model. It still does not create a reliable ordered ledger automatically: previous-event semantics, intraday marks, corrections, partial fills, and deterministic cumulative state must be modeled and sourced.

A relation or rollup can aggregate linked pages, but it does not prove the relation is complete, deduplicated, correctly ordered, or reconciled to the broker or venue. A chart can visualize a prepared series; it cannot recover missing events. Trailing drawdown and breach replay need a source-frequency event path and a versioned rule engine, not a manually updated current-balance cell.

Where TSB Fits When Notion Reaches Its Boundary

Ownership disclosure: Trader’s Second Brain is our product. Notion is flexible for a hand-built log, custom notes, and transparent formulas. TSB is the relevant alternative when the decision needs repeatable imports, source reconciliation, account-aware fields, and a versioned analysis workflow. TSB recognizes 332 structured source profiles through canonical runtime truth.

That is not a claim that every import is complete or that TSB certifies program compliance. Preserve the source export, account and currency, import range, duplicate policy, excluded rows, rule snapshot, and reconciliation totals. Missing decisive data remains Not verified. The import-format guide explains the acceptance checks.

Decision rule: keep Notion when manual entry and custom schema are acceptable; use an import-led workflow when lineage, reproducibility, event volume, or exact rule replay matters.

Compare the TSB workflow

Methodology and Verification

This guide was reviewed on September 9, 2026 against Notion’s official formula syntax and functions, formula-error guidance, and relations and rollups documentation. The official syntax supports property references, comparisons, logical operators, if/ifs, let/lets, list functions, and numeric rollup calculations; the formula editor requires exact property references and compatible data types.

The prior page’s broken less-than HTML, incomplete challenge-status expression, double-scaled percentages, generic program rules, universal performance thresholds, deterministic profitability claims, and undocumented TSB automation claims were withdrawn. Production remains read-only until a separately authorized import.

Final Verdict: Copy the Contract, Not Just the Formula

A robust Notion trading formula names its input type, cohort, missing state, denominator, output scale, and acceptance test. Start with eligible reconciled rows, use positive loss magnitude only where the metric requires it, keep Percent outputs on a zero-to-one scale, and expose undefined ratios instead of decorating them as zero.

Formulas can make a journal consistent. They cannot make incomplete source data complete or turn a historical mean into proof of an edge. Treat each summary as a versioned calculation whose inputs can be inspected and reproduced.

Igor Manuilov
Written and reviewed by
Igor Manuilov
Founder of Trader's Second Brain · Trader since 2014
Editorial accountability

Trader since 2014. Built Trader's Second Brain to make execution review more evidence-based and less dependent on memory, scattered spreadsheets, or vague journaling.

Trader's Second Brain · Notion System
Trading workspace + 10 chart embeds

The Notion system, already built

This guide shows how to build it yourself. If you would rather start from a finished workspace — journal, setups, notes, unlimited CSV/TSV/JSON/HTML import, and 10 chart embeds for life — that is the TSB Notion system.

Get the Notion system →
Trader's Second Brain preview

Frequently Asked Questions

Quick answers to the most common questions about Notion Trading Formulas.

Check the denominator before division with if, ifs, or lets. Return a numeric guard value only together with a readiness label, because zero can mean a valid result as well as unavailable data. Test an empty denominator and a literal zero separately.

A Notion property formatted as Percent expects a fractional value. Return 0.5714 to display 57.14%. If the formula already multiplies the ratio by 100 and the display then formats it as Percent, the value is scaled twice.

Yes. Notion's formula editor requires property references to match their database names exactly, including capitalization, spaces, and punctuation. Selecting the property token in the editor reduces typing errors.

Yes, after the cohort is modeled. Sum an Eligible Trade helper and a Winning Trade helper through numeric rollups, divide wins by eligible trades with a zero guard, and format the fractional result as Percent. The relation must contain the complete intended cohort.

Gross profit divided by zero gross loss is undefined, not an ordinary finite score. Use a numeric guard to prevent an error and a separate Summary Readiness formula that says the ratio is undefined because the cohort contains no eligible losses.

Not safely from a generic current-balance formula. Trailing and intraday rules require a time-ordered balance or equity path, exact reset and mark definitions, a verified rule version, and complete event data. Use Not verified or external calculation required when those inputs are absent.

Notion fits a hand-built log with custom notes and transparent formulas. An import-led TSB workflow is relevant when source lineage, reconciliation, repeatable high-volume imports, account-aware fields, or versioned analysis matters. TSB ownership is disclosed, and missing decisive data still remains Not verified.