Skip to main content

Featured

Single Buy vs. Genuine Cluster

Insider buying alerts get treated as a single, uniform signal, but a single purchase and a genuine cluster of independent purchases carry very different informational weight — and the distinction is checkable in public filings well before it becomes a headline. The Surface Issue Stock-screening tools flag "insider buying" whenever any officer or director makes an open-market purchase, with no distinction between a routine, isolated transaction and a genuinely unusual pattern. That flattening is what makes the raw alert an unreliable signal on its own. The Structural Cause Insiders buy shares for reasons that often have nothing to do with a near-term view on the stock — personal financial planning, routine plan participation, diversification timing. A single purchase can't be distinguished from these ordinary reasons. Multiple, independent insiders buying within a short window is much harder to explain away as coincidence or routine planning. 144TICKJOURNAL · TR...

Why I Stopped Trying to Automate the Final Decision — And What That Taught Me About Human Judgment in Trading

There was a point, about eight months into building this system, when everything seemed to be in place for full automation. The signal detection logic was stable. The Firebase pipeline was reliable. The grade system was filtering out most of the noise. I had a clear set of rules for entry, a defined stop-loss location, a target price, and position sizing logic. On paper, there was nothing left for a human to do. Every variable was defined. Every condition was codeable.




I spent about three weeks attempting to automate the final step — the actual order placement. What happened during those three weeks, and what I learned from abandoning the attempt, is what this post is about.




The Three Weeks of Full Automation




The first week looked good. The automated system placed orders on confirmed signals, hit stop-losses when required, and exited at targets when they were reached. The execution was clean. The rules were being followed precisely. I felt like the project had reached its intended endpoint.




The second week introduced the first problem. On Tuesday of that week, the KOSPI opened with a significant gap down following an overnight development in global markets. Individual stock prices opened well below their prior closes. Several stocks that had been in the tracking list with strong setups from the previous session were now in technically different positions — the reference highs, valley lows, and stop-loss levels calculated from prior session data were no longer meaningful in the context of the new price environment.




The automated system didn't know any of this. It continued evaluating conditions against the prior-session data structures. When one stock recovered from the gap-down opening and technically "broke out" above its old reference high, the system placed a buy order. From any reasonable reading of what was happening in the market that morning, this was not a breakout — it was a partial recovery from an overnight collapse. But the system's rules didn't include a condition for "overnight gap of unusual size" or "prior-session data no longer meaningful." The rules were technically satisfied. The order went in. The trade lost money.




The third week produced a different but related problem. A company in the pharmaceutical sector released clinical trial results after the previous session's close. The results were ambiguous — good enough that some participants treated them as positive, bad enough that others treated them as negative. When the market opened, the stock whipsawed violently: up 8% in the first ten minutes, then down 12%, then recovering to roughly flat. The wave-pullback-breakout pattern fired three times in forty minutes on this single stock as the price oscillated. The automated system placed orders on each signal. The first two lost money on the whipsaw reversals. The third happened to be profitable.




A human watching this chart in real time would have immediately recognized the pattern as news-driven noise and stayed out entirely. The information needed to make that judgment — knowledge that a clinical trial result had been released and that the market was processing genuinely ambiguous information — was completely outside the signal system's awareness. The system only knew what the price and volume data told it.




What I Learned From Abandoning Full Automation




After the third week, I reverted to the hybrid structure: automated detection, manual execution. The decision wasn't difficult — the evidence was clear enough — but the reasons behind it took longer to fully articulate.




The most important reason is that the signal detection system operates on a closed data set. It sees price, volume, trade intensity, and tick acceleration. That's all. The real world of financial markets includes information that doesn't appear in those data streams: overnight news, analyst upgrades, regulatory filings, earnings guidance, geopolitical developments, and the general mood of the market on a given day. A human reviewing a signal before acting has access to all of that context. An automated system executing on the signal does not.




Most of the time, this doesn't matter. The wave-pullback-breakout pattern works when it works because of supply and demand dynamics that are visible in the price and volume data, and those dynamics operate regardless of the broader context. But in specific situations — gap days, major news events, earnings reactions, broad market dislocations — the context swamps the signal. In those situations, the human judgment that "this is not a normal market condition right now" is worth more than anything the algorithm can compute.




The second reason is less obvious but equally important: the act of reviewing a signal before placing an order is itself a quality filter. It takes about thirty seconds to look at a confirmed signal, check the participant breakdown, glance at the chart structure, and assess whether anything looks unusual. In those thirty seconds, I frequently notice things the algorithm can't: the stock has already run 15% today before the signal fired; the setup looks clean but two other stocks in the same sector are showing opposite patterns; the signal is coming during a period of unusual market-wide volatility that suggests reduced reliability. None of these observations are automated. All of them have affected whether I acted on a signal.




