<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Victor Ike</title>
    <description>The latest articles on DEV Community by Victor Ike (@vikebuilds).</description>
    <link>https://dev.to/vikebuilds</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4143481%2F8e02bea2-c5b7-48c5-9318-81dfe0263077.jpg</url>
      <title>DEV Community: Victor Ike</title>
      <link>https://dev.to/vikebuilds</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vikebuilds"/>
    <language>en</language>
    <item>
      <title>Three rebuilds: what building a trading platform with AI agents actually took</title>
      <dc:creator>Victor Ike</dc:creator>
      <pubDate>Mon, 28 Sep 2026 13:49:17 +0000</pubDate>
      <link>https://dev.to/vikebuilds/three-rebuilds-what-building-a-trading-platform-with-ai-agents-actually-took-47cp</link>
      <guid>https://dev.to/vikebuilds/three-rebuilds-what-building-a-trading-platform-with-ai-agents-actually-took-47cp</guid>
      <description>&lt;p&gt;I started building Atlas on July 31. It's now on its third version, and the one running today finally looks like the platform I have been envisioning for a long time. Getting here took two restarts, a reset in the middle of the third attempt, and a few changes of tools. This is what happened, including the parts I'd do differently.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6mymhl7543pcdg5s4ceq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6mymhl7543pcdg5s4ceq.png" alt="Stacked bar chart of Atlas commits per day across its three versions, with a dashed line at the Sep 23 process reset." width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Commits per day, Jul 31 to Sep 25. The dashed line is the Sep 23 reset. Source: Atlas git history.&lt;/em&gt; (&lt;a href="https://victorike.me/writing/three-rebuilds" rel="noopener noreferrer"&gt;Interactive version on victorike.me&lt;/a&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  Version one: the agent picked the structure
&lt;/h2&gt;

&lt;p&gt;The first version was also my first real project with an AI coding agent, and I didn't know how to set one up. The agent decided the folder structure, and it came up with something I couldn't follow. By the time I understood how the pieces were supposed to fit together, it was too late to fix the foundation. After eleven days and about 117 commits I stopped and started over, this time with a structure I had chosen myself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Version two: the trade Atlas lost track of
&lt;/h2&gt;

&lt;p&gt;The second version lasted about a month and got further. At one point it placed a paper trade on an OANDA practice account. The trade ended up losing, but the bigger problems were that it wasn't the strategy I had described, and the order reached the broker without its take profit attached. Atlas couldn't match that order against its own records, so I closed it by hand, and then it couldn't account for my manual close either. The architecture for keeping Atlas and the broker in agreement didn't exist yet, so as far as the system was concerned, that trade was simply lost. It showed me that an agent can write code that runs and still not understand what it's building, at least with the coding agents I was using at the time. It's also a big part of why the current version checks every order against the broker's own records and stops when the two disagree.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F60v0qndd2ewem56ezqqc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F60v0qndd2ewem56ezqqc.png" alt="The OANDA practice platform showing Atlas's first paper trade on EUR/USD. The chart has a stop loss line and no take profit line, and the TP column in the trades table is empty." width="800" height="474"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;First paper trade, Sep 3. The take profit never reached the broker.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We fixed it. The second paper trade reached OANDA with its take profit attached. It lost too, but this time it was reconciled properly.&lt;/p&gt;

&lt;p&gt;Other things went wrong in that version too. The agent hard-coded EUR/USD and OANDA all over the codebase, as if I would only trade one market with one broker. My goal is to plug in any supported broker someday, and I couldn't get there without a major refactor. That's a big part of why I started over. The agent also versioned everything as though the system were in production, so I ended up with a version 2 and then a version 3 of the same pieces. I had to tell it plainly that we weren't in production, that nothing in the database mattered yet, and that everything could be reset. Documentation piled up faster than code, a lot of it had to be maintained and ended up going stale, and the agent stopped following directions I had already given it. The historical backtesting that the whole platform depends on never worked well.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvd4dqifwcrcedvl0nket.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvd4dqifwcrcedvl0nket.png" alt="Part of the old Atlas experiment form. Field labels read StrategyVersion and DatasetSnapshot, and a data panel reads Proof: OANDA Practice EUR/USD and Policy: ATLAS_HISTORICAL_GAP_POLICY_V1." width="799" height="274"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Experiment form in the second version, Aug 25. Code names on screen, with OANDA and EUR/USD built into the data. Strategy name hidden.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Version three: 27 workstreams
&lt;/h2&gt;

