<?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: Kestrel Quant</title>
    <description>The latest articles on DEV Community by Kestrel Quant (@kestrelquant).</description>
    <link>https://dev.to/kestrelquant</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%2F4105984%2F8dd685fe-c586-42c6-8c76-cffb6ff612f0.png</url>
      <title>DEV Community: Kestrel Quant</title>
      <link>https://dev.to/kestrelquant</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kestrelquant"/>
    <language>en</language>
    <item>
      <title>My Trading Engine Proposed the Same Trade 6 Times in an Hour. The AI Killed It Every Time.</title>
      <dc:creator>Kestrel Quant</dc:creator>
      <pubDate>Wed, 02 Sep 2026 10:48:47 +0000</pubDate>
      <link>https://dev.to/kestrelquant/my-trading-engine-proposed-the-same-trade-6-times-in-an-hour-the-ai-killed-it-every-time-1pg</link>
      <guid>https://dev.to/kestrelquant/my-trading-engine-proposed-the-same-trade-6-times-in-an-hour-the-ai-killed-it-every-time-1pg</guid>
      <description>&lt;p&gt;I run an automated crypto trading system. Like most algo traders, I built an engine that scans markets, scores setups, and fires orders. That's the part everyone builds.&lt;/p&gt;

&lt;p&gt;The part nobody builds — and the part that turned out to matter far more — is the second brain that sits between the signal and the order. Its only job is to say &lt;strong&gt;no&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Last weekend I watched it do its job in a way that made me genuinely glad it exists. Here's the full story, with the actual decision log.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup
&lt;/h2&gt;

&lt;p&gt;On Aug 16, between 14:07 and 14:56 (UTC+8), the scanning engine proposed the same trade &lt;strong&gt;six separate times&lt;/strong&gt;: SHORT $GRVT.&lt;/p&gt;

&lt;p&gt;Six times, the AI advisor layer rejected it.&lt;/p&gt;

&lt;p&gt;Not with a generic "score too low" filter — with actual reasoning, re-evaluated fresh on each attempt:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kill reasons, straight from the log:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Score 40 vs a 65 minimum.&lt;/strong&gt; Not even close. The raw setup was weak on structure, momentum, and trigger quality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Institutional memory.&lt;/strong&gt; The same ticker had already burned a long position earlier this month. There's a post-mortem on record, and the advisor re-reads its own post-mortems before every ruling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hostile tape.&lt;/strong&gt; BTC was in an institutional-bid news cycle. In that regime, alts drift up and shorts starve. Shorting alts into a BTC-bid tape is fighting the current.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contradiction in positioning data.&lt;/strong&gt; The smart-money ratio was leaning long. Proposing a short against that is a directional contradiction, not a nuance.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why this matters more than it sounds
&lt;/h2&gt;

&lt;p&gt;Any one of these reasons might slide past a naive filter. A score threshold alone wouldn't have caught the regime conflict. A regime filter alone wouldn't have caught the post-mortem precedent. The point isn't any single rule — it's that the advisor &lt;strong&gt;composes&lt;/strong&gt; weak signal + bad memory + hostile regime + positioning contradiction into a single judgment: hard no.&lt;/p&gt;

&lt;p&gt;Six proposals in an hour also tells you something about engines: left alone, they don't get tired, and they don't get embarrassed. The scanner kept finding the same pattern because the pattern was technically there. It was just a bad trade.&lt;/p&gt;

&lt;p&gt;Most retail algo systems have exactly one line of defense between a signal and real money: the score threshold. The failure mode of that design is well documented in every blown account — a mediocre score in a terrible context is still a pass.&lt;/p&gt;

&lt;h2&gt;
  
  
  The advisor's design (short version)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Every proposed trade gets re-litigated: score, multi-timeframe resonance, regime context, news cycle, positioning data, and historical precedents from its own loss post-mortems.&lt;/li&gt;
&lt;li&gt;A "yes" can come with conditions: reduced size, tightened stop. "Yes, but smaller" is a ruling too.&lt;/li&gt;
&lt;li&gt;Every veto is logged with full reasoning. When a similar setup shows up later, the log is part of the evidence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The vetoes are not bugs. They're the feature. A system that argues with itself before touching money loses less money.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build in public
&lt;/h2&gt;

&lt;p&gt;I'm documenting the decision stream — vetoes, overrides, lockouts, autopsies of losing trades — as a public log. No PnL screenshots, no return promises, just the mechanical reasoning of a system designed to survive its own engine.&lt;/p&gt;

&lt;p&gt;Full decision log and live system notes → &lt;strong&gt;&lt;a href="https://kestrelquant.com" rel="noopener noreferrer"&gt;https://kestrelquant.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;⚠️ Crypto is a high-risk market. This is a decision-support tool, not a signal service or copy-trading product. Nothing here is financial advice.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>algotrading</category>
      <category>cryptocurrency</category>
      <category>buildinpublic</category>
      <category>riskmanagement</category>
    </item>
  </channel>
</rss>