The Specific Cases Where Manual Review Changed the Decision




Over the months since reverting to hybrid operation, I've kept an informal log of cases where manual review caused me to pass on a signal that the automated system would have executed. Looking back at the outcomes on those passed signals, roughly 70% would have lost money. This isn't a rigorous sample — the log is informal and my decision to pass was itself influenced by seeing the same information I'm now using to evaluate the outcome — but it's directional evidence that the manual review filter is adding value, not just adding friction.




The most common reason I passed on a signal was what I now call a context mismatch: the pattern was technically valid, but something about the broader situation made it implausible that the pattern would produce its normal result. A confirmed breakout signal on a stock during a session when the KOSPI was down 2% and the sector was down 3% is technically valid but contextually suspect — the stock is trying to break out against a headwind that's strong enough to make continuation unlikely even if the immediate buying interest is real.




The second most common reason was participant composition: the signal was grade A by price and volume metrics, but the participant breakdown showed almost exclusively retail buying with no institutional or foreign participation. As I described in the post on trading value versus market cap, retail-dominated signals near the end of a move have a higher reversal rate than those accompanied by institutional interest. The grade system doesn't incorporate participant data directly, so this check has to happen manually.




What Full Automation Would Have Required




To automate these judgments properly, the system would need to incorporate data sources it currently doesn't have: a real-time feed of broad market conditions, sector performance data, an indicator of overall market volatility, and ideally participant breakdown data at the signal moment. Some of these are technically available but add complexity and cost. Others — like the judgment that "clinical trial results are creating ambiguous market conditions for this stock" — require natural language processing of news content, which is a substantially different engineering problem from what I've built.




I'm not opposed to adding these capabilities eventually. But the honest assessment is that building a system that handles context as well as a human paying attention for thirty seconds is a much harder problem than building a system that detects price patterns. The pattern detection is largely solved. The context problem is not.




For now, the hybrid approach — where the machine handles the detection and the human handles the final judgment — produces better outcomes than either alone, and the gap is wide enough that I'm not in a hurry to close it.




The Broader Lesson About Automation and Human Judgment




This experience shaped a view about automation that extends beyond trading: automation works best when the problem is well-defined, when the relevant variables are observable, and when the environment is stable enough that the rules calibrated in the past remain valid in the present. When any of those conditions is absent — when the problem has fuzzy edges, when important variables are unobservable, when the environment shifts unpredictably — human judgment adds value that rules cannot replicate.




Financial markets fail all three conditions regularly. The problems are fuzzy: the same price pattern means different things in different contexts. Important variables are unobservable: the information moving prices is often not visible in the price data itself. And the environment shifts: what worked consistently for three months stops working when market conditions change.




None of this means automation is useless in trading. It means automation should be used for the specific things it does better than humans — speed, consistency, breadth of coverage, freedom from fatigue — and human judgment should be retained for the specific things humans do better than algorithms — context interpretation, anomaly recognition, and the judgment that "this is not a normal situation."




Knowing where that line falls, and building a system that respects it, is harder than either full automation or full discretion. But it's the design that actually makes sense given what each approach is genuinely good at.




Today's Investing Insight — When Quantitative Models Fail




The most dramatic example of quantitative model failure in recent history was the 2007-2008 financial crisis, during which many sophisticated quantitative strategies performed catastrophically. The common thread across most of the failures wasn't that the models were technically wrong — they were correct for the conditions they had been calibrated on. The failure was that those conditions changed in ways the models couldn't accommodate. Correlations between assets that had been stable for years broke down simultaneously. Liquidity assumptions embedded in the models proved invalid when the market needed liquidity most. The models had no mechanism for recognizing that they were operating outside the conditions they were designed for. The lesson that emerged from that period — that quantitative models need explicit mechanisms for detecting when their assumptions no longer hold, not just rules for what to do when assumptions are intact — is directly relevant to any algorithmic trading system, regardless of scale. The hybrid approach described in this post is one practical implementation of that principle: keep a human in the loop specifically for the cases where the model's assumptions might not be intact.




---




This post documents a personal journey of building an algorithmic trading system and reflects personal experience and perspective. It is not a recommendation of any specific strategy or approach to automation. All investment decisions and their outcomes are the sole responsibility of the investor.

Comments