&lt;p&gt;Around September I switched to Codex, and the results got somewhat better. I also rebuilt the project from scratch as atlas-next. My mistake there was modeling the new version on the old one. I carried over its assumptions along with its good parts, so the baggage came with me. The workflow I built didn't help either. It grew into 27 separate workstreams, and at one point the repository had about 41,000 lines of documentation against 18,000 lines of code. It felt like progress while I was writing it. Looking back, a lot of it was ceremony.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F30ur44wpt2awr5c6y8mw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F30ur44wpt2awr5c6y8mw.png" alt="Grid of 27 workstream tiles, W001 to W027, all opened between Sep 10 and Sep 23, then archived in the reset." width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Workstreams opened in atlas-next, Sep 10 to 23, then archived in the reset. Source: Atlas git history. File counts sampled Sep 12, 15, 18, and 22.&lt;/em&gt; (&lt;a href="https://victorike.me/writing/three-rebuilds" rel="noopener noreferrer"&gt;Interactive version on victorike.me&lt;/a&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  The reset
&lt;/h2&gt;

&lt;p&gt;On September 23, I reset that process and switched to Claude, and things started to work. The plans were better and I rewrote less. It asked better questions before building, understood what I needed, stayed on long tasks and picked them back up, and checked in when it needed a decision from me instead of guessing. I should say that Claude also helped me write this post, so weigh that however you like. The bigger change was that my workflow finally had room for what I actually bring to Atlas.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I bring that the agent doesn't
&lt;/h2&gt;

&lt;p&gt;I'm a trader, and there's knowledge in trading that you don't get from reading code. What should happen to a setup when the market closes for the weekend? How long should a system wait after the market reopens before it starts trading again? Someone building a trading platform without that experience wouldn't know to ask, and an agent won't ask on its own. Those decisions are what make Atlas mine. Once I spent my time on them and let the agent do the building, it started to look like what I had imagined.&lt;/p&gt;

&lt;p&gt;Today the third version runs deterministic backtests on stored data, and on September 27 I started its first paper run on my OANDA practice account. It isn't ready for real money yet. It trades on paper through Friday, and I'll write about how that first week goes.&lt;/p&gt;

&lt;p&gt;I was skeptical about using AI to build a trading system. Earlier this year, I took a &lt;a href="https://www.udemy.com/course/complete-algorthmic-forex-trading-and-back-testing-system/" rel="noopener noreferrer"&gt;30-hour Udemy course on writing forex trading algorithms in Python&lt;/a&gt;, hoping I could build something like Atlas someday. It never turned out quite like I wanted. AI agents are what finally let me turn what I know about trading into working software, and that's the part I didn't believe on July 31.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://victorike.me/writing/three-rebuilds" rel="noopener noreferrer"&gt;victorike.me&lt;/a&gt;. I write about building Atlas, the times the AI agents get it wrong, and the economic news that moves the markets I trade.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Atlas is a tool. Nothing here is financial advice. I am not a registered financial or investment adviser.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>trading</category>
      <category>programming</category>
    </item>
    <item>
      <title>Building my own trading platform, three rebuilds in</title>
      <dc:creator>Victor Ike</dc:creator>
      <pubDate>Fri, 25 Sep 2026 23:22:47 +0000</pubDate>
      <link>https://dev.to/vikebuilds/building-my-own-trading-platform-three-rebuilds-in-4mne</link>
      <guid>https://dev.to/vikebuilds/building-my-own-trading-platform-three-rebuilds-in-4mne</guid>
      <description>&lt;p&gt;I traded forex and crypto manually for years and lost money doing it. Looking back, my strategies were rarely the main problem. I entered trades on emotion and kept no real journal of why I did anything, so I couldn't tell whether a bad week meant bad luck or a strategy that had stopped working. Like a lot of traders, I'd go on tilt, taking worse trades to win back the last loss.&lt;/p&gt;

