How we tried to predict the dollar (by reading news)
Exchange rates move on news, so the oldest idea in currency forecasting is to read the news first. For most of a year we had a language model do exactly that: every morning it searched the web, wrote a briefing on the dollar against the euro, and committed to one number, bullish or bearish. Three hundred mornings later, the number can be checked against what the dollar did next. How the calls held up against a coin and against rules a child could follow, what the briefings were really describing, and what a machine says on a day when nothing happened.
- published
- author
- Hendrik
The idea is as old as currency markets. Exchange rates move when something happens: a central bank changes course, an inflation figure surprises, a war starts or stops. So if you read the news carefully enough, and early enough, you should know which way a currency is about to go. Traders have worked that way for generations, and researchers have been feeding headlines to computers for decades.
What is new is how little it takes to try. A language model with web search can do the reading every morning without anyone in the room, and unlike a bought data feed it can be told exactly what to look at and what to hand back: which currency, which sources, in what form. We wanted to know how well that works when it is simply left to run. Every morning since January, a model read the day's news and the recent exchange rates, wrote a briefing on the US dollar against the euro, and attached a single score: above one half if it was bullish on the dollar, meaning it saw the dollar as strong, below one half if it was bearish. By November there were about three hundred of them, each one a dated opinion that the following day could confirm or embarrass.
Then we checked. The result is a scorecard, measured against rules simple enough to follow without reading anything; a weekend on which no new rate arrived and the opinion changed anyway; a briefing that describes a falling dollar as a rising one; and a morning on which the decisive piece of news sat in the briefing's own text while the score pointed the other way.
One briefing, one number, one rule
The machine is simple. Once a day, OpenAI's GPT-5.2 is given the last few weeks of daily rates, told to search the web, and asked for three things: an explanation of what the dollar has been doing and why, a list of sources, and a score between 0 and 1 for how strong the dollar looks. The same model and the same instructions ran for the whole period.
The score needed a rule before it could be marked right or wrong. The briefing rates the dollar's strength and names no date by which anything should happen, so we chose the most natural reading and wrote it down before looking at any result: a score above one half is a call that the dollar will rise at the next official daily rate, a score below is a call that it will fall. That rate is set by the European Central Bank every working afternoon, about two hours after the briefing is written. The model gets the morning's news, and then the market gets to answer.
What we hoped for was modest. Not a trading system; just a number that beats a coin.
The scorecard
It did not beat the coin. Over roughly three hundred calls, the briefing named the right direction 45 percent of the time.
That figure means little alone, so we scored three rules that involve no reading at all: tomorrow moves like today, the dollar always falls, and the dollar always rises. The last one was right 54 percent of the time, for the plain reason that the dollar gained ground against the euro over these months. A sticky note on the monitor would have outperformed three hundred researched briefings, and that gap is the one difference on the chart large enough to trust.
The obvious rescue is to do the opposite of whatever the briefing says. That would have been right a little more than half the time, which sounds like a discovery and is not: with this many calls, it is still inside the range a coin produces. Listening only to the strong scores changes nothing either; they were right exactly as often as the timid ones.
A forecast this consistently unhelpful is measuring something. It took one chart to see what.
A number that looks over its shoulder
The score is a description of last week. When the dollar had climbed over the previous five trading days, the score was usually above one half; when it had fallen, usually below. Against the day that came next, the relationship disappears, and if anything leans slightly the wrong way.
Our reading of this is simple. Asked each morning how the dollar looks, a careful reader of the news reports how the dollar has looked. The articles it found were explanations of moves that had already happened, so that is what it handed back.
Even as a description, though, the score is unsteady. It agreed with the direction of the past week only six times in ten. The reason for that turned up on the weekends.
The weekend test
Currency markets close on Friday evening, and no official rate is published until Monday. The briefing still runs on Saturday and Sunday mornings, looking at exactly the same numbers it saw the day before. That makes every weekend a small controlled experiment: the data cannot change, so any change in the score comes from somewhere else.
In those pairs of consecutive briefings, the call switched sides, bullish to bearish or back, one time in three. On days when a new rate had arrived in between, it switched only somewhat more often. Most of the movement is the model reading the same chart on a different morning and coming away with a different opinion.
News does keep arriving over a weekend, so not every switch is noise. But a number that changes its mind this often without new prices is hard to tell apart from a guess, and the texts showed where part of the guessing came from.
Reading the chart backwards
In one briefing out of five, the text says the dollar rose when the numbers in front of it had fallen, or the other way round.
The cause is a convention. The pair is written USD/EUR and the rates are euros per dollar, so a higher number is a stronger dollar. Traders more often quote the reverse, dollars per euro, where a higher number is a weaker dollar. Our instructions gave the model the label "USD/EUR" and a column of figures, and never said which way up they were. Most days it worked that out. On some it did not, as in this title from August:
"USD strengthens vs EUR into Aug 3 as post-Fed yield support and weaker euro backdrop push USD/EUR to a multi-week low"
A multi-week low in euros per dollar is a weak dollar; it had lost more than one percent that week. The briefing called it strength and scored it firmly bullish. On the days the chart was read backwards, the call was right about a third of the time.
That one is our fault, and a sentence in the instructions fixes it. The next habit is harder to fix, because it belongs to the model.
A reason for everything
Not one briefing in the entire run says that nothing much happened. Not one carries a score of exactly one half. On the quietest third of days, when the rate moved by about a tenth of a percent or less, every briefing still supplied a cause, and fewer than three in ten described the move as flat.
The causes are familiar ones. In nearly two thirds of the briefings the main driver is the central banks: the Federal Reserve, the European Central Bank, and the gap between their interest rates. That story explained the dollar rising, and it explained the dollar falling. It is probably true in the way that "weather" explains both rain and sunshine.
The news behind it was also older than a daily briefing implies. Where a cited source carried a publication date, it was typically about twelve days old on the morning it was used. A briefing built from two-week-old press releases can describe the climate. It cannot say much about the day.
Sometimes, though, the day's news really was in the briefing. April has the clearest case.
Two mornings in April
On the morning of April 8, the briefing knew the most important fact of the week. It mentioned a ceasefire between the United States and Iran, announced the day before, and it drew the right conclusion from it: cheaper oil, it wrote, "would reduce the “energy-tax” on Europe and can mechanically relieve downward pressure on EUR". Relief for the euro means a weaker dollar. The score that morning was still mildly bullish on the dollar, because the paragraph around that sentence was summarising a month in which the dollar had held its ground.
That afternoon the dollar had its largest one-day fall of the whole run, 1.3 percent.
The next morning the briefing caught up. Its title read "USD slips sharply vs EUR on Apr 8, 2026 as ceasefire headline unwinds safe-haven USD bid", and its score was the most bearish of the year. The move it described was over. The dollar edged up that day.
Both mornings show the same thing from two sides. The score is quietest when the news is new, and loudest once the news is in the price.
The verdict, and the briefing we would build now
Reading the news did not beat a coin. For most of a year, a capable model with the whole web at its disposal produced a daily number that was right less often than chance, and less often than a rule with four words in it. The dollar spent these months climbing, from about 0.85 euros in January to almost 0.90 in November, and that climb was all the four-word rule needed.
How far that carries has limits. Three hundred calls is a small sample: it shows that the briefings had no ability to predict the next day, and it does not show that they were reliably wrong, because an even chance sits at the edge of what this sample allows. The timing, on the other hand, favoured the briefing. It was written two hours before the rate it was judged on, with that morning's market commentary one search away, and it still lost. The closing paragraphs of the briefings were no better hiding place: fewer than three in ten commit to a direction in words, and those did no better than the score.
As explanations, the briefings are fluent, sourced, and mostly sensible; on April 8 the reasoning in the text was correct. The failure was in turning an explanation of the past into a number about the future, and most of that we can trace to what we asked for.
So the next version asks differently. It states which way up the numbers are. It asks for a forecast with a date and a probability, separate from the explanation, so that a description of last week can no longer pass as a view of tomorrow. It allows the answer "no call" and the sentence "nothing happened today". It keeps the search results beside each briefing, so that a later check can see what the model actually read. And it is scored as it runs, against the coin and the sticky note, from the first morning.
Whether a number produced that way beats the coin is a question this year's briefings cannot answer. They could only show that this way of automating it fails at an earlier step than expected: before the model could be wrong about the future, it had to stop describing the past.