# TPO Profile

A Volume & Order Flow concept (Market profile / auction theory) in the LuxAlgo Library, with 1 indicator implementation.

## What is a TPO Profile?

A TPO profile, short for Time Price Opportunity and better known as Market Profile, organizes a session by time spent at each price. The session is divided into fixed periods, traditionally 30 minutes, and each period is assigned a letter; every price touched during that period prints its letter once. Stacked up, the letters form a distribution: the row with the most letters is the TPO [point of control](https://www.luxalgo.com/library/concept/point-of-control/), and the band holding roughly 70% of all TPOs is the [value area](https://www.luxalgo.com/library/concept/value-area/). The format was developed by J. Peter Steidlmayer at the Chicago Board of Trade in the 1980s.

Steidlmayer's format shipped through the CBOT in the mid-1980s as a data product for members, and the auction-theory reading that grew around it, markets as ongoing two-way auctions seeking value, was systematized by later educators, most influentially the Dalton tradition of Mind Over Markets. The letters are incidental; the durable idea is treating a session as a distribution under construction rather than a line.

The profile's shape is the primary read. A symmetric bell says the session balanced around accepted value; elongated or lopsided shapes, such as the P and b profiles commonly read as short covering and long liquidation, say one side kept the auction moving. Structural details refine it: [single prints](https://www.luxalgo.com/library/concept/single-prints/) mark prices rejected within a single period, and poor (unexcessed) highs or lows mark auctions that finished without conviction. TPOs count time, not size, so a price can accumulate many letters on thin volume, which is why many traders run a [volume profile](https://www.luxalgo.com/library/concept/volume-profile/) alongside.

Across sessions the vocabulary scales up. One-timeframing, each period extending in the same direction without taking out the prior period's opposite extreme, is the profile's word for persistent directional control; overlapping value areas build the bracket that composite profiles then map; and the day-type taxonomy (trend day, normal variation, neutral day) classifies sessions by how far range extension carried beyond the initial balance. The letters encode all of it compactly enough that experienced readers reconstruct the session's story from the profile alone.

## How to read a TPO Profile

A TPO profile is read shape-first, then feature by feature.

1. Check the period setting: each letter represents one time period, traditionally 30 minutes, and every price touched in that period receives that letter once.
2. Assess the overall shape: a symmetric bell suggests balance, while elongation or a P or b shape suggests one-sided activity.
3. Locate the TPO point of control and value area, then scan for structure: single prints, poor highs or lows, and how far range extension carried beyond the initial balance.
4. Compare against prior sessions: overlapping value suggests a developing bracket, while steadily migrating value suggests trending conditions.

## How it's calculated

A sideways histogram of how much time price spent at each level during a session, from which the point of control and value area are derived.

```
1. Split the session into consecutive time brackets of equal length, commonly 30 minutes, and label them A, B, C, ...
2. Split the price axis into rows of fixed height (the row size).
3. For each bracket, print one TPO (the bracket's letter) in every price row that traded during that bracket.
4. TPO_p = the number of TPOs printed at row p over the whole session; the profile is the histogram of TPO_p across rows.
5. POC = the row with the largest TPO_p; on ties, convention takes the tied row closest to the center of the range.
6. Value area: starting from the POC row, compare the combined TPO count of the next two rows above the area with the next two rows below, add the larger pair, and repeat until at least VA% of all TPOs are enclosed; VAH and VAL are the top and bottom of that zone.
7. Initial balance = the full price range covered by the first two brackets (commonly the first hour).

  bracket: fixed time slice of the session (default 30 minutes)
  p: price row index
  row size: price height of one profile row (platform dependent, often auto or a tick multiple)
  TPO_p: count of brackets that traded at row p
  POC: point of control, the row with the highest TPO count
  VA%: value area coverage (default 70)
  VAH: value area high, top of the value area
  VAL: value area low, bottom of the value area
```

The 70% value area echoes one standard deviation of a normal distribution; it is convention, not a fitted statistic.

Platforms differ on whether one row or a pair of rows is added per step, so VAH and VAL can differ slightly between tools.

A volume profile is the same construction with traded volume per row instead of time counts.

## How traders use it

- To classify the day type early: the [initial balance](https://www.luxalgo.com/library/concept/initial-balance/), customarily the first two periods, and the extent of range extension beyond it help distinguish balanced rotation from a trend day, setting expectations for the rest of the session.
- As a level map for the next session: prior-day TPO POC, value area edges, single prints, and poor highs or lows are carried forward as references where responsive or initiative behavior is expected to show itself.
- To read balance versus imbalance across days: overlapping value areas signal a market building a bracket, while consistently migrating value signals a one-timeframing trend.
- Merging multiple sessions into a composite TPO profile to frame the larger bracket the market is auctioning within, and the levels where that bracket would break.
- In a modern stack: TPO structure for the auction's time story, a [volume profile](https://www.luxalgo.com/library/concept/volume-profile/) for size at price, [session VWAP](https://www.luxalgo.com/library/concept/session-vwap/) for the running average, and [volume delta](https://www.luxalgo.com/library/concept/volume-delta/) for aggression, with disagreements between the time and volume views flagging prices where the tape's activity was unusual.

## TPO Profile vs related concepts

- **Volume Profile** (https://www.luxalgo.com/library/concept/volume-profile/): A volume profile weights each price by traded volume; a TPO profile weights it by time. Their POCs and value areas often sit close together but can separate sharply when heavy volume transacts quickly at one price.
- **Value Area** (https://www.luxalgo.com/library/concept/value-area/): Not a rival tool but a component: the central band, customarily 70%, of either a TPO or volume distribution. Which profile it is derived from changes the resulting levels.
- **Initial Balance** (https://www.luxalgo.com/library/concept/initial-balance/): The initial balance is a time bracket covering the session's opening periods, read within the TPO profile. It frames the early range; the full profile shows how the rest of the auction treated that range.

## FAQ

### Is a TPO profile the same as Market Profile?

Functionally, yes. Market Profile is the branded name under which Steidlmayer's method was popularized through the Chicago Board of Trade; TPO profile or TPO chart is the generic label most platforms use. Both stack letters per time period into the same distribution and are read the same way.

### What is the difference between the TPO POC and the volume POC?

The TPO POC is the price with the most time-based prints; the volume POC is the price with the most traded volume. They often coincide in rotational sessions but can separate when large volume trades quickly at one price, and many profile traders track both as distinct references.

### What are single prints and why do they matter?

Single prints are price rows touched in only one period, left behind by a fast directional move. They mark rejection and conviction, and profile traders watch them as reference zones on revisits, similar in spirit to gaps. They are frequently repaired in later sessions, but there is no rule that they must be.

### What does one-timeframing mean?

A sequence in which each period extends the move in one direction without trading through the prior period's opposite extreme: every 30-minute bracket makes a higher low (or lower high) than the last. It is the profile's definition of sustained directional control, and its break, the first period to violate the sequence, is watched as the earliest sign the drive is loosening.

### What do P-shaped and b-shaped profiles mean?

They are the lopsided session shapes. A P-profile (fat top, thin stem below) marks a session that drove up and then built acceptance at the highs, classically read as short covering; a b-profile mirrors it downward, classically long liquidation. Both say the session was one-sided early and balanced late, and the follow-through question is whether the new value holds.

### How should TPO periods be set in 24-hour markets?

The 30-minute letter is convention, not law, and the deeper question in around-the-clock markets is which session to profile. Common practice splits crypto and FX days by the major sessions or by UTC day, keeps the 30-minute period for comparability, and accepts that without a cash open the initial-balance concept needs an explicit definition. Consistency matters more than any particular choice.

## Implementations in the Library

- TPO Profile (LuxAlgo): https://www.luxalgo.com/library/indicator/tpo-profile/

## Related concepts

- Initial Balance: https://www.luxalgo.com/library/concept/initial-balance/
- Single Prints: https://www.luxalgo.com/library/concept/single-prints/
- Unfinished Auction: https://www.luxalgo.com/library/concept/unfinished-auction/
- Excess: https://www.luxalgo.com/library/concept/excess/
- Balance vs Imbalance: https://www.luxalgo.com/library/concept/balance-vs-imbalance/
- Rotation Factor: https://www.luxalgo.com/library/concept/rotation-factor/
- One-timeframing: https://www.luxalgo.com/library/concept/one-timeframing/
- Day-type Taxonomy: https://www.luxalgo.com/library/concept/day-type-taxonomy/
- Value Migration: https://www.luxalgo.com/library/concept/value-migration/
- 80% Rule: https://www.luxalgo.com/library/concept/80-percent-rule/

---

Source: https://www.luxalgo.com/library/concept/tpo-profile/ (LuxAlgo Library, the encyclopedia of trading & technical analysis). Free to use with attribution: https://www.luxalgo.com/library/license/