&lt;p&gt;Atlas is my attempt to fix that. I've rebuilt it three times to get to this version, and I'm still early. It's a trading environment that runs on my own machine and takes an idea from a written strategy to backtests, then to paper trading, and eventually to live trading. I want the system to make the decisions I used to make badly, and I want it to prove the strategy has an edge before I let it anywhere near real money.&lt;/p&gt;

&lt;p&gt;Right now Atlas does historical research. It stores price history from an OANDA practice account as fixed evidence: 15-minute candles for my current strategy's decisions and 1-minute bid and ask candles for simulating fills. Once stored, that data can't change, so a backtest always points to the exact data it ran on. Strategies work the same way. If I change a single setting, Atlas saves a new version instead of editing the old one, which means I can't accidentally compare results against logic that no longer exists. The same version on the same data gives the same result every time, and any trade can be traced from the strategy's decision to the simulated fill. Every position is sized by one central risk rule. The first market I tested was EUR/USD. Current research runs on GBP/JPY, which forced me to handle converting profit and loss back into a USD account properly. It also forced me to stop treating EUR/USD as the only market. My AI coding agent had hard-coded it all over the place, so now each new market gets added and tested on its own.&lt;/p&gt;

&lt;p&gt;Paper trading is close. The code exists, has been tested against a simulated broker, and as of this week can save a run and start it from the command line. This version hasn't placed a real practice order yet. The first runs will use an OANDA practice account. A lot of the work went into what happens when something is unclear. An order request doesn't count as a position until the broker's own records confirm the fill, and if the outcome of an order is uncertain, Atlas stops taking new entries until it's resolved. When the market closes, even for an unscheduled pause, any setup the strategy was waiting on gets discarded, and entries stay blocked for 30 minutes after the market reopens. Stale prices or a disagreement between Atlas and the broker halt the run instead of letting it guess.&lt;/p&gt;

&lt;p&gt;The part I care about most is that nothing trades by default. Starting Atlas doesn't authorize trading, and neither does loading credentials. Loading the practice credentials, placing the first order, activating paper trading, and restarting a run each need my approval, every time. The code that talks to the broker also refuses to connect to the live server at all. It would have been easy to let "the app is running" imply "the app can trade." I kept those as separate steps on purpose, even though it makes day-to-day use a little annoying.&lt;/p&gt;

&lt;p&gt;I build most of my software with AI coding agents now, and Atlas is where I've learned the most about what that takes. A trading system is a demanding test. If an agent gets the risk logic mostly right, or quietly changes how something behaves between two commits, I end up with a system that isn't safe to run with real orders. Most of the discipline in Atlas exists for that reason. Fixed data, frozen strategy versions, and explicit approvals make it harder for me or an agent to ship a subtle mistake without noticing.&lt;/p&gt;

&lt;p&gt;Atlas isn't deployed anywhere, and no real money has touched it. It isn't ready for that yet. Live trading doesn't exist, and I don't plan to build it until paper trading has run long enough to show how Atlas behaves in real market conditions. I expect real money to surface problems that paper trading can't, and I'm looking forward to finding out what they are. I'll write about the first real paper order when it happens.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://victorike.me/writing/building-my-own-trading-platform" rel="noopener noreferrer"&gt;victorike.me&lt;/a&gt;. I write about building Atlas, the times the AI agents get it wrong, and the economic news that moves the markets I trade.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Atlas is a tool. Nothing here is financial advice. I am not a registered financial or investment adviser.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>trading</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
