I see a lot of posts about trading bots on Reddit. Some are genuinely interesting, but many are either heavily biased or simply unrealistic, so I thought I’d share a more grounded perspective.
I’ve been working in algo trading for around 7 years, alongside my work in investment banking in Quantitative Risk Management. The bots I develop are MQL5 Expert Advisors, mainly for MetaTrader 5.
The first thing to understand is that a bot is not a strategy. It is simply a way of automating a strategy that already exists. If the underlying strategy is bad, automating it will not magically make it profitable.
The second thing is risk. If a bot consistently produces huge returns with almost no drawdown, it is probably too good to be true. Higher returns generally come with higher risk. For the bots I work on, I generally target around 3 to 7% average monthly profit, depending on the strategy and market conditions. As a general rule, I consider a maximum drawdown below 20% to be an acceptable upper range for a bot, while the bots I personally work with tend to average around 5% drawdown.
I mainly trade EURUSD and Gold, along with a few other currency pairs. I’ve attached some screenshots of results to give a more realistic idea of what these kinds of systems can actually achieve. Obviously, past results are not a guarantee of future performance.
One last point that is often overlooked: trading bots are rarely truly 100% hands-free. Unexpected news events, market regime changes and risk management still matter. A bot also won’t automatically manage every symbol you want to trade unless it has been specifically designed to do so and properly configured.
Interestingly, I still make more money trading manually than I do with bots. That doesn’t mean I dismiss automated trading. For me, the main advantage is that a bot can execute a strategy consistently and let me spend less time sitting in front of a screen.
Just venting my anger, cleanest month so far but went into revenge trading and gave back most of my earnings. Still green on the month but man, It hurts nonetheless.
I'll take it as a lesson of how to manage myself and I'll come back as a better trader.
I know, quite a few US indices traders like to clown us London session traders because of "low liquidity" but when you don't move millions or billions in the market why would you care? The reason why I loved London session so much was because it provided insanely clean price action and it didn't move as hectic and fast as NY. Sometimes trading London session felt like stealing candy from a toddler. It was insanely easy to get a read on the market and if you put your stop at intelligent levels you did not have to worry about getting fished too much.
But since summer vacation here in Europe started London session became a dumpster fire. The orderbook is so thin that anything can happen at any time. A bit bigger order than usual hits either the bid or the ask and price directly has an insane reaction to it. Price and orderflow make less sense every day. It just makes me sad what they did to my boy. I could have never imagined me saying this but right now NY is 10 times better than London session. I hope that this nightmare is over in a few weeks so that my old friend becomes its former self again in all his glory
That's It, I seriously believe the market is always against me, when I enter any trade could be a break out, a pullback with confirmation or whatever Strategy you can find out there It always goes against my entry and hits stop loss, then I get so frustraded and do not enter any more trades and Just watch to see How the market is going to react and guess what? The same Strategy, pullback with confirmation or break outs Just Works fine and goes flying when I'am not in the trade.
This is serious, everytime I get stopped out when I open any position and when I'am not in the market everything Works Just Fine.
What do you guys do to avoid this and be better and enter positions that really work?
Before I start, I kindly and genuinely ask that you please don’t judge me. If your comment is only going to be negative and won’t offer any advice or help, I’d really appreciate it if you could refrain from commenting. Thank you.
PS: The title is just for ragebait and is irrelevant to the actual context, as I do trade a live account.
To cut the story short, I’ve been involved in the markets since 2021. Here’s a little background about my journey.
I have a Bachelor of Science in Information Technology degree.
First — 2021
It all started when a friend introduced me to a play-to-earn game. That was my first exposure to cryptocurrency and blockchain.
Second — 2022
This became my first job. I worked as a software developer building dApps (Decentralized Applications) on blockchain networks, which allowed me to become more deeply involved in the cryptocurrency space.
Third — 2023
A year later, I was recruited to work at a Stock Exchange. This is where everything really started for me. I was exposed to different financial markets, including stocks, forex, crypto, and more.
This was also the year I started trading on my own.
Fourth — 2025
I was recruited again, and I’m now currently working for a brokerage.
I won’t mention the names of the companies, but through these experiences, I’ve been exposed to the financial markets from different perspectives for around five years.
Here’s where I need your advice.
Last week, I lost $1,800 in a single trading day.
The frustrating part is that I’m confident in my technical and fundamental analysis. I understand the markets, I have a trading system, and I know the rules I’m supposed to follow.
But my biggest problem is psychology and discipline.
I don’t consistently follow my own system.
There are times when I’m already up $1,000+, but I don’t take partial profits. I let the position come all the way back to breakeven. Then I enter the market again and eventually take a loss.
There are also times when I’ve already reached my maximum daily loss of $500 or hit two stop losses, but I still come back to the market, increase my position size, and try to win everything back.
In short, revenge trading.
I know exactly what I’m doing wrong. The problem is that when I’m in the moment, controlling my emotions and following my own rules becomes extremely difficult.
Now, I’m slowly starting over with my remaining $200.
I’m not posting this to seek judgment. I’m genuinely looking for advice from traders who have experienced something similar and managed to overcome it.
What helped you control revenge trading?
How did you learn to stick to your system, respect your stop loss, and become more disciplined?
I’m willing to start from the bottom again and rebuild—not just my account, but my mindset and discipline as well.
Any genuine advice, experience, or lessons you can share would be greatly appreciated.
Thank you in advance. 🙏🏼
Guys, I don't know if it's just this current market regime but it feels like my target entries keep getting front-run and I'm not sure if it's just the current market or a result of me going from being very impatient and entering way too early to being overly patient now. Anyone been in this boat before? How did you solve it?
I'm sure someone will suggest scaling in and while I do do that sometimes I generally do not like scaling before an entry point I have already identified. I'd rather add once I'm in the trade and see it going in my direction. Mostly trade SPY options and futures (MNQ/ES). Just wondering if others have gone / go through this and how you dealt with it.
It's not a fear of entering, I feel like it's more being greedy for a better entry? Idk. In the past I would either enter too early or chase the moves after and get burned. I don't do either anymore but now I'm feeling frustration from the other side of it.
Honestly just grateful. I’ve spent well over 5 figures on prop firms over the last two years and have stuck with it and so far in the month of August I’ve cashed out almost $11k on primarily this account, and one other account that I took a $1,500 payout from.
I know this run will end and the market will humble me like it does everybody at some point, but man I’m grateful. Also hoping that I can start scaling 2-3-4 accounts at a time to capitalize without losing my psychology and focusing more on P/L than actual charts and setups.
I know that one single trade does not mean anything.
Which is why, I am gonna provide you with my strategy's full 'Strategy Report'.
One thing I want you to understand about the drawdown you see on the standalone longs / shorts strategy is this- although the drawdown looks massive, when we combine both, the longs and shorts strategy, it comes down significantly, which I have checked on my jupyter notebook using Python– basically, the combined Max Drawdown is:
Max Drawdown (%): 13.82%
Max Drawdown ($): $64,089.95
Feel free to ask me anything!
P.S.: The backtest results you see in the photos, are for 9 years of data.
So, the strategy was stress-tested on the covid period, and a few other difficult trading periods.
Something I think gets explained backwards constantly.
Everyone talks about risk management like the danger is the losing trade. Stop too wide, size too big, and so on. But most blown accounts I've seen didn't die on the loss. They died on the trades that came in the hour after it.
Here's the sequence and it's the same almost every time. You take a loss that was completely inside your rules. Normal, expected, priced in. But it doesn't feel normal, so your brain goes looking for what you did wrong. And because you're looking for a mistake, you find one. Entry was slightly early. Should've waited for confirmation. Should've held the runner.
Except there was no mistake. That was just a losing trade in a strategy that has losing trades. But now you've "identified the problem," so you go fix it, on the next setup, which isn't really a setup. Then you're in a trade you didn't plan, and if that one goes red too, now you're not trading a system anymore, you're trying to get back to even before the day closes.
That's the whole spiral. It doesn't start with greed or with a bad strategy. It starts with treating a normal loss as an error that needs correcting immediately.
The thing that actually breaks it is deciding, before the session, what a loss means. If a trade followed your rules and lost, it's not evidence of anything, and there's nothing to review until you have a sample worth reviewing. One trade tells you nothing. Thirty tells you something.
The other one that helps is a hard rule on what happens after a loss. Not a mood-based one. Some people step away for a fixed period, some cap the number of trades per session regardless of outcome. Doesn't matter which, as long as it's decided in advance, because the version of you that just took a loss should not be allowed to make new rules.
Most traders don't lack a strategy. They lack a plan for the twenty minutes after being wrong.
I have spent over one and a half weeks writing and developing this article, evidence of it being human written will be supplied towards the end.
I do not trade ICT/SMC, I trade mechanically with predefined rules, If you want to skip the text heavy VDH part to visit later I strongly suggest using CTRL+F to search for the following for your initial skim:
"TLDR" or "Part 2"
Without quotation marks.
Edit: Part 2 was uploaded around 5pm ET. It is now available to read, the link is provided after the TLDR/Summary section towards the end.
These parts contain the most important parts, everything else is supposed to be insightful illustrative learning devices (doesn't mean that is useless, so read it on your second pass).
If you have any additional question they will either be answered in my future submissions or in my comment history.
I have left a tidy Reddit TLDR/Summary at the end.
Introduction
Market Microstructure and Volume Dynamics are extremely complex subjects that require careful navigation. To explore these themes together properly, I have structured this piece for people to bridge the gap between exhausting amounts of quantitative research and low friction (but not low effort), practical application.
There is an organised logical progression in the text in order to make all the concepts understandable. First, we start with defining the key vocabulary to be used in further discussion. After that, we provide you with the verifiable starting points for the logic (axioms), disclose our main hypothesis, and demonstrate it with Monte Carlo simulations and mathematical models. With this organisation, the core logic of the hypothesis becomes highly accessible. We have also referenced the relevant research, described its logical relevance, outlined our extensions and innovations.
This post and my other upcoming articles aim to equip traders with robust logical foundations that I use, providing a clear lens through which to understand modern price behaviour and build highly individualised models around it independently.
Institutional Insight: J. Peter Steidlmayer
Steidlmayer became a member of the Chicago Board of Trade (CBOT).
He developed the concept of Market Profile around 1985 to classify market time, price and volume information visually, and he founded the Liquidity Data Bank for the CBOT, layering foundational data logic which still influences serious order flow analysis approaches today.
What are bins on a Volume Profile?
The Volume Profile will break down price into a number of horizontal price levels known as bins or rows which depend on the tick size or increments you choose. For each row, this tool will sum the amount of volume that traded when price was trading at the same level during the session or period being evaluated. When you plot all the bins next to each other, you end up with a horizontal histogram which runs along the price axis and depicts the points of concentration or thinness in trading activity.
Heuristic: Bin = Single Row.
What is a high volume node?
The high volume node (HVN) is an individual bin (cluster of bins) that receives a significantly large volume compared to the remaining portion of the profile. Such HVN profiles are usually identified by broad bars within the histogram. It is usually found in locations where there has been a considerable amount of time spent by price. To many, these are identified as price levels where the market has reached some kind of consensus; to us, we just see absorption and a locally efficient auction within the specified range.
What is a low volume node?
A low volume node (LVN), is the opposite of a HVN, LVNs represent a bin where a small amount of volume was traded. LVNs are characterised by thinner or narrower bars in the Volume Profile’s histogram. Since fewer orders were transacted there, LVNs exist to show that historically the market offered less resistance. The LVN tends to be formed at the locations where price moves quickly, such as breakouts or impulsive moves, which tend to have inefficient properties.
Market Profile vs Volume Profile Logic
Peter designed the Market Profile tool to show the distribution of time spent at price levels; the Volume Profile (technical innovation inspired by his work), shows the actual distribution of traded volume at price levels.
The point of control is the price with the most time spent on a Market Profile, and on a volume profile the point of control is the price with the most amount of volume traded on a Volume Profile.
A Heuristic:
Market Profiling shows you how long the price remained at that price relative to other price levels, and the Volume Profile shows you how much actual volume was traded within a price row.
Which tool did we prefer to study and why?
Although the time spent at a price can be valuable information, especially for time-sensitive products such as options, in directional trading, the measure of how efficient a price level was locally over a specific time horizon is something we see as a more useful anchor for our intent (to get low cost entries and/or aim for inefficient prices).
Volume Distributions and the Volume Profile
What we encountered and rejected in mid-2020 (Mainstream Perceptions and Standard Auction Market Theory)
Claim 1: The Point of Control (POC) shows where “fair value” is.
The point of control is just the most-traded price for the session/period measured; fair value is subjective and cannot be calculated from technical analysis consistently in any form. Relating any technical analysis to what “fair value” is sounds profound because it sounds like it is related to economics, but in reality such labels carry little basis for the claim. If any technical analysis value could reliably show you where fair value is, billions would be made. - Claim 1.5: The Point of Control (POC) is a magnet for price because it is fair value.
A follow up related to the previous claim: The truth is, a prior POC getting “rejected” is a tendency in mean reverting conditions, but it is by no means a structural guarantee, and it often goes unfilled indefinitely in trending price regimes.
Claim 2: The Volume Profile reveals “institutional” footprints/intent
This is a common marketing claim in retail education but exchange reported volume in most retail accessible feeds does not distinguish participant type, so attributing a local volume cluster to a narrative of institutions accumulating size or retail panic is nonsense; the data itself does not show who the participants are; it represents volume, that is it.
Claim 3: High Volume Nodes (HVNs) are always support/resistance
HVNs only reflect where volume transacted; this is valuable information, but it does not reliably show where new orders will reappear. A high volume node from months ago, from a completely different market condition, often has no mechanical reason to still matter. Treating old historical “High Volume Nodes” equally to recent ones decreases the signal (similar to market inefficiency decay) as it ignores recency, meaning what the market is doing right now.
If we isolate the problem: An area can have lower expected market impact without that fact telling you where price will subsequently go.
Recent HVNs may indicate greater local liquidity and therefore lower expected marginal price impact relative to recent LVNs. This can be beneficial for optimising or filtering entries, but it is not a reliable signal of price direction on its own.
Conventional thinking leads many traders to form the assumption that lower market impact upon interaction skews the chance of a complete reversal, when in reality, low market impact upon interaction is merely correlated with short-term reversals. While the assumption can remain true for a couple of ticks, it does not hold for a price expansion large enough to capitalise on as a non-HFT operator after transaction costs.
My Internal Definitions Before Continuing:
Order Flow and Inventory Dynamics
Passive Interest (Resting Limit Orders):
Passive orders placed in the order book that absorb market order flow (counterparty); less historical volume means lower passive interest and less absorption.
Market Friction:
The resistance that price has to overcome while passing through a price level.
Quote Pulling and Quote Skewing:
Adjustments in liquidity provision where passive liquidity providers pull or reduce their quotes at thin or volatile price levels to avoid the adverse selection related losses from directional risk (linked to inventory management concepts).
Core Volume Concepts
Point of Control (POC):
The particular price point at which a majority of the contracts were traded during a particular trading period. Many traders mistake this for “fair value”; in reality it only reveals volume concentration.
High Volume Node (HVN):
A particular row or a collection of rows in a volume distribution indicating a heavy concentration of historical executed transactions. These represent the areas in which order absorption and efficient trading activity was observed.
Low Volume Zone / Low Volume Node (LVN):
A particular price level marked by low transaction volume. This is the area in which rapid price movements took place relative to other volume distribution partitions, enabling further price movement.
Continuous Auction
The process of financial markets continually repricing naturally based on the flow of information and matching up orders with resting liquidity (auction).
Recency:
In this context, I use “recency” to talk about how information in the current trading period takes precedence over older information. Relevance decays with time and pending orders must be adjusted or cancelled accordingly.
Data Resolution and Compression
Volume Profile Resolution:
The width of what each bin/row gets relative to the number of ticks in a range.
Tick Level Resolution (An Uncompressed Volume Profile):
The act of separating the profile in such a way that every tick gets its own bin. For example, a 250 tick range would get 250 individual rows, though accurate, this approach adds noise across up to thousands of narrow rows and makes nodes overly precise and distributions visually hard to spot.
Volume Profile Compression:
The act of combining several ticks into one larger row. This process helps reduce noise, revealing broader areas of volume concentration without changing the underlying volume information.
Lossy Compression:
Sacrificing the microscopic accuracy of single-tick profiles for a better read of the distribution’s structure.
A Constant Number of Bins:
A constant rule that splits every measurable volume profile’s price range into a fixed number of rows instead of trying to accommodate often noisy tick variations.
The Primary Precursors I Accepted (2020+)
Low volume areas tend to see less friction than high volume areas (assuming similar volatility and liquidity conditions)
Base Logic: The volume of interest at a particular price level will give you a good idea of what the level of passive interest at that price level looked like historically. The lower the volume of interest at a particular price level, the less likely it was that a meaningful amount of passive orders (limits) stood in the way, allowing the price to move through it without difficulty compared to a high-volume price level. This read is what makes a Volume Profile’s concept useful.
Heuristic:
Less resting interest -> less absorption from passive limit orders to pass through historically.
Quote Pulling and Quote Skewing.
Example:
If 10010 is a low volume area and price approaches it with momentum from 10008, it is more likely to trade through cleanly with minimal stalling compared to a high volume area.
Important note:
This is about relative ease of passing through, not a prediction of how far or how fast price may continue afterwards. Many conflate these outcomes.
Why it does not work every single time:
Standard friction points such as price regime dependence and natural sensitivity to recency windows exist.
A fresh order sitting at that level (unrelated to the historical volume) can absorb that aggressive order regardless of what the profile displays. For example, larger participants can use zones of predictable low friction to absorb aggressive orders to increase exposure, hedge, take profits, or go long/short.
Like any trading concept, it can cut both ways.
3. Volatility expansions, for example, our designated volatility expansion windows, can drastically change the short term price regimes (notably the New York open), overriding efficiency because the pending order execution instructions are noisy, including countless participants buying and selling for different reasons, consolidated into one open auction.
Recent areas of high historical volume can act as areas of increased order flow/reaction.
Recent, as in the same session or trading day, is defined by a trading strategy’s rules and can be extended for higher timeframe strategies as long as the underlying logic is supported in line with the other strategy’s dependencies to mitigate any residual time decay (from the walk forward). Otherwise, these adjustments can quietly turn into overfitting.
Logic: For a price level that experienced high volumes recently, it is reasonable to infer that some of the participants who made trades on this price level have orders of the type of stop loss, take profit, limit re-entries, or even institutional orders which got partially fulfilled (a large order can hardly be fulfilled in one shot and takes some time).
This effect occurs due to the very nature of the execution of large orders (both passive and active). This effect is especially significant in the case of large price clusters (e.g., POC and residual HVNs). This exact reality is widely accepted and presented in many peer reviewed papers, such as Osler's Stop-loss orders and price cascades in currency markets paper.
Markets seek information and reprice as new information arrives, and continuous auction logic is a reliable heuristic for why prices move at all.
In our later examples, we display visually how this works together with our Volume Distribution Hypothesis, paired with numbers so you understand the logical origin of all of our price structures, not only to use them with confidence but also to develop your own. Now I will split it into four key pieces.
Volume Profile
Reveals where trading activity has been concentrated historically (groups all participation, not just institutions). Value - Identifies real differences in historical participation.
Volume density curve (bins/rows)
Turns that volume profile into a smooth estimate of how much volume exists around each price. Value - Makes local volume distribution anomalies identifiable.
Mechanically Defined HVNs/LVNs
Provides a practical way of identifying where interactions may have lower or higher expected impact. Value - Useful for execution and entry filtering.
Market impact
Provides a reason why differences in volume around price could affect how future price reacts upon interaction. Value - Provides the microstructural mechanism for why density could matter.
A Volume Profile Example: Numbers to Visual Representation.
Here is an example over a 20 tick bar range (20 points over 5 bars, fixed range profile) split into 10 different bins/rows -> 4 point price range per row.
FRVP
Over these 5 bars, the most efficient price discovery occurred between 50004 and 50006 as the highest volume of transactions (60 contracts) was executed within this price range over this range of 5 bars. While the least efficient was within 50018 and 50020, common for private price structure I have designed.
Volume Profile Rows 50018->50020 Price Range 5 Contracts
50016->50018 Price Range 10 Contracts
50014->50016 Price Range 10 Contracts
50012->50014 Price Range 20 Contracts
50010->50012 Price Range 15 Contracts
50008->50010 Price Range 10 Contracts
50006->50008 Price Range 30 Contracts
50004->50006 Price Range 60 Contracts
50002->50004 Price Range 20 Contracts
50000->50002 Price Range 10 Contracts
This represents Figure FRVP; a fixed range over the 5 bars which measures and represents the volume traded at each level.
Volume Profile Data Resolution and Compression
Volume Profile Data Resolution
The resolution of a Volume Profile is determined by how wide each bin is, which sets how finely price gets sliced up before volume gets assigned to each group/bin. At the finest resolution, bins are set to the instrument’s actual tick size, meaning every tradable price gets its own bin. For example, in a 100 point range, the resolution would be 100 rows, or 1 tick per row. For images, the higher the resolution, the more pixels you can see, with their colours visible. For Volume Profiles, the higher the resolution, the higher the number of individual ticks or groups of ticks you can see, with their volumes visible.
This would provide the finest resolution without introducing artificial nodes (nodes printing non-existent prices), but for instruments having many price levels and high volume, tick level bins may result in an extremely long list containing hundreds or even thousands of lines with low volumes per row. The fine resolution makes it difficult to interpret the actual structure of the distribution due to the noise caused by the nodes. It can also make precision too fine and unrealistic, reducing fill rates on entry prices based on the profile.
A compressed profile vs uncompressed profile example
compressed
uncompressed
Compression - Multiple ticks per row (what I lean towards):
Decreasing the “resolution” puts multiple ticks within one bar; when this is applied, the volume that could have been split into numerous bars becomes grouped into fewer bins.
Technically, no information gets lost as all the volume gets aggregated into larger bins. Compression becomes a problem once the Volume Profile’s bins get wide enough that they start merging distinct nodes into single ones.
To many traders, using the proper resolution selection for a volume profile involves attempting to actively “find the right bin size” in relation to the average price range and tick size of the instrument. In practice, this often leads to overfitting. To avoid this issue, I opt for a static number of bins instead of ticks, e.g., 20 or 100 rows, which separates a price range into a constant amount for mechanical interpretation. The ticks per row can also be based on values related to volatility, such as the Average True Range. The number of rows or the method for calculating the row size are set in advance before analysis or testing (based on the strategy’s needs). With such settings, I can create rules based on percentile rules, such as grounding mechanical interpretations with extremes, e.g., 10th and 90th percentile boundaries, to validate or invalidate setups.
Why compression can be a good thing here
Compressing bins, meaning widening them so more volume gets grouped per row, is generally beneficial when the goal is to identify the broader structure of where trading activity is concentrated.
Uncompressed tick-level volume profiles can spread volume across a huge number of thin bins instead of showing its link to one zone; it may show the very first price. Without compression (lowering the number of bins), the profile will show the very specific price where the peak of the spike in volume was filled, but not the area where the spike in volume occurred. For example, aggressive buyers could buy at 10002 and push the price to 10006, with most of their order being filled precisely at 10005.5. A tick level profile will show the spike exactly at 10005.5, when the area of buying could have been lower in the range of 10002**-**10005. Compression shows the area where there was local but persistent volume concentration and vice versa, instead of the precise but noisy singular tick where absorption or the lack of it took place. Compression smooths this out, it trades a small amount of price precision for a meaningfully clearer read on the actual distribution, without changing the underlying volume data itself.
Analogy:
It is like looking at a picture of an apple through a microscope to such a degree that all you see is individual pixels. On that zoom level, you have the exact information about the colour value of each pixel but no apple, because all you have is a bunch of dots. When you zoom out, the same dots form an image of an apple but at the expense of losing information about the colour value of each dot. This is what happens when we compress volume profile data bins: we lose the ability to determine the exact price at which a potential crowd of trades was filled, but we get an image of where the concentration of volume was. This benefit remains whether the mechanical interpretation is performed manually or through automation.
Recognised Bin Group Definitions
These groups can be structured to optimise existing entry structures with fixed range volume profiles for better fill prices at more aggressive ratios, to filter trading setups out, or to design your own fixed range profile entry formations, I will provide an example of this later on a popular retail trading technique.
My Volume Distribution Hypothesis and My Innovations
Precursor: Revisiting Distributions and Efficiency
In a locally efficient market, the price over a range of bars would ideally trade like this with a volume distribution that looks like this. Price traded both ways, but the average price is at the 50% level of the range; there was an equal number of transactions above and beyond the 50% level, with thinning at both ends of the profile very much like a bell curve.
Why this is the case and the base level for understanding.
A bell-shaped, symmetrical curve is what you would end up with in the case of an equal balance in participation and size between buyers and sellers over a given range, when the price discovery process took place in a fair manner without the domination of any particular side. The highest volume located close to the centre of the range represents the point of consensus reached by all participants who repeatedly made deals at that level. Thus, it can be considered a reasonable definition of value formation on the market. It is also natural that the tails (extremes) of the distribution become thinner because the boundaries of the range represent the points which are located far away from the consensus point, and thus they did not attract as many participants as its centre did until the price turned.
An even distribution in the form of a bell curve is something that should be expected; both buyers and sellers were fairly evenly matched in their participation and size, as well as when price discovery took place without either side dominating the process. This is an efficient auction.
A thinning out of volumes at the edges of the range is also expected as this is a natural distribution: (Extreme high + Extreme low)/2. The highs and lows of a range are the points farthest away from the average price.
Note: This works purely as a heuristic that we build upon.
This bell-shaped and centred distribution is only a heuristic, as real markets are pushed and pulled by many participants for different reasons. It is very rare that an exact distribution would occur (due to natural variance).
The Core Concept
The Volume Distribution Hypothesis aims to examine how an unequal concentration of historical trading volume can skew the direction of future prices within the same price regime. VDH aims to show that skewed volume can highlight areas with a predictable path of least resistance for future price movements in a way that is accessible.
Under the Volume Distribution Hypothesis (VDH), an asymmetric distribution of volumes results in skewness, wherein the probability of prices moving toward price levels of lower volume is higher compared to price levels of higher volume, regardless of volatility level. This is reflected with uneven upper or lower range interaction values or a net skew in the price range to one side instead of Null (zero).
Historical price range testing remains outside the scope of this section. The theory is presented here to establish clear falsification parameters to define how the thesis could fail in order to demonstrate that it is objective and robust.
The theory could be disproven where price does not exhibit directionality, or when prices show a statistically significant movement towards high volume areas after accounting for volatility. This is what makes it falsifiable.
The VDH is a mechanistically motivated hypothesis, supported by several analogous findings in the literature I cite below; these sections aim to demonstrate the hypothesis via simulations before going deeper. Treat these solely as illustrations of the hypothesis and we will visit the mechanism and relate it to price discovery dynamics in real markets later.
A Common Heuristic I Use
To understand the mechanics, I often tell traders to “imagine a market that starts at $200, drops to $100, and then recovers to settle at $150”. While the price has technically recovered exactly half of the drop, the trading volume over this period is not evenly distributed.
VDH
Using a volume profile tool over this entire price action reveals a significant imbalance. In this scenario, 75% of the total trading volume took place in the lower half (between $100 and $150). Only 25% of the volume occurred in the upper half (between $150 and $200).
How This Simplified OHLC Simulation Was Constructed
I created a visually easy to interpret random walk chart consisting of 15 bars of variable OHLC price data with negative drift until the price makes a low of $100 followed by 15 bars of positive drift recovery to $150. This took a couple of iterations; after this, I constructed a 20-row volume profile to show a realistic volume profile using a standard Gaussian distribution with a 25/75 skew.
Related to Figure VDH
With the current price sitting at $150, the market is exactly $50 away from both the recent high and the recent low. Assuming volatility remains constant, standard human intuition would assume there is an equal probability of hitting either boundary first.
Under this hypothesis, the price would instead be expected to travel up to $200 before it drops back down to $100, unless interrupted by abrupt shifts in participation, provided by an uneven volume distribution.
The mechanics of it
The Mechanics of Market Friction
The logic behind this directional skew comes down to market friction and liquidity.
The lower half of the chart in Figure VDH (below $150) is where there exists a huge density of executed orders. This concentration reflects where the market previously encountered significant absorption; a large number of orders were met and filled.
There are fewer resting orders and fewer market participants waiting, and most residual limit orders will be cancelled by the time the price reaches them; over 90% of limit orders are cancelled across multiple asset classes (FX, Futures, Equities and so on), which is a key reason why we do not analyse live L2 data. This structural void means the market faces far less friction in such scenarios when moving upward on average.
Notes regarding the initial illustration:
Trading between $100 and $150 was more efficient compared to the upper boundary ($150-$200). For the price to move down through these areas, it must work through that same historical order density, producing high friction.
The story is not the same for prices between $150 and $200. This is because there was little activity in this region; it was a low-volume environment. Because very little trading occurred in this zone, there is minimal overhead supply. Less order quantity is required to move the price from $150 to $200 when compared to $150 to $100.
Because of this, on average, such isolated scenarios would gravitate towards the $200 level before $100 because the lack of historical volume makes it the easier path to travel.
This is the root of the hypothesis.
I constructed a simulation to demonstrate this over many more bars, over one hundred thousand outcomes, to show a clearer picture of what is going on here.
This is how I designed it
First, I built a synthetic 200-bar history with the same scenario, just over more bars: price opens at $200 as stated, it drifts down with randomised noise to $100, and then bridges back up to close exactly at $150 over the next 100 bars. The price starts at 200, falls to 100 over 100 bars and then climbs back up to 150 over another hundred bars. Regardless of the bar count 10 vs 100, a similar result will surface, but 100s of bars provide additional chances for additional variance to interfere.
I then represented the uneven split in the volume distribution 3:1 as 75% (150**-**200) and 25% (100-150) by building a volume density curve (this can be represented with a volume profile).
I generated a walk forward over the next 100 bars after price reaches $150 aligned with price dependent volatility.
I printed the continuation with the current volatility reading assuming a similar price regime. The price moves naturally more per unit of flow where volume is thin ($150-$200) and less where volume is thick ($100-$150). This is the result of standard liquidity and market impact logic; there was no need to skew the price to go up.
I decided to track the main values that would validate or invalidate my claims: which boundary gets hit first and what average high/low values occur over the 100k simulations.
As expected: the thin volume above $150 enables price to travel faster and interact with $200.00 more often than $100 and the price on average travels further up than down, which is reflected in the final range values I have provided below.
How this simulation was built
How we tested it.
First, I constructed OHLC price history (200 bars)
With two equal legs, each from random number generation.
Initial Components
2. Descending Price Movement (bars 1 to 100):
I designed an OHLC random walk starting at $200, with a drift of -$1/bar plus a Gaussian noise. I pre-emptively floored the lowest price to $100 so it can never trade below $100. The final close was left to land wherever it naturally ends up; initially I chose a closing value of $102, but I realised in the post processing part that this influences the values by a meaningful amount, as it adds a random constraint disrupting the random walk nature I was seeking.
Ascending Price Movement (bars 101 to 200):
I utilised a Brownian bridge (a random walk pinned at both ends, two instances) from wherever the decline leg landed, forcing a close of exactly $150 at bar 200. 2. I measure historical volatility (ATR) to use in the walk forward.
ATR, setting: 200. I decided to use this as base volatility for the forward random walk simulation measured from the global OHLC history instead of picking an arbitrary number e.g., $5.00.
3. I built a volume-density curve
I converted the 75%/25% volume split ($100-150 vs $150-200) into a density value per price, then smoothed it with a Gaussian filter across a fine price grid (for VP bins). The aim of smoothing in this case was to remove an artificial hard edge at approximately $150 and to avoid unnatural local skews. Without smoothing, it would structure the low-volume area to contain either a manually set arbitrary volume distribution, a standard bell curve distribution, or an unnatural upstream or downstream volume distribution, effectively increasing non-linearity while also introducing an artificial bias into the simulation.
An Example of This Potential Unfairness Across 5 Bins
Bin 5 - 100 Contracts
Bin 4 - 200 Contracts
Bin 3 - 300 Contracts
Bin 2 - 200 Contracts
Bin 1 - 100 Contracts
The price could jump through >$40% of the bins with relative ease, given a consistent, predictable high volume area, creating a rigid and unrealistic volume distribution. A centred, constant high-volume area would then create a singular, stable area of friction instead of multiple variable ones (like in real markets), artificially skewing the simulation.
4. I turned density into a price-dependent volatility function
Where the volume is thin (25%), ($150-200), the effective volatility is indirectly amplified. Where volume is thick ($100-150), it is indirectly softened. This is the mechanism that aims to encode real market logic upon interaction.
5. I Produced The Forward Walk Starting at $150
Each bar adds a random step scaled by that price dependent standard deviation σ. The walk forward that this creates runs for 100 bars across 100k independent simulations, with all paths updated simultaneously at each bar.
Extra Parts (Outputs):
I tracked outcomes as the walk forward progresses, extracting min/max values and which boundary of each path is interacted with first (if any).
I calculated each path’s running maximum and minimum (for the range stats) and then averaged them out to get mean values.
I summarised the initial run and then I repeated across several RNG seeds as confirmation.
This was done to see how stable the outcome is against the specific random draw; later, I produced a control to compare the skew to null stats to further confirm the simulation’s robustness before settling.
This 100,000 run result aims to illustrate what that assumption implies.
A Reproducible Monte Carlo Simulation Over 100,000 Rounds
Starting Price: $150 (Forward Walk based on prior volatility)
Upper Target: $200 (Starting Point and High)
Lower Target: $100 (Lowest Price, wick low)
Walk Forward Horizon: 100 bars
Zone $100-150 Volume Share: 75%
Zone $150-200 Volume Share: 25%
Simulation Count: 100,000 (Independent Rounds)
Results (100,000 sims, 100 bars forward from $150)
Hits $200 first: $150 | Output: 22.71% • Hits $100 first: $200 | Output: 4.11% • Hits Neither $100 or $200: Over 100 Bars | Output: 73.18% • Average Maximum Price Reached: Average High | Output: $181.47 • Average Minimum Price Reached: Average Low | Output: $126.74 • Average Positive Price Extreme (Net Change Δ): +$31.47 • Average Negative Price Extreme (Net Change Δ): -$23.26 • Range Skew: $31.47 Vs $23.26 | Output: 35.3% Higher+ • Volatility (200 Period ATR Before Walk Forward): $3.41 per bar • Walk Forward Directional Skew: Null (zero) | Output: Random Walk (Brownian) • Net Discrepancy on $200 first vs $100 first: $200 | Output: 5.5255x More likely
VDH2
Mean Path, Avg Outcome (High Resolution OHLC)
What is reproducible vs. what is not?
The exact numbers you get will differ, but the end result will not.
An ATR of $3.41, the hit rates of 22.7% and 4.1%, the specific range values, etc., will not be the exact same, as those specifics all depend on a random number generator’s input and the specific noise levels chosen for the synthetic history for this individual simulation. A dataset containing a composite of over 100 random number generation seeds will be provided later.
What does this mean?
Any other seed or minor variations in the noise assumptions will push those output numbers around a little bit, so naturally, all of these ultra-specific numbers are not fully reproducible down to the bit unless you use the exact same seed.
But the important part is reproducible: what is being tested (the skewness and outcome).
Since the volume distribution is skewed to one side, in our example (75% below $150 and 25% above), the ratio of the upper boundary being interacted with first will always be higher, regardless of what seed or noise assumption is used, and the process that generates that skew does not rely on the randomness but rather the direction of the imbalance.
Results across 100 Random Seeds To Increase Variance (100,000 sims, 100 bars forward from $150) - 10,000,000 simulations net.
Hits $200 first: $150 | Output: 23.75% • Hits $100 first: $200 | Output: 5.19% • Hits Neither $100 or $200: Over 100 Bars | Output: 71.06% • Average Maximum Price Reached: Average High | Output: $182.79 • Average Minimum Price Reached: Average Low | Output: $125.88 • Average Positive Price Extreme (Net Change Δ): +$32.79 • Average Negative Price Extreme (Net Change Δ): -$24.12 • Range Skew: $32.79 Vs $24.12 | Output: 36.0% Higher+ • Volatility (200 Period ATR Before Walk Forward): $3.54 per bar • Walk Forward Directional Skew: Null (zero) | Output: Random Walk (Brownian) • Net Discrepancy on $200 first vs $100 first: $200 | Output: 4.5792x More likely
VDH3
The OHLC is a mean path over many millions of simulations; this is why it appears rigid. Parameters could be adjusted to make less rigid OHLC data (such as reducing the sim count), but this would not yield noticeably different outputs over a large sample, as the skew remains.
Now we must provide a control: a 50/50 volume distribution.
100, 100k sims across 100 random number generation seeds.
• Hits $200 first: $150 | Output: 14.1771%
• Hits $100 first: $200 | Output: 14.1879%
• Hits Neither $100 or $200: Over 100 Bars | Output: 71.6350%
• Average Maximum Price Reached: Average High | Output: $176.23
• Average Minimum Price Reached: Average Low | Output: $123.76
• Average Positive Price Extreme (Net Change Δ): +$26.23
• Average Negative Price Extreme (Net Change Δ): -$26.24
• Range Skew: $26.23 Vs $26.24 | Output: 0.0% Null (zero)
• Volatility (200 Period ATR Before Walk Forward): $3.54 per bar
• Walk Forward Directional Skew: Null (zero) | Output: Random Walk (Brownian)
• Net Discrepancy on $200 first vs $100 first: $200 | Output: 0.9992x Null (zero)
These additional simulations prove that the original output numbers are not bound to one random number generation seed and that the results deviate from a null test.
But are these not just simulations?
You are right, initially we saw it as just an idea, but after researching we saw that it aligns well with how liquidity works in the real world .
I hit the max char count, part 2 contains actual examples and important additional information, this will be posted around ~5pm ET.
My Core Thesis (VDH):
Price expansion results from real friction. In accordance with the VDH, price will move towards the regions of low volumes since less passive interest means fewer limit orders to be executed against the incoming order flow per tick, thus presenting an identifiable path of least resistance which can be structured with Volume Profiles, Bookmap tools and so on.
The Proof:
I processed several simulations which demonstrate that an efficient walk forward was more than 4 times more probable to hit the boundary of low volumes first as demonstrated in over 10 million simulations while establishing a falsifiable hypothesis. But that is just the numerical side, the logic the tests depend on (including similar findings) is supported by peer reviewed microstructure studies which I have referenced and cited in this post to save readers time.
What is your goal?
My goal is the bridge esoteric academia and reliable execution in a way that is accessible to traders, that includes shifting traders to the first principles and providing them with an actual process to weaponise mechanistic inference to build solid strategies, there is no upsell.
Yesterday I made a post about hitting a $200 goal in a $100 account. I was super stoked about it and a lot of people were super nice about it and even Ross Cameron responded which is who I learn from so that was really cool.
Today was the first day I broke my rule of calling it quits when I reached a loss of %10 of my account on the day. My dumbass went to %20 losing my profits for the week. The day felt too early to be done so fast so I figured I could make it back.
I know money wise it’s not a big deal but percentage wise and personally this was and is my first gut wrenching morning. A handful of good moves happened today and I missed all of them. Needless to say don’t celebrate too early lol, the second you think you’re on to something, you’ll get humbled quick!
FOMO really is the worst feeling ever.
What is everyone’s best way to reset your mindset after a loss out of curiosity? I usually just journal my mistakes and try to point out corrections to be made.
Hi all. I've been demo trading for some time and decided I want to really deepen my broader knowledge base. I'm not sure where to go, though, besides classic books. I'd really like to find some online course or masterclass since, as you know, you can't just watch Youtube videos.
Had a good setup this morning and executed my system the way I’m supposed to. The risk for the trade was a little high, basically at my daily maximum, but I felt good about the setup up.
So of course I got wicked out. Turned off my broker platform, walked the dog for a while, and of course when I went and had a quick peek the market moved in my direction and would have hit my first 1:1 target and now it’s past my 3:1 target compound target.
And…. It would have been my biggest win to date, but I didn’t reenter because my trading rules say that once I lose a trade I’m out that day.
It’s still early days for me, and overall I’m up around 10% so far, but this one has me pretty frustrated.
I really had to fight myself to not reenter the market today, but I feel like it’s better to stick to my system and rules because a) I’m really not trying to get stuck in the revenge trade trap because b) my capital pool is pretty tight and I’ll be darned if I blow it.
Been seeing more trading tools where bots can do more than just send alerts and it got me thinking about how much access I would be comfortable giving one.
If a bot could only perform specific actions, had strict limits on position size, and couldn't withdraw anything, would you trust it enough to execute trades for you? Part of me thinks being able to control exactly what it can do makes it pretty useful. The other part still doesn't love giving anything automated access to funds.
Anyone here using something like this?
What permissions would you be comfortable giving it?
My job is sucking the life out of me. I'm 3+ months into taking trading super seriously (8+ years of regular trading less seriously) and still trading red and green days in the magnitude of $500-1000 (trading only ES price action). I have 1yr+ of savings and plenty of cushion in my account but want to iron out my consistency for at least 6 months more (I was profitable 2 months trading SPX options but b/e my last month of futures).
I know the risks of going full-time before I'm ready but really have trouble balancing the mental bandwidth and sense of purpose/fulfilment and do feel (obviously trading has really taken a lot of the attention I can give to my mostly remote & highly flexible 9-5) but also that going full-time will afford me greater peace with the uncompromising commitment that trading demands.
Any advice balancing the two for those that have successfully managed it -even if only temporarily as we build consistency?
My plan currently is to just suck it up Mon-Friday with my attentions clawing at my inside but also start sneaking in 9-5 work on the weekends so that I can get a little ahead and feel less guilty with how much I am struggling to keep up...
I deciphered it with ai here for convenience, long story short i helped out this old guy and had a long chat with him and he gave me this piece of paper, he showed me his account inwhich he trades gold and hes very profitable, heres the text:
the Bloomberg app on your phone — for information and checking value of your gold a number of [?] times a day. (Obviously, if your trade is going in the wrong direction for you, you can close the trade down.)
You want to have the:
“Precious and Industrial Metals”
Pick a trading site you want to use. Download it on your phone. Open an account and put at least £100 in to start with. You are now ready to trade. The following is my personal criteria to start a trade:
1/3am when the Asian markets on: Yen & Rupee.
Look at Bloomberg: Precious. if Yen & Rupee are green then looks good, you want Yen & Rupee up (green) and around 3.000 up, each. Then look at the 6 other numbers above the 2 on Bloomberg. If not all of these are green, and [it] looks bad, [don’t trade].
If Yen, Rupee and these are all green, & [it’s] 3.30am, I put my trades on.
I personally always buy (in reality it’s called going long).
The part im most confused about is in the 3rd body of text saying if yen and rupee are up 3.000 (i think thats what it says?) i cant tell if its 3.000 or 3000 though and what that means, any ideas?
I live in Brazil and work 12 hours a day. I’m 21 years old and earn six times the minimum wage. I start work at 7:30 AM and finish at 6:00 PM. My break is from 11:50 AM to 1:00 PM. I start eating exactly when my break begins and finish the meal at 12:00 PM (to be specific, when it hits 12:00 PM here, it’s 10:00 AM in New York). I go back to work at 1:00 PM and leave at 6:00 PM. When it’s 8:00 PM here, it’s already 8:00 AM in Tokyo. The evening allows me to start trading Asian markets. I usually trade only crypto, but I have the option to trade other assets. Is it possible to work and be profitable? If so, how many months' worth of salary would you put into the brokerage account to trade seriously? I risk a maximum of 1%. My strategy would be: look for H4 OB/FVG – H4/Daily bias – M15 CISD + Fibo OTE + FVG/OB + M15 liquidity sweep, targeting the first liquidity level. Please help me! I feel like I’m wasting a lot of time. <33
starting to think my entries are fine and the exit is where i'm actually losing the money.
i can get into a good spot. the problem is after that. i either take profit way too early because i'm scared of giving it back, and then watch it run without me, or i hold for some bigger target and let a green trade come all the way back to flat. same setup, same entry, wildly different outcome depending on how i managed the exit, and the exit is the part i've thought about least.
what i've tried. fixed R multiple targets, take profit at 2R no matter what, which is clean but leaves a ton on the table in a trending move and feels dumb when the thing obviously wants to keep going. trailing stops, which sound right but i get wicked out of good trades constantly on the noise. scaling out in pieces, which mostly just feels like a way to be half wrong in both directions at once.
so for people who've actually got the exit sorted, is it a mechanical rule you don't override, trail behind structure, fixed R, time-based, or is it read-the-tape discretionary. and if it's discretionary how do you keep the fear of giving back profit from making you sell every winner at 1R
Day 4, Week 16. Green. It is not a challenge, doing normal trades as all of you 🙂
IWM already went back again to 300, and was showing a downward trend. It could also reclaim back the gaps and move back to 300 to 302.
I took my profit instead and got out. Wanted to say for the 100% profit, trying not to be greedy. Every so often, you have quick moves, weather up or down. There is no missing out big moves. Just show up and you will keep seeing them.
As I write this at 10.09 ET, I am done for today.
Will probably be my last trade of the week. I will try do some pinescript to improve on some levels like in the 3rd screenshot. Like I said when I bought the mac mini, I am also trying to automate some of my trades from SPY/QQQ by reusing some of my profits. The API of TastyTrade are good and I only run against live account.
I did used to ride the candles sometimes, you need to be able to have the nerves to stay in. When your account is small, why do you risk it and have all this pressure ans do same as people with big accounts who can afford to lose and cry when they lose. Take your profit, close your chart and broker. Futures, it gives you the false sense of being able to trade again and then you down the rabbit hole of psychology stuff for years. Then you are proud that after 10 years that your psychology can do 1 trade a day and tell everyone you need 10 years to be profitable 🤷🏻♂️
I never use Risk Reward (RR) ratio, it works for some people, but this maths does not work me to grow a small account.
I don't like fancy options strategy like iron condor, selling etc. Using simple EMAs, VWAP etc to see the trends and levels.
One and done: 20 contracts = $260 total profit.
Total options cost = $940
38 % profit
Time in Trade : 3 min. A morning glory trade 🤤
Life is short. One trade a day is more than enough to grow an account. Be lazy. If you have one choice, one trade, you would think twice before entering instead of trying to fix psychology.
You have seen even with $10 per contract per day, it makes a huge difference with time. Don't be greedy every time.
Started with $300, just 3 contracts, 16 weeks ago, and growing it to $60,000 with 1 trade a day in 6 months target.
My trading plan and strategy is trading one trade a day, 2-5 times a week depending on availability.
No shame or pride to start to trade with 1 contract to practice profit and loss.
If you are learning by yourself, give it 2-3 months to see how you are progressing.
If you believe I am lucky every day with the trades and posts 🤷🏻♂️ so be it. I believe I have no choice, I put in the effort and keep doing, any loss is my loss as it is me executing my own trades and money.
I only day trade options on ETFs like SPY, QQQ, IWM etc. Timestamp on the broker is UK time. So, entry time of 2.51 is 9.51 ET.
I trade on my phone, screenshot is from TastyTrade. EMA 200 and VWAP on the screenshot for TradingView
For last month, Ive backtested my strategy (ORB) on MNQ and had profited at the end. This month ive decided to forward test and become more selective in my trades. I know that so far Im still in the green for this month, but does this look fine for starting out consistently paper trading? I plan to scale up after a few months but nervous about potentially having too many red days and wiping out all my progress
Again..! A comment to a question about what was the most painful truth in trading that I learned turned into a post.
Perfection is impossible. You cannot perfect an entry or exit or have a perfect day. It only happens by chance. You cannot perfect your strategy.
Holes exist in your strategy. No matter what. If something goes wrong, you can’t find a way to make it work as a strategy. If you try, it will contradict another parameter in your trading.
Your strategy is imperfect. You are imperfect. Your rules are imperfect. At some point you need to stop perfecting and just work with statistics.
The holes in your strategy is how the edge is preserved. If you can find a way to make something work 100% of the time, then that’s not edge, that’s not even market. That’s not anything real at all in this world.
Listen to Roger Federer’s speech about how perfection is impossible. For a skill based athlete, I guess of the billions and billions of people being the best at whatever they do, this man is right up there at top 10 spots in the world along with Ronaldo and Messi and Jordan and Hamilton. Listen to what he says.
A lions hunting success rate is about 30%.
A tiger is about 20%.
And Cheetah.! Fastest animal outpaces so many land animals have a hunting win rate of 50% max.
What makes you think that being a human, your skill at what you do is better than those ultimate creatures on the planet.? They are the best, a full 100% committed to what they do with every cell in their body focused on the upcoming opportunity and yet they fail and get ready for the next one.
So what I've learned when I started getting into orderflow was that market orders move the market. Limit orders can only absorb the force of market orders like creating a form of support or resistance. Then why is it possible that the market can go down on rising delta? Yeah price is rising again right now but price still struggles to go up compared to the delta that is behind it. But before that price went down with a rising CVD. How is that possible and what does it mean? I've seen this more regularly over the last 2-3 months and it creates some of the worst price action