OptiNod Academy

Turn your trade journal into a dataset — Your biases remain in the fills

Feeling that you take profits too early is not evidence. Tag every fill with its setup and planned 1R to measure bias through expectancy and realization rates by setup.

A feeling that you take profits too early, or self-criticism about frequently ignoring stops, is a memory of only a few trades. Record the same decisions in columns for every fill, and biases become measurable through expectancy and realization rates by setup.


A trade journal is a record of every fill. Treat it as a dataset and each trade becomes a row, with its attributes in columns. Entry time, exit time, setup name, entry rationale, planned stop distance (1R), and realized profit or loss (R) are columns. Record each trade this way and, after hundreds accumulate, you can answer many questions by selecting and aggregating the relevant columns.


Most journals are written as reflections: “I was impatient today; I will hold back next time.” Such notes may be comforting to reread, but they cannot be aggregated. Sentences do not calculate whether impatience increased losses or which setup has negative expectancy. A reflection describes a sample of one, and a bias cannot be measured from impressions alone.


“I take profits too early” is a claim about a distribution. Only a distribution can test it. A setup's expectancy follows one formula: win rate times average winning R, minus loss probability (one minus win rate) times average losing R. Split trades by setup and calculate the figure for each. A vague feeling becomes a number attached to each setup. A setup with negative expectancy is reducing the account.


Judgment is swayed by a few recent trades


People do not remember all trades equally. Recent trades and unusually large wins or losses loom larger than they should; the many ordinary outcomes fade. “Things have not worked lately” or “this setup suits me” often inflates a handful of memorable trades into the whole record. The actual distribution is often different.


In a journal treated as a dataset, every fill occupies one row. A large winner and an ordinary result each count as one trade. Aggregation includes all rows, so a summary is less easily dominated by recent memories. A 60% win rate alongside a shrinking account is one example where feeling and expectancy diverge; aggregating all the rows reveals the discrepancy.


Perceived average versus measured average
Perceived average versus measured average

Without the right columns, bias cannot be calculated


To measure bias, add columns to the raw trade list. An exchange export usually gives entry price, exit price and profit or loss. Those alone cannot measure the disposition effect or chasing entries. Each bias requires particular columns, recorded at entry or exit.


Turning raw trade records into measures
Turning raw trade records into measures

  • Setup tag: Record the entry rule in one label, such as breakout, pullback or countertrend. This is the grouping column for analysis by setup.
  • Planned 1R: Record the stop distance decided at entry as the unit of risk. Divide all later profit and loss by this value to express them in R.
  • Realized R: Profit or loss on exit divided by the planned 1R. It captures outcome and size in one number.
  • Holding time: The difference between entry and exit times. Compare average time for winners and losers to measure the disposition effect in time.
  • Entry slippage: Record the distance from the signal bar's close to the actual entry in R. It measures how far an entry was chased.
  • Stop adherence: Mark yes or no for whether the planned stop was honored or postponed. Its violation rate measures anchoring and averaging down.
  • Previous result and emotion tag: Categorize the prior trade's win or loss and your state at entry, such as impatience, overconfidence or fear. Use categories, not prose.

These columns can be recorded accurately only when the trade is entered or exited. Filling them in from memory days later introduces bias into the numbers themselves.


Cross-tabulated columns produce a measure for each bias


Once the columns exist, biases can be measured by grouping them in different ways. Each bias has its own combination of columns.


The sign of realized R and counts of open positions can produce the PGR/PLR measures of the disposition effect. If gains are realized at a higher rate than losses, exits are asymmetric. Splitting holding time between winners and losers checks the same asymmetry in time.


The average entry-slippage column measures the distance between signal and execution in R. The larger it is, the later entries are relative to signals, leaving less room to the target and a worse reward-to-risk ratio.


The stop-adherence violation rate measures how often losses exceeded the plan. Compare average realized R for violating trades with compliant ones to calculate how much delaying stops enlarged average losses.


The previous-result column lets you calculate expectancy after a loss. Select trades entered within N bars of a losing trade and compare their expectancy with the full sample. A lower value suggests revenge trading is slowly draining the account.


Each measure was defined in an earlier article. This article adds that they all come from the same data. Disposition-effect PGR/PLR, chasing-entry slippage, and expectancy immediately after a loss are all different groupings of columns in one trade list. Once the columns are in place, one dataset can measure multiple biases.


Expectancy by setup tells you what to retire


The most direct aggregation is expectancy by setup. Group rows by setup tag, then calculate win rate, average winning R and average losing R in each group. Suppose 50 breakout trades win 45% of the time with a 2.0R average win and 1.0R average loss. Expectancy is 45% × 2.0R minus 55% × 1.0R, or +0.35R. In the same account, 30 countertrend trades might win 55% with a 0.8R average win and 1.3R average loss. That gives 55% × 0.8R minus 45% × 1.3R, or −0.145R.


If you look only at one overall expectancy, the two setups may be mixed into what appears to be a positive result. Split them and the countertrend setup's contribution to losses is plain. A candidate for removal is not necessarily a low-win-rate setup; it is one with negative expectancy. In this example, the countertrend setup wins ten percentage points more often yet has negative expectancy.


Do not retire a setup based on a negative figure from too few trades. −0.2R from eight observations may be chance. Retire only when enough trades have accumulated; until then, keep tagging and defer judgment until the estimate stabilizes.


Deciding which setups to keep or retire
Deciding which setups to keep or retire

Tagging and retiring are recurring tasks


Using a journal as a dataset is not a one-time cleanup. Add the week's new rows, recalculate expectancy and bias measures by setup, retire negative-expectancy setups or narrow their entry conditions, and adjust stops and targets if exit measures are asymmetric. Then aggregate the next sample to see whether the change affected expectancy.


You can calculate by hand, or export trades as CSV and upload them to CSV Analysis to obtain win rate, reward-to-risk ratio, expectancy and drawdown together. With a setup column, you can split those measures by setup. The tool aggregates; a person must tag at entry and exit. No tool can measure bias from an empty column.


The aim is not to raise win rate. It is to reduce negative-expectancy setups in the trading mix and increase the share of positive ones, gradually lifting total expectancy. A week's sample is small and noisy, but repeating the process over weeks produces a more stable picture of which setups shrink the account.


Two pitfalls


Using the emotion column as a diary. If it contains sentences such as “I was impatient; I regret it,” the column cannot be aggregated. Define a few categories—impatience, overconfidence, fear—and tag them, so realized R can be grouped to calculate numbers such as expectancy for overconfident trades. Prose is for rereading; tags are for aggregation.


Retiring a setup from too few trades. Abandoning a setup after a handful of losses packages recency bias as a rule. Even positive-expectancy setups naturally suffer short losing streaks. Consider both sample size and the confidence interval around expectancy before deciding to retire one.


Bias becomes numeric only in tagged columns


As a collection of reflections, a trade journal leaves bias as a vague feeling that shifts again after the next loss. As a dataset, “I take profits too early” becomes a gap in average holding time between winners and losers, and “this setup suits me” becomes its expectancy. Earlier articles examined the disposition effect, chasing and revenge trading separately, but their measures are simply different cross-tabulations of the same dataset. Record the setup and planned 1R on every fill to turn those impressions into columns that can be calculated together.

Check it in your own trading record

Upload an MT5 trade history report or a TradingView strategy trade list (CSV) to calculate the profit distribution and losing streaks. No sign-in is needed to analyze.

Analyze my trade history Explore an example report