OPEN-SOURCE SCRIPT
Atty Moving POC Average and Projection

Every trading session has a point of control: the price where the most volume traded. One session's POC is a single number. This script collects that number from every session on the chart, in order, and runs a moving average through the series. The result is one line - a slow-moving estimate of where a market has been doing its business, and which way that centre of business is drifting.
Two averages are drawn so a short memory and a long memory can be compared on the same chart, POC 20 and POC 200 by default. Session window, both lengths, both average types and both colours are inputs.
WHAT IT IS NOT
The average is not a forecast of the next session's POC, and it should not be traded as a target. Measured on 833 ES sessions, a 20-session POC average misses the next session's POC by an average of 104 points, where the session open alone misses by 21. Prior volume structure was also tested as an attractor in three forms - a composite profile POC, a recency-weighted composite, and the nearest high-volume node to the open - and the strongest of them pulls the POC with a coefficient of 0.09. Read this line as a slow centre of past value, nothing more.
THE PROJECTION AND THE FAN
A moving average of N session POCs moves by a known rule. When the next session closes, an SMA(N) moves by exactly (new POC - dropped POC) / N. The dropped POC is already history; only the incoming one is unknown.
So the forward path is built rather than extrapolated. The average is recomputed forward with each future session's POC set to its expected value, and the drift you see comes from the old POCs rolling off the back of the window - information already in hand.
The fan around that midline is the uncertainty of the incoming POCs passed through the average's own weights, so it is roughly session sigma / N one session out. The weights are measured numerically by perturbing each future value and re-running the average, which makes the same code exact for SMA, WMA and EMA. The fan narrows as a session fills in, closes to a point at the bell, and re-opens from the next session.
MEASURED RATHER THAN ASSUMED
Constants were fitted on ES regular-hours sessions from 2021 to 2025 with the most recent twelve months held back, then applied once, unchanged, to that held-back year.
- Anchor. Early in a session the current price estimates the final POC better than the developing POC does. They cross about 60% through, so the two are blended on a ramp.
- Settle curve. Remaining uncertainty decays as (1 - elapsed) ^ 0.37, not linearly. Half way through a session about three quarters of it is still live. The held-back year refitted this at 0.33.
- Three dispersions. POC-to-POC for future sessions, POC-to-prior-close before the bell, POC-to-open after it. Learning where a session opened removes roughly a third of the uncertainty.
- Day type. Sessions that have already run wide, on heavy volume, finish with their POC further from current price. Sigma scales as (range so far / typical range by this time) ^ 0.77, judged against the same point in the last 20 sessions. On the held-back year this still ranked the eventual distance, rho +0.17 early in the day rising to +0.34 late.
- Band shape. The outcome is sharply peaked with a long tail, so bands are drawn at measured containment rather than Gaussian multiples: 0.47 and 1.48 sigma at a one-session horizon, against the Gaussian 1.00 and 2.00.
WHAT IS STILL ASSUMED
Future POC changes are treated as independent with constant sigma. The containment multipliers drift with time of day - nearer 0.7 in the first hour, nearer 0.45 at midday - and a single pair is used for all of them, so the bands run narrow early in a session. The interpolation toward Gaussian at longer horizons is an argument from the central limit theorem, not a measurement.
NOTES
Profile resolution is the chart timeframe, so run it intraday, 1 to 60 minutes. A US session gives 390 bars to distribute on a 1-minute chart and 78 on a 5-minute chart; on 30 minutes the line still draws but its inputs are coarse. Symbols without volume can be profiled on bar count instead. A session POC is computed at its close and never revised, so the averages do not repaint; the fan is a live forward estimate and updates every tick by design.
This measures and draws. There are no entries, stops, targets or signals, and nothing here is evidence of a trading edge.
Two averages are drawn so a short memory and a long memory can be compared on the same chart, POC 20 and POC 200 by default. Session window, both lengths, both average types and both colours are inputs.
WHAT IT IS NOT
The average is not a forecast of the next session's POC, and it should not be traded as a target. Measured on 833 ES sessions, a 20-session POC average misses the next session's POC by an average of 104 points, where the session open alone misses by 21. Prior volume structure was also tested as an attractor in three forms - a composite profile POC, a recency-weighted composite, and the nearest high-volume node to the open - and the strongest of them pulls the POC with a coefficient of 0.09. Read this line as a slow centre of past value, nothing more.
THE PROJECTION AND THE FAN
A moving average of N session POCs moves by a known rule. When the next session closes, an SMA(N) moves by exactly (new POC - dropped POC) / N. The dropped POC is already history; only the incoming one is unknown.
So the forward path is built rather than extrapolated. The average is recomputed forward with each future session's POC set to its expected value, and the drift you see comes from the old POCs rolling off the back of the window - information already in hand.
The fan around that midline is the uncertainty of the incoming POCs passed through the average's own weights, so it is roughly session sigma / N one session out. The weights are measured numerically by perturbing each future value and re-running the average, which makes the same code exact for SMA, WMA and EMA. The fan narrows as a session fills in, closes to a point at the bell, and re-opens from the next session.
MEASURED RATHER THAN ASSUMED
Constants were fitted on ES regular-hours sessions from 2021 to 2025 with the most recent twelve months held back, then applied once, unchanged, to that held-back year.
- Anchor. Early in a session the current price estimates the final POC better than the developing POC does. They cross about 60% through, so the two are blended on a ramp.
- Settle curve. Remaining uncertainty decays as (1 - elapsed) ^ 0.37, not linearly. Half way through a session about three quarters of it is still live. The held-back year refitted this at 0.33.
- Three dispersions. POC-to-POC for future sessions, POC-to-prior-close before the bell, POC-to-open after it. Learning where a session opened removes roughly a third of the uncertainty.
- Day type. Sessions that have already run wide, on heavy volume, finish with their POC further from current price. Sigma scales as (range so far / typical range by this time) ^ 0.77, judged against the same point in the last 20 sessions. On the held-back year this still ranked the eventual distance, rho +0.17 early in the day rising to +0.34 late.
- Band shape. The outcome is sharply peaked with a long tail, so bands are drawn at measured containment rather than Gaussian multiples: 0.47 and 1.48 sigma at a one-session horizon, against the Gaussian 1.00 and 2.00.
WHAT IS STILL ASSUMED
Future POC changes are treated as independent with constant sigma. The containment multipliers drift with time of day - nearer 0.7 in the first hour, nearer 0.45 at midday - and a single pair is used for all of them, so the bands run narrow early in a session. The interpolation toward Gaussian at longer horizons is an argument from the central limit theorem, not a measurement.
NOTES
Profile resolution is the chart timeframe, so run it intraday, 1 to 60 minutes. A US session gives 390 bars to distribute on a 1-minute chart and 78 on a 5-minute chart; on 30 minutes the line still draws but its inputs are coarse. Symbols without volume can be profiled on bar count instead. A session POC is computed at its close and never revised, so the averages do not repaint; the fan is a live forward estimate and updates every tick by design.
This measures and draws. There are no entries, stops, targets or signals, and nothing here is evidence of a trading edge.
Скрипт с открытым кодом
В истинном духе TradingView, создатель этого скрипта сделал его открытым исходным кодом, чтобы трейдеры могли проверить и убедиться в его функциональности. Браво автору! Вы можете использовать его бесплатно, но помните, что перепубликация кода подчиняется нашим Правилам поведения.
Отказ от ответственности
Информация и публикации не предназначены для предоставления и не являются финансовыми, инвестиционными, торговыми или другими видами советов или рекомендаций, предоставленных или одобренных TradingView. Подробнее читайте в Условиях использования.
Скрипт с открытым кодом
В истинном духе TradingView, создатель этого скрипта сделал его открытым исходным кодом, чтобы трейдеры могли проверить и убедиться в его функциональности. Браво автору! Вы можете использовать его бесплатно, но помните, что перепубликация кода подчиняется нашим Правилам поведения.
Отказ от ответственности
Информация и публикации не предназначены для предоставления и не являются финансовыми, инвестиционными, торговыми или другими видами советов или рекомендаций, предоставленных или одобренных TradingView. Подробнее читайте в Условиях использования.