← All articles

disposition effect

A Worked Example: What a Behavioral Engine Reads in a Trade History

We assembled a trade history out of textbook behavioral patterns and ran a behavior-analytics engine over the raw fills. The footprint each pattern left — and what the engine refused to claim.

A position closes higher after three days, and closing it feels like the obvious move — the number is good, take it, move on. A different position, down since the week it was opened, is still on the books a month later, because closing it would settle a question that leaving it open keeps unsettled. Two decisions, one trader, and almost no symmetry between them.

Now imagine watching that trader from the outside — not reading a journal, not asking how any trade felt, just taking the raw fills, the entry and exit timestamps, the position sizes, and running them through something that measures behavior directly. What would it actually find?

We built that setup on purpose, so we could show the machinery in the open.

The setup

The trader in this example is not a real person, and we want to say that plainly before a single number appears: what follows is a deliberately constructed demo portfolio — not real fills. We assembled a three-month trade history — forty closed positions in US equities — and designed it to contain a few of the most heavily replicated patterns in behavioral finance: closing positions that moved up while holding ones that moved down, adding size to positions already underwater, entering in a hurry. Then we handed the raw tape to biaX’s analytics engine — the same code the app runs — and let it read the history with no hand-scoring at all.

The reason to construct the case rather than borrow a real account is transparency. Every trade is printed in the table at the end of this post. Nothing in the sections below was typed in by us — it is what the engine returned, and you can check each figure against the tape yourself. A worked example you can audit line by line is a stronger thing to hand a skeptical reader than a screenshot you have to trust.

The first footprint: closing time

The clearest thing the engine found was in the timestamps. Sorted into the positions that closed higher than they opened and the positions that closed lower, the two piles had very different holding times. The higher-closing pile was held about three days on average. The lower-closing pile was held about thirty — roughly ten times longer.

This is the disposition effect, the asymmetry Terrance Odean documented in 1998 using real brokerage records: positions that move in the trader’s favor tend to get closed sooner and more often than positions that move against them. The mechanism researchers point to is loss aversion — a decline of a given size registers more sharply than an increase of the same size, and closing a down position settles that decline as final while holding it open preserves the option that it is not final yet.

What matters here is that the engine derived the gap from two timestamps per trade and nothing else. No one had to remember how any position felt, or admit to holding anything too long. The asymmetry was already in the data, waiting to be measured.

The second footprint: adding to the ones that were down

Of the forty positions, eleven were flagged as averaging down — adding size to a position that was already underwater at the time of the add. In this constructed history, every one of those additions landed on a position sitting at a loss, and none on a position sitting at a gain.

That directional footprint has its own literature: Arkes and Blumer described the sunk-cost effect in 1985 — the pull to commit further to something precisely because you have already committed to it. In trade data it leaves a distinctive shape, adds concentrated on the positions moving the wrong way, and the engine surfaces it as a count and a direction rather than as a judgment. It does not say the additions were errors. It says where they went.

What the engine left blank

Some patterns need information this example didn’t carry. Whether a closed position had room left to run when it was sold, or how far underwater a held position drifted at its worst, both require a full intraday price path — and this off-prod run had no price feed attached. For those fields, the engine returned “insufficient data” and stopped. No estimate, no zero standing in for a number that wasn’t measured.

That blank is not a limitation to apologize for; it is the design. Where there is nothing to measure honestly, biaX leaves the space empty rather than filling it. The engine also produced lighter breakdowns — how the history distributed across entry hours, how it grouped by the trader’s own entry tags — but those are offered as distributions and associations, described rather than diagnosed. The load-bearing findings are the two footprints above, because those are the ones the raw tape can support without reaching.

The mirror, not the verdict

The worked example does not grade the trader, and it can’t. What it shows is narrower and more useful: patterns that people usually only feel — “I probably hold the losing ones a little long,” “I tend to double down when I’m annoyed” — leave specific, countable footprints that don’t depend on anyone’s memory of the trade. A holding-time gap is two timestamps. An averaging-down count is arithmetic on the fills. Neither needs a confession.

And because the entire history is constructed and printed below, none of it has to be taken on faith. You can read the tape, sort it yourself, and see whether the footprints are where we said they were.

biaX measures these same footprints in a trader’s own history, from their own fills. What the mirror shows is theirs to read.


The trader above is an illustrative example, not a real person, presented openly as a constructed case. The figures are the analytics engine’s output over the trades in the table below. This is a description of patterns in trade data and the behavioral-finance research behind them — not advice, not a prediction, and not an evaluation of anyone’s trading.

The tape (the forty positions the engine read)

#EntryTickerHoldRealized P&LEntry tagAveraged down?
12026-05-04TSLA5d+1.48%
22026-05-04AMZN2d+5.30%Conviction
32026-05-06COIN21d-15.90%Calmyes ×2
42026-05-07SOFI2d+2.70%FOMO
52026-05-08AMZN4d+3.62%Calm
62026-05-09META24d-2.39%Calmyes ×1
72026-05-12MSFT11d-4.04%Greedyyes ×3
82026-05-12META47d-10.94%FOMOyes ×3
92026-05-12AMD1d+5.71%Conviction
102026-05-12PLTR1d+4.23%Calm, Conviction
112026-05-13PLTR3d+3.41%
122026-05-14AMD1d+6.33%
132026-05-15AAPL5d+2.64%FOMO
142026-05-15AMZN1d+4.25%Calm
152026-05-19SOFI18d-9.17%FOMO
162026-05-23PLTR25d-4.11%Greedyyes ×3
172026-05-26SOFI15d-13.50%Convictionyes ×1
182026-05-27SOFI6d+2.80%FOMO
192026-05-28AMD2d+1.09%Calm
202026-05-29MSFT3d+6.24%Greedy
212026-05-29AMD41d-9.11%Conviction
222026-05-31COIN1d+1.74%Conviction
232026-05-31AMZN52d-3.19%Calmyes ×2
242026-06-01NVDA38d-12.88%FOMO, Greedy
252026-06-02AAPL40d-14.59%Greedy
262026-06-03SOFI17d-14.37%FOMOyes ×2
272026-06-05TSLA4d+2.62%FOMO
282026-06-07SOFI16d-15.23%FOMO
292026-06-08MSFT22d-3.98%Regret
302026-06-08AAPL20d-9.68%Regretyes ×3
312026-06-12MSFT5d+5.63%Conviction
322026-06-13PLTR35d-14.42%Greedyyes ×2
332026-06-17TSLA55d-4.26%Greedyyes ×3
342026-06-18META52d-14.09%FOMO, Greedy
352026-06-22AMD23d-9.25%Conviction
362026-06-24AMD4d+1.44%Calm, Conviction
372026-06-25AMZN4d+1.47%
382026-06-26SOFI2d+5.35%Conviction
392026-06-27PLTR19d-7.83%FOMO
402026-06-28META5d+1.49%Calm

This article describes statistical and behavioral patterns observed across trading activity. It is provided for informational and educational purposes only. It is not investment advice, a recommendation, or a solicitation to buy or sell any security, and past patterns do not predict future results.