File size: 5,043 Bytes
c99df4c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# What Happens if We Increase or Decrease the Bin Size of Market Profiles (TPO & Volume)?

This applies specifically to the standard or free-tier market profiles available on most charting platforms. Market profiles are typically built on either the **Time Price Opportunity (TPO)** profile or the **Volume Profile (VP)**, whether real or tick-based. Regardless of the type, the underlying calculation is the same: raw data is cleaned through dataframes (xlsx, csv, etc.) and represented through graphs (lines, bars, plots, etc.). A market profile is simply datapoints collapsed into a y-axis distribution, forming a "profile." That is it -- nothing more.

But what actually happens when we increase or decrease the **bin size** (the price-step) of the market profile?

<br><br>

## Collapsing Price Action into a Profile

<table>
  <tr>
    <td align="center">

      <img width="995" height="488" alt="Collapsing price action into a market profile" src="https://github.com/user-attachments/assets/30f8a35e-1060-48c2-8f63-bbda3b989c93" />

    </td>

  </tr>

</table>


In the figure above, we have one MP chart (left) and one line chart (right), both derived from the same dataset. The price action over time (line chart) moves from point **A** to **B**, **C**, and **D**. When we collapse those datapoints (A through D) into a y-axis distribution histogram, a Market Profile chart is formed.

If we use a bin size of **1.000** and the price range spans **3000.000 to 3010.000**, then between those prices we get **10 bins** worth of grouping. Same data, different representation.

<br><br>

## Larger Datasets and Stacking

<table>
  <tr>
    <td align="center">

      <img width="996" height="488" alt="Larger dataset forming a market profile" src="https://github.com/user-attachments/assets/f05cdd33-80a0-47e1-8041-56543ef5d7d5" />

    </td>

  </tr>

</table>


With larger datasets, the principle remains the same. Datapoints collapse and stack to form a y-distribution. The more stacking occurs, the larger the profile becomes. In this example, the lowest profile value is **0** and the largest profile value is **4 stacks**.

<br><br>

## The Effect of Changing Bin Size

<table>
  <tr>
    <td align="center">

      <img width="995" height="484" alt="Market profile with different bin size" src="https://github.com/user-attachments/assets/6637ea25-0abc-40ad-a8a1-b35d2abd89cb" />

    </td>

  </tr>

</table>


The figure above uses the **same dataset** as the previous one, yet the profile looks different. It now has a lowest value of **0** and a largest value of only **2 stacks**. If you are a beginner, this might feel suspicious when experimenting on your preferred charting platform -- but it is completely normal.

The reason is straightforward: **more bins means more price groups for the datapoints to distribute across.** As bin size decreases (more granular bins), each datapoint lands in a more specific price bucket. This spreads the data across more bins, resulting in shorter stacks and a flatter profile. Conversely, increasing the bin size consolidates datapoints into fewer groups, producing taller stacks and a more concentrated profile.

That is the kind of market profile you typically get on free-tier charting and trading platforms.

<br><br>

## An Alternative Approach: Trail-Price Clustering

There is another way to model a market profile. Without going into full detail -- if you are an algorithmic trader or software developer familiar with feature engineering, this will be straightforward. The core idea is to **add data to your original dataframes by clustering trail-prices** (an original concept) to produce a more complete set of datapoints.

<table>
  <tr>
    <td align="center">

      <img width="1006" height="490" alt="Trail-price clustering concept" src="https://github.com/user-attachments/assets/8277ff21-9999-4ac1-b9db-e7c8b99578a3" />

    </td>

  </tr>

</table>


This concept extends well beyond these illustrations. You can fill in missing data in dataframes (for any dataset) by applying a custom formula using your preferred programming language.

<br><br>

<table>
  <tr>
    <td align="center">

      <img width="1066" height="519" alt="Enhanced market profile model" src="https://github.com/user-attachments/assets/e2bcdea8-1944-4c4f-a467-1d8943972512" />

    </td>

  </tr>

</table>


The drawings may be rough, but the point stands. In our case, we model a market profile not based on **TOCHL** (Time, Open, Close, High, Low) or **Volume** (real, tick) but on **mBA** (microsecond raw bid/ask) formation.

<br><br>

## Reference

```bibtex

@misc{continualquasars2026blog1,

  title   = {What Happens if We Increase or Decrease the Bin Size of Market Profiles (TPO \& Volume)?},

  author  = {ContinualQuasars},

  year    = {2026},

  url     = {https://github.com/ContinualQuasars/BLOG-1},

  note    = {What Happens if We Increase or Decrease the Bin Size of Market Profiles (TPO \& Volume)?}

}

```