When people write about artificial intelligence in financial markets, they usually write about performance metrics, execution speed, automation pipelines and profit targets. Those things matter. But anyone who has spent serious time building trading systems — not demoing them, not selling them, but actually living with them through drawdowns and edge decay and unexplained failures — eventually arrives at a different set of questions. Questions about uncertainty. About what it means to be responsible for a decision you delegated to a machine. About the difference between confidence and understanding.
I have been building Expert Advisors, neural network bridges and prediction models long enough to know that the technical problems are rarely the hardest ones. The hardest problems are quieter. They live in the assumptions you made before you wrote the first line of code, and they wait patiently until the market finds them.
1. What you are really doing when you write the code
When I open a compiler and begin constructing a C++ bridge between a neural network and a MetaTrader terminal, I am aware that I am doing something more than engineering. I am making a series of claims about reality. Every input feature I include is a claim that this variable contains information about future price. Every weight that emerges from training is a claim that a particular relationship is stable enough to be worth acting on. Every buffer, every exported function, every threshold I choose — each one carries an assumption I may not have examined carefully enough.
This matters because a trading robot is not neutral. It does not observe the market the way a scientist observes a specimen. It applies a fixed interpretation of the market, repeatedly and without fatigue, until it is stopped or until it fails. That is an extraordinary thing to ask a piece of software to do. And it means that if the interpretation is wrong — even subtly, even partially — the system will be wrong in the same way, at the same moments, with perfect mechanical consistency.
The first obligation of a developer is therefore not to make the system fast, or aggressive, or sophisticated-looking. The first obligation is honesty. A good trading system should be designed not to confirm what you hope is true, but to reveal what is actually true. It should be able to show you that your signal is weaker than you thought, that your assumptions do not survive realistic transaction costs, that your edge disappears in a different volatility regime. A system that cannot show you these things is not a trading tool. It is a way of feeling confident without being right.
There is one thing a machine genuinely cannot do: feel afraid of the answer. It will run the backtest and return the result whether the result is good or devastating. That is its most underappreciated virtue. The developer who builds a system that can honestly contradict him has done something difficult and important. The developer who builds a system that only confirms what he already believed has wasted both the technology and his time.
2. The architecture of not knowing
Financial markets are not puzzles with hidden solutions. They are complex adaptive systems driven by the simultaneous decisions of millions of participants operating under different information, different time horizons, different incentive structures and different models of the world. No algorithm captures this completely. No algorithm ever will. Every trading system is a simplification, and simplifications have edges where they stop working.
I think it is important to say this plainly, because the language around AI trading often suggests the opposite. Models are described as if they learn the market, as if sufficient data and sufficient computing power will eventually yield something close to a complete description. I do not believe that, and I think the belief is dangerous. A model trained on historical data learns the statistical properties of a particular period under particular conditions. It does not learn the market. It learns one incomplete photograph of the market taken at a specific moment in time.
Historical data is genuinely useful. But it tells you how price behaved, not why, and not whether the same behaviour will persist. A model can identify patterns that were real and meaningful during training and still fail in live conditions, not because the model is poorly constructed, but because the conditions changed in ways the training data did not represent. This is not a flaw that better engineering can eliminate. It is a structural feature of the problem.
The practical consequence is that data preparation is not a preliminary step before the real work begins. It is the real work. Cleaning inputs, selecting features carefully, testing across multiple timeframes, separating training data from validation data and then from out-of-sample test data, examining how the model behaves in regimes it was not trained on — these are not administrative tasks. They are the primary defences against the most common failure mode in quantitative trading, which is not technical error but self-deception.
Feature engineering, done well, is not about finding inputs that make the model look good on historical data. It is about asking sharper questions. Does this signal retain meaning after realistic transaction costs? Does it behave differently during trend conditions versus ranging conditions? Is what I am seeing a genuine edge or a statistical artifact of the specific period I happened to test on? The quality of these questions determines the quality of the system far more than the sophistication of the model architecture.
3. The problem of not being able to see inside
There is a version of this work where every decision is transparent. A moving average crossover fires a signal, and you can trace exactly why. A support level breaks, and the logic of the entry is fully visible. These systems have real limitations, but they have one important virtue: you know what they are doing and why.
Neural networks complicate this. A deep model may produce outputs that are genuinely useful, but the internal path from input to output passes through layers of transformations that resist simple explanation. You can observe what the model responds to empirically, through careful testing, but you cannot open it and read a description of its reasoning the way you can read a rulebook.
I do not think this means neural networks should be avoided in trading. I think it means they should be used with a specific kind of discipline that compensates for the opacity. If the prediction engine cannot explain itself fully, then everything surrounding it must be completely transparent. Position sizing must be explicit and conservative. Stop loss logic must be defined before deployment, not adjusted in response to discomfort. Maximum exposure limits, drawdown thresholds that trigger review or suspension, conditions under which the system is shut down — all of this must be clear, documented and enforced.
The more complex the model at the centre, the more important it becomes to keep the risk management layer simple. A sophisticated model surrounded by vague or permissive risk controls is not a powerful system. It is an unmonitored one. And unmonitored systems in financial markets tend to fail in ways that are expensive and instructive in equal measure.
The appropriate attitude toward a black-box model is not trust based on its apparent sophistication. It is the same attitude a careful engineer has toward any system operating in uncertain conditions: monitor it, stress-test it, define the conditions under which it should be shut down, and do not assume that past performance in testing is a sufficient guarantee of future behaviour in deployment.
4. What the machine cannot carry
I want to be careful here, because this is a point that gets stated badly in both directions. On one side, people claim that AI will replace human traders entirely, that sufficient automation makes human judgement obsolete. On the other side, people dismiss algorithmic trading as inherently inferior to discretionary decision-making. Neither position reflects what I have actually observed.
A well-built machine can process more data than a human, evaluate more conditions simultaneously, execute without hesitation and apply rules consistently across thousands of trades. These are real advantages, and they are worth having. But a machine carries no understanding of purpose. It does not know why you are trading this market, what the capital means, what your actual risk tolerance is, whether the current macro environment resembles the one in which the system was trained, or whether the edge that appeared in backtesting is still present in current market structure.
These are not small gaps. They are the questions that determine whether the entire enterprise makes sense. And they require judgement — not computation, but genuine human judgement informed by experience and context.
The most honest framing I have found is this: the machine handles execution quality and consistency. The human handles context and responsibility. When those roles are clearly separated and respected, the combination works well. When they collapse into each other — when the human begins expecting the machine to carry responsibility it was never designed for, or when the machine is allowed to operate without meaningful human oversight — things go wrong in ways that are predictable in retrospect and avoidable in advance.
A well-designed Expert Advisor should make the human’s job clearer, not easier in the sense of requiring less thought. It should reduce impulsive entries, inconsistent exits and emotional overrides. It should create a disciplined layer between market movement and human reaction. But it should never be treated as a substitute for the human’s obligation to understand what the system is doing and why.
5. What prediction actually means
The word prediction carries more weight than it should in discussions about trading AI. People hear it and imagine certainty — a model that knows what is going to happen. That is not what prediction means in any serious technical or scientific context, and it is especially not what it means in financial markets.
A responsible prediction is a structured estimate of probability under conditions of genuine uncertainty. It says: given what I can observe, and given the patterns that have been historically associated with these observations, this outcome appears more likely than its alternatives, and I can quantify approximately how much more likely, and I can define what would have to happen for me to conclude that my estimate was wrong.
That is a very different thing from certainty. And it has very different implications for how you build and use a system. A trader who demands certainty from a model will, sooner or later, begin interpreting ambiguous outputs as confirmations, ignoring signals that contradict what he wants to be true, and attributing losses to bad luck rather than examining whether the edge was ever as strong as he believed. A trader who genuinely understands probability will expect losing trades, will evaluate the system across long sequences of outcomes rather than individual trades, and will be suspicious of any period of unusually good results rather than reassured by it.
Humility here is not a philosophical virtue. It is an engineering requirement. A developer who genuinely accepts uncertainty will build differently. He will test more carefully, claim less, design risk controls before thinking about profit targets, and treat a system that survives rigorous testing with appropriate scepticism rather than confidence. The systems that have caused the most damage in quantitative finance were almost always built and operated by people who believed, at some level, that they had solved a problem that cannot be solved — that they had found certainty where only probability exists.
6. Working with the market rather than against it
There is a tendency in algorithmic trading to think of the system as something imposed on the market — a set of rules that extracts value regardless of conditions. I have come to think this is the wrong way to frame it. Markets are not passive. They change regimes. They shift between trending and ranging behaviour. Volatility expands and contracts. Correlations that held for years break down. Liquidity structures evolve. An algorithm built on the assumption that conditions are stable will eventually encounter conditions that are not.
A more useful frame is alignment. The system’s job is not to impose a fixed behaviour on every market condition it encounters. Its job is to observe the current conditions, assess whether those conditions fall within the range where its logic has demonstrated validity, and act accordingly — including, when appropriate, doing nothing at all.
Inactivity is one of the hardest states for human traders to accept. There is a strong psychological pull toward doing something, toward being in the market, toward feeling that capital sitting idle is capital being wasted. A well-designed system can help here, but only if it is explicitly programmed to treat inactivity as a legitimate output rather than a failure state. Some of the best trades a system can make are the ones it declines to make.
Attention mechanisms, multi-timeframe analysis, volatility regime detection and pattern recognition are all potentially useful tools. But their value depends entirely on whether they are helping the system ask better questions about current conditions, or whether they are adding complexity that creates an illusion of sophistication without improving actual decisions. Complexity that cannot be justified by improved performance in realistic testing is not sophistication. It is noise with extra steps.
This is why I continue building. Not because I believe the problem is close to being solved, or because I think the next architecture will finally produce reliable certainty. I continue because the process of building these systems rigorously — defining assumptions precisely, testing them honestly, accepting results without adjustment — is one of the most effective disciplines I have found for thinking clearly about markets. The code becomes, at its best, a record of what you actually believe rather than what you wish were true. And that, in my experience, is genuinely rare and genuinely useful.
Když se píše o umělé inteligenci ve finančních trzích, obvykle se píše o výkonnostních metrikách, rychlosti exekuce, automatizaci a ziskových cílech. To jsou důležitá témata. Ale každý, kdo strávil skutečný čas budováním obchodních systémů — ne jejich předváděním, ne jejich prodejem, ale životem s nimi skrze drawdowny, rozpad výhody a nevysvětlitelná selhání — nakonec dospěje k jiné sadě otázek. Otázky o nejistotě. O tom, co znamená být odpovědný za rozhodnutí, které jste delegovali na stroj. O rozdílu mezi sebejistotou a porozuměním.
Stavím Expert Advisory, neuronové mosty a predikční modely dost dlouho na to, abych věděl, že technické problémy bývají zřídka ty nejtěžší. Nejtěžší problémy jsou tišší. Žijí v předpokladech, které jste učinili dříve, než jste napsali první řádek kódu, a trpělivě čekají, až je trh najde.
1. Co vlastně děláte, když píšete kód
Když otevřu kompilátor a začnu stavět C++ most mezi neuronovou sítí a terminálem MetaTrader, jsem si vědom, že dělám něco víc než inženýrství. Dělám sérii tvrzení o realitě. Každý vstupní příznak, který zahrnu, je tvrzení, že tato proměnná obsahuje informaci o budoucí ceně. Každá váha, která vznikne z tréninku, je tvrzení, že určitý vztah je dostatečně stabilní, aby stálo za to podle něj jednat. Každý buffer, každá exportovaná funkce, každý práh, který zvolím — každý z nich nese předpoklad, který jsem možná nezkoumal dostatečně pečlivě.
Na tom záleží, protože obchodní robot není neutrální. Nepozoruje trh tak, jak vědec pozoruje vzorek. Aplikuje pevně daný výklad trhu, opakovaně a bez únavy, dokud není zastaven nebo dokud neselhá. To je mimořádná věc, kterou od kusu softwaru požadujeme. A znamená to, že pokud je výklad špatný — i jemně, i částečně — systém bude špatný stejným způsobem, ve stejných momentech, s dokonalou mechanickou konzistencí.
První povinností vývojáře proto není udělat systém rychlý, agresivní nebo sofistikovaně vypadající. První povinností je poctivost. Dobrý obchodní systém by měl být navržen nikoli k potvrzení toho, co doufáme, že je pravda, ale k odhalení toho, co skutečně pravda je. Měl by být schopen ukázat, že váš signál je slabší, než jste si mysleli, že vaše předpoklady nepřežijí realistické transakční náklady, že vaše výhoda mizí v jiném volatilitním režimu. Systém, který toto nedokáže, není obchodní nástroj. Je to způsob, jak se cítit sebejistě bez toho, abyste měli pravdu.
Je jedna věc, kterou stroj skutečně nedokáže: bát se odpovědi. Spustí backtest a vrátí výsledek, ať je dobrý nebo devastující. To je jeho nejvíce podceňovaná přednost. Vývojář, který postaví systém schopný ho poctivě vyvrátit, udělal něco obtížného a důležitého. Vývojář, který postaví systém, jenž pouze potvrzuje to, čemu už věřil, promarnil jak technologii, tak svůj čas.
2. Architektura nevědění
Finanční trhy nejsou hádanky se skrytými řešeními. Jsou to komplexní adaptivní systémy řízené současnými rozhodnutími milionů účastníků, kteří operují s různými informacemi, různými časovými horizonty, různými incentivními strukturami a různými modely světa. Žádný algoritmus toto nezachytí úplně. Žádný nikdy nezachytí. Každý obchodní systém je zjednodušením a zjednodušení mají okraje, kde přestávají fungovat.
Myslím, že je důležité to říci přímo, protože jazyk kolem AI tradingu často naznačuje opak. Modely jsou popisovány, jako by se učily trh, jako by dostatečná data a dostatečný výpočetní výkon nakonec přinesly něco blízkého úplnému popisu. Tomu nevěřím a myslím, že tato víra je nebezpečná. Model trénovaný na historických datech se učí statistické vlastnosti konkrétního období za konkrétních podmínek. Neučí se trh. Učí se jednu nekompletní fotografii trhu pořízenou v konkrétním momentě v čase.
Historická data jsou skutečně užitečná. Ale říkají vám, jak se cena chovala, ne proč, a ne zda stejné chování přetrvá. Model může identifikovat vzory, které byly skutečné a smysluplné během tréninku, a přesto selhat za živých podmínek — ne proto, že je špatně konstruovaný, ale proto, že se podmínky změnily způsoby, které tréninková data nepředstavovala. To není chyba, kterou by lepší inženýrství mohlo odstranit. Je to strukturální vlastnost problému.
Praktickým důsledkem je, že příprava dat není předběžný krok před začátkem skutečné práce. Je to skutečná práce. Čištění vstupů, pečlivý výběr příznaků, testování napříč více časovými rámci, oddělení trénovacích dat od validačních a pak od out-of-sample testovacích dat, zkoumání chování modelu v režimech, na které nebyl trénován — to nejsou administrativní úkoly. Jsou to primární obrany proti nejběžnějšímu selhání v kvantitativním obchodování, kterým není technická chyba, ale sebeklam.
Feature engineering, prováděný dobře, není o hledání vstupů, které model vypadají dobře na historických datech. Je o kladení ostřejších otázek. Zachovává tento signál smysl po realistických transakčních nákladech? Chová se jinak za trendových podmínek oproti ranging podmínkám? Je to, co vidím, skutečná výhoda, nebo statistický artefakt konkrétního testovacího období? Kvalita těchto otázek určuje kvalitu systému mnohem více než sofistikovanost architektury modelu.
3. Problém neschopnosti vidět dovnitř
Existuje verze této práce, kde je každé rozhodnutí transparentní. Přechod klouzavých průměrů vyvolá signál a můžete přesně sledovat proč. Podpora se prolomí a logika vstupu je plně viditelná. Tyto systémy mají reálná omezení, ale mají jednu důležitou přednost: víte, co dělají a proč.
Neuronové sítě to komplikují. Hluboký model může produkovat výstupy, které jsou skutečně užitečné, ale vnitřní cesta od vstupu k výstupu prochází vrstvami transformací, které odolávají jednoduchému vysvětlení. Empiricky, prostřednictvím pečlivého testování, můžete pozorovat, na co model reaguje, ale nemůžete ho otevřít a přečíst popis jeho uvažování tak, jako byste přečetli pravidlník.
Nemyslím si, že to znamená, že by se neuronové sítě měly v obchodování vyhýbat. Myslím si, že to znamená, že by měly být používány s určitým druhem disciplíny, která kompenzuje neprůhlednost. Pokud predikční engine nemůže plně vysvětlit sám sebe, pak vše, co ho obklopuje, musí být zcela transparentní. Velikost pozice musí být explicitní a konzervativní. Logika stop lossu musí být definována před nasazením, ne upravována v reakci na diskomfort. Limity maximální expozice, drawdown prahy spouštějící přezkum nebo pozastavení, podmínky, za nichž je systém vypnut — to vše musí být jasné, zdokumentované a vynucované.
Čím složitější je model ve středu, tím důležitější je udržet vrstvu řízení rizika jednoduchou. Sofistikovaný model obklopený vágními nebo permisivními rizikovými kontrolami není mocný systém. Je to nemonitorovaný systém. A nemonitorované systémy na finančních trzích mají tendenci selhat způsoby, které jsou stejnou měrou drahé i poučné.
Přiměřený postoj k modelu černé skříňky není důvěra založená na jeho zdánlivé sofistikovanosti. Je to stejný postoj, který má pečlivý inženýr k jakémukoli systému operujícímu za nejistých podmínek: monitorujte ho, stresově ho testujte, definujte podmínky, za nichž by měl být vypnut, a nepředpokládejte, že minulá výkonnost při testování je dostatečnou zárukou budoucího chování při nasazení.
4. Co stroj nemůže nést
Chci být zde opatrný, protože tento bod je špatně vyjadřován oběma směry. Na jedné straně lidé tvrdí, že AI zcela nahradí lidské obchodníky, že dostatečná automatizace činí lidský úsudek zastaralým. Na druhé straně lidé odmítají algoritmické obchodování jako inherentně méněcenné oproti diskrečnímu rozhodování. Ani jedna pozice neodráží to, co jsem skutečně pozoroval.
Dobře postavený stroj dokáže zpracovat více dat než člověk, vyhodnotit více podmínek současně, provádět bez váhání a aplikovat pravidla konzistentně napříč tisíci obchodů. To jsou reálné výhody a stojí za to je mít. Ale stroj nenese žádné porozumění účelu. Neví, proč obchodujete tento trh, co kapitál znamená, jaká je vaše skutečná tolerance k riziku, zda současné makro prostředí připomíná to, v němž byl systém trénován, nebo zda výhoda, která se objevila v backtestingu, je stále přítomna v současné tržní struktuře.
To nejsou malé mezery. Jsou to otázky, které určují, zda celý podnik dává smysl. A vyžadují úsudek — ne výpočet, ale skutečný lidský úsudek informovaný zkušeností a kontextem.
Nejpoctiivější rámec, který jsem našel, je tento: stroj zvládá kvalitu a konzistenci exekuce. Člověk zvládá kontext a odpovědnost. Když jsou tyto role jasně odděleny a respektovány, kombinace funguje dobře. Když se zhroutí do sebe — když člověk začne od stroje očekávat, že ponese odpovědnost, na kterou nebyl nikdy navržen, nebo když je stroji umožněno operovat bez smysluplného lidského dohledu — věci se pokazí způsoby, které jsou zpětně předvídatelné a předem se jim lze vyhnout.
Dobře navržený Expert Advisor by měl dělat práci člověka jasnější, ne snadnější v tom smyslu, že by vyžadoval méně přemýšlení. Měl by redukovat impulzivní vstupy, nekonzistentní výstupy a emocionální přepisy. Měl by vytvářet disciplinovanou vrstvu mezi pohybem trhu a lidskou reakcí. Ale nikdy by neměl být považován za náhradu povinnosti člověka rozumět tomu, co systém dělá a proč.
5. Co predikce skutečně znamená
Slovo predikce nese větší váhu, než by mělo, v diskusích o obchodní AI. Lidé ho slyší a představují si jistotu — model, který ví, co se bude dít. To není to, co predikce znamená v jakémkoli seriózním technickém nebo vědeckém kontextu, a zejména to není to, co znamená na finančních trzích.
Odpovědná predikce je strukturovaný odhad pravděpodobnosti za podmínek skutečné nejistoty. Říká: vzhledem k tomu, co mohu pozorovat, a vzhledem ke vzorům, které byly historicky spojeny s těmito pozorováními, se tento výsledek zdá pravděpodobnější než jeho alternativy, a mohu přibližně kvantifikovat o kolik pravděpodobnější, a mohu definovat, co by se muselo stát, abych dospěl k závěru, že můj odhad byl špatný.
To je velmi odlišná věc od jistoty. A má velmi odlišné důsledky pro to, jak systém stavíte a používáte. Obchodník, který od modelu vyžaduje jistotu, dříve nebo později začne interpretovat nejednoznačné výstupy jako potvrzení, ignorovat signály, které odporují tomu, čemu chce věřit, a přisuzovat ztráty špaštěstí spíše než zkoumat, zda výhoda kdy byla tak silná, jak se domníval. Obchodník, který skutečně rozumí pravděpodobnosti, bude ztrátové obchody očekávat, bude systém hodnotit napříč dlouhými sekvencemi výsledků spíše než individuálními obchody, a bude podezřívavý vůči jakémukoli období neobvykle dobrých výsledků spíše než jím uklidněn.
Pokora zde není filozofická ctnost. Je to inženýrský požadavek. Vývojář, který skutečně přijímá nejistotu, bude stavět jinak. Bude testovat pečlivěji, tvrdit méně, navrhovat rizikové kontroly před přemýšlením o ziskových cílech a bude zacházet se systémem, který přežije přísné testování, s přiměřenou skepsí spíše než sebejistotou. Systémy, které způsobily největší škody v kvantitativních financích, byly téměř vždy postaveny a provozovány lidmi, kteří věřili, na nějaké úrovni, že vyřešili problém, který vyřešit nelze — že našli jistotu tam, kde existuje pouze pravděpodobnost.
6. Práce s trhem spíše než proti němu
V algoritmickém obchodování existuje tendence přemýšlet o systému jako o něčem vnuceném trhu — souboru pravidel, který extrahuje hodnotu bez ohledu na podmínky. Dospěl jsem k názoru, že jde o špatný rámec. Trhy nejsou pasivní. Mění režimy. Přecházejí mezi trendovým a ranging chováním. Volatilita se rozpíná a smršťuje. Korelace, které platily roky, se rozpadají. Struktury likvidity se vyvíjejí. Algoritmus postavený na předpokladu, že podmínky jsou stabilní, nakonec narazí na podmínky, které stabilní nejsou.
Užitečnější rámec je soulad. Úkolem systému není vnucovat pevné chování každé tržní podmínce, se kterou se setkává. Jeho úkolem je pozorovat současné podmínky, posoudit, zda tyto podmínky spadají do rozsahu, kde jeho logika prokázala platnost, a jednat odpovídajícím způsobem — včetně, kdy je to vhodné, nedělání vůbec nic.
Nečinnost je jedním z nejsložitějších stavů pro lidské obchodníky k přijetí. Existuje silný psychologický tah směrem k dělání něčeho, k bytí na trhu, k pocitu, že kapitál sedící nečinně je plýtvaný kapitál. Dobře navržený systém zde může pomoci, ale pouze tehdy, pokud je explicitně naprogramován, aby považoval nečinnost za legitimní výstup spíše než za stav selhání. Některé z nejlepších obchodů, které může systém učinit, jsou ty, které se rozhodne neučinit.
Mechanismy pozornosti, analýza více časových rámců, detekce volatilitního režimu a rozpoznávání vzorů jsou všechno potenciálně užitečné nástroje. Ale jejich hodnota závisí zcela na tom, zda pomáhají systému klást lepší otázky o současných podmínkách, nebo zda přidávají složitost vytvářející iluzi sofistikovanosti bez zlepšení skutečných rozhodnutí. Složitost, která nemůže být ospravedlněna zlepšenou výkonností v realistickém testování, není sofistikovanost. Je to šum s dalšími kroky.
To je důvod, proč pokračuji ve stavění. Ne proto, že věřím, že je problém blízko vyřešení, nebo proto, že si myslím, že příští architektura konečně přinese spolehlivou jistotu. Pokračuji, protože proces rigorózního budování těchto systémů — přesného definování předpokladů, jejich poctivého testování, přijímání výsledků bez úprav — je jedna z nejefektivnějších disciplín, které jsem pro jasné přemýšlení o trzích našel. Kód se stává, v nejlepším případě, záznamem toho, čemu skutečně věříte, spíše než toho, co si přejete, aby byla pravda. A to je, podle mé zkušenosti, skutečně vzácné a skutečně užitečné.
