<?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: Đỗ Hiệp</title>
    <description>The latest articles on DEV Community by Đỗ Hiệp (@gugubnibi).</description>
    <link>https://dev.to/gugubnibi</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3885340%2Fc01754dd-3389-4a75-b2dc-75c952464477.jpg</url>
      <title>DEV Community: Đỗ Hiệp</title>
      <link>https://dev.to/gugubnibi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gugubnibi"/>
    <language>en</language>
    <item>
      <title>The Inverted Control: What 24 Hours of Running Our Own Bot Backwards Revealed</title>
      <dc:creator>Đỗ Hiệp</dc:creator>
      <pubDate>Sat, 18 Apr 2026 03:37:25 +0000</pubDate>
      <link>https://dev.to/gugubnibi/the-inverted-control-what-24-hours-of-running-our-own-bot-backwards-revealed-402g</link>
      <guid>https://dev.to/gugubnibi/the-inverted-control-what-24-hours-of-running-our-own-bot-backwards-revealed-402g</guid>
      <description>&lt;h1&gt;
  
  
  The Inverted Control: What 24 Hours of Running Our Own Bot Backwards Revealed
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Executive Summary
&lt;/h2&gt;

&lt;p&gt;After roughly 500 paper round-trips showed a persistent sub-35% win rate with average losses larger than average wins, we stopped scaling the live side and ran a cheap experiment: a second paper book that executes the exact opposite of every signal the bot produces, on the same universe, same cadence, same fee model.&lt;/p&gt;

&lt;p&gt;Twenty-four hours in, the inverted book is winning 70.59% of round-trips versus 15.79% on the standard book. Both books are still losing in absolute terms because fees dominate at small sample. The important number is not the win rate gap. It is whether the inverted book's gross edge clears the fee floor by the time we hit the 100-round-trip decision point, roughly 8 to 12 days out.&lt;/p&gt;

&lt;p&gt;This post walks through the setup, the data so far, where the reading could be wrong, and the specific decision that happens at 100 round-trips.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Thesis
&lt;/h2&gt;

&lt;p&gt;A bot that loses more than random is either extracting no signal, or extracting signal with the sign reversed. Those two hypotheses produce identical win-rate readings in a one-book world. They are only separable by running a second book with the signal flipped.&lt;/p&gt;

&lt;p&gt;The second hypothesis is rarer but well-documented: overfit features trained on stale microstructure, labels that got reversed in a pipeline step, crowding where yesterday's "bullish" marker is now a faded trade. None of those are visible from inside a single losing book. All of them flip sign when you flip the signal.&lt;/p&gt;

&lt;p&gt;Running the inverted control is the lowest-cost diagnostic that distinguishes the two hypotheses. In the first hypothesis (no signal), the inverted book converges to the same losing distribution, minus fee drag. In the second hypothesis (inverted signal), the inverted book diverges: higher win rate, smaller loss magnitude, possibly net-positive once sample grows past fee-drag territory.&lt;/p&gt;

&lt;p&gt;The point of running the control is not to find a winning strategy. It is to stop guessing about which of those two worlds the bot is actually in.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Setup
&lt;/h2&gt;

&lt;p&gt;Two paper books, same engine, same universe, same fee schedule.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Book 1 — standard signal.&lt;/strong&gt; Every decision from the scanner is executed as issued. LONG is LONG, BUY is BUY.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Book 2 — inverted mirror.&lt;/strong&gt; Every decision is flipped programmatically before execution. LONG becomes SHORT, BUY becomes SELL (or hold, since the spot lane is accumulate-only during this window, making the flip mostly a futures test).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both books start from identical simulated ~$1000 balances. Both pay realistic exchange-tier fees on open and close — no free-trade assumption, which is where most inversion backtests fail.&lt;/p&gt;

&lt;p&gt;Universe: 30 USDT pairs on a major exchange, perps plus spot. Scan cadence 15 minutes. Leverage cap 3x. Drawdown hard stop 8% per book. Spot exit signals ignored in Book 2 for this window — the test isolates the futures direction bet.&lt;/p&gt;

&lt;p&gt;The test completes at 100 post-flip round-trips on Book 2. At that point one of three decisions is on the table.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deep Dive: 24 Hours of Parallel Data
&lt;/h2&gt;

&lt;p&gt;Windowed to the period since the flip went live:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Book 1 — standard.&lt;/strong&gt; 38 round-trips closed. Win rate 15.79%. Net result negative on the order of tens of USD.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Book 2 — inverted.&lt;/strong&gt; 17 round-trips closed. Win rate 70.59%. Net result also negative, but by a much smaller per-round-trip magnitude (roughly 25x better than standard).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The win-rate gap from 15.79% to 70.59% is the headline. It is not a statistical fluke at this sample. A purely random signal in this setup would produce win rates clustering around 45-55% on both books. A noise signal (first hypothesis) would produce roughly symmetric rates on both books. What shows up instead — asymmetric split heavily favoring the inverse — is the fingerprint of a signal that carries information with the wrong sign.&lt;/p&gt;

&lt;p&gt;Per-symbol, the inversion's effect is not uniform:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Symbol&lt;/th&gt;
&lt;th&gt;Book 1 WR&lt;/th&gt;
&lt;th&gt;Book 2 WR&lt;/th&gt;
&lt;th&gt;Direction&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ZEC/USDT&lt;/td&gt;
&lt;td&gt;12.5% (8 RT)&lt;/td&gt;
&lt;td&gt;80.0% (5 RT)&lt;/td&gt;
&lt;td&gt;Inversion strongly helps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ARB/USDT&lt;/td&gt;
&lt;td&gt;25.0% (4 RT)&lt;/td&gt;
&lt;td&gt;100% (3 RT)&lt;/td&gt;
&lt;td&gt;Inversion helps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DOGE/USDT&lt;/td&gt;
&lt;td&gt;0.0% (5 RT)&lt;/td&gt;
&lt;td&gt;100% (2 RT)&lt;/td&gt;
&lt;td&gt;Inversion helps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UNI/USDT&lt;/td&gt;
&lt;td&gt;0.0% (4 RT)&lt;/td&gt;
&lt;td&gt;100% (1 RT)&lt;/td&gt;
&lt;td&gt;Inversion helps (micro sample)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BCH/USDT&lt;/td&gt;
&lt;td&gt;0.0% (1 RT)&lt;/td&gt;
&lt;td&gt;100% (1 RT)&lt;/td&gt;
&lt;td&gt;Inversion helps (micro sample)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NEAR/USDT&lt;/td&gt;
&lt;td&gt;28.6% (7 RT)&lt;/td&gt;
&lt;td&gt;0.0% (2 RT)&lt;/td&gt;
&lt;td&gt;Inversion hurts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ADA/USDT&lt;/td&gt;
&lt;td&gt;50.0% (4 RT)&lt;/td&gt;
&lt;td&gt;33.3% (3 RT)&lt;/td&gt;
&lt;td&gt;Inversion hurts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Five of seven symbols with both-book data favor inversion. Two do not. The symbols where inversion fails are the ones where the standard book was already near or above 30% — consistent with a "invert only what's clearly broken, leave the rest" hybrid strategy that may emerge at higher sample.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Fee Floor
&lt;/h3&gt;

&lt;p&gt;Every round-trip pair costs roughly the open-plus-close fee on a major exchange, applied to both books independently. With Book 2 running in parallel, fees double.&lt;/p&gt;

&lt;p&gt;That doubles the bar. Book 2's improvement in gross profit-and-loss has to clear two fee stacks, not one. An inversion signal that wins on gross but gets eaten by the fee floor is a classic mean-reversion trap: backtests ignoring fees look clean, live books ignoring fees bleed out.&lt;/p&gt;

&lt;p&gt;At 17 round-trips, Book 2's net-negative result is dominated by fee drag, not by losses on individual trades. The interesting question is whether that fee drag, as a percentage of gross result, shrinks as sample grows. If the gross per-round-trip edge holds at roughly current magnitude, net-positive becomes plausible around round-trip 50-70. If the gross edge compresses as the signal gets noisier at larger sample, net-positive never arrives.&lt;/p&gt;

&lt;h2&gt;
  
  
  Counter-Argument: Why This Reading Could Be Wrong
&lt;/h2&gt;

&lt;p&gt;Taking the opposite side of our own preliminary conclusion:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sample is too small.&lt;/strong&gt; Seventeen round-trips on Book 2 is the sample size a drunk person at a blackjack table has after twenty minutes. Win-rate distributions at n=17 are wide enough that a 70.59% result can reverse to 35% over the next 30 trips without surprising anyone. Any reading here is provisional.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recent regime shift.&lt;/strong&gt; The standard book's historical 34% win rate was compiled over weeks. The 15.79% since the flip is over 24 hours. A regime change (one market day of trend-heavy action on symbols the scanner dislikes, for example) could compress the standard book's rate artificially without the underlying signal being any more broken than it was a week ago. That would make the inversion's apparent edge a mirage of timing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Asymmetric fee burn.&lt;/strong&gt; Book 2's inverted futures positions may open and close in ways that pay funding rate differently than Book 1's. If the test period coincides with a funding regime that favors one side, some of the apparent gross edge is just "Book 2 happened to be on the right side of funding this week."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The symbols where inversion fails are the ones we actually trade most.&lt;/strong&gt; The test might reveal that inversion works on low-activity symbols that produce little volume, while the symbols driving Book 1's meaningful losses (higher-sample names like BTC, ETH, SOL, which Book 2 has not yet traded in this window) are not in the inverted-signal camp. A strategy that only works on low-volume names is not a strategy worth running.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The signal might be improving organically.&lt;/strong&gt; Book 1's live standard-signal win rate (across all history, not just this window) has been creeping toward 34% from the 27% it hit in the worst stretch earlier in April. If the signal is already self-correcting, the inversion's apparent edge evaporates before the test window closes.&lt;/p&gt;

&lt;p&gt;Any one of those could be what is actually going on. We are not going to know until the sample grows.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Verdict
&lt;/h2&gt;

&lt;p&gt;The decision point is 100 round-trips on Book 2, expected 8 to 12 days out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If Book 2 lands net-positive with win rate above 55%:&lt;/strong&gt; the inversion locks in. The live signal gets flipped permanently, along with the take-profit and stop-loss asymmetry (swap from 3% TP / -2% SL to 2% TP / -3% SL to match the inverted payoff shape). Live trading remains paused until the paper side clears a 30-day rolling benchmark of Binance Simple Earn at roughly 0.42% per month — the honest passive bar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If Book 2 lands net-negative or drawdown exceeds 8%:&lt;/strong&gt; the futures lane is disabled entirely. Spot accumulation remains. The diagnosis shifts from "inverted signal" to "no signal," and the rebuild restarts on features, not direction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If Book 2 lands mixed — gross positive but net-negative, or win rate high but below 55%:&lt;/strong&gt; the hybrid path becomes the next experiment. Invert only the symbols where Book 1's rolling win rate sits below 40%. Leave the ones above 40% standard. Re-run the control on that subset.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the reader should take from this
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;If you are running a paper book that loses more than random:&lt;/strong&gt; run the inverted control before killing the strategy. The setup is one column in the trades table (&lt;code&gt;book_id&lt;/code&gt;) and one branch in the execute function. Cost is near zero, answer is binary, information is much larger than the cost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you are watching SleepyQuant for the outcome:&lt;/strong&gt; the result arrives at 100 round-trips. We publish either a "inversion locks in, here is the updated config" or a "futures lane disabled, here is why" — whichever the numbers say, not whichever is more flattering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you are here for the general lesson:&lt;/strong&gt; a losing signal is not automatically noise. Sometimes it is a working signal with the sign reversed. The diagnostic is cheap. The implication — that your model has been right about structure and wrong about direction — is unusual enough that most builders never check. The check itself is worth more than the result.&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow the experiment
&lt;/h2&gt;

&lt;p&gt;We publish one email per week with the round-trip count, the current win rates on both books, the fee-drag ratio, and whatever the honest read is at that point. No trading advice, no signals, no "buy at X." Just the numbers and what we are and are not willing to conclude from them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Subscribe at &lt;a href="https://sleepyquant.rest" rel="noopener noreferrer"&gt;sleepyquant.rest&lt;/a&gt;&lt;/strong&gt; → the verdict lands in your inbox.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>quant</category>
      <category>mlx</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>Show HN: SleepyQuant – a 12-agent crypto quant running on one Mac</title>
      <dc:creator>Đỗ Hiệp</dc:creator>
      <pubDate>Sat, 18 Apr 2026 01:47:25 +0000</pubDate>
      <link>https://dev.to/gugubnibi/show-hn-sleepyquant-a-12-agent-crypto-quant-running-on-one-mac-4dhh</link>
      <guid>https://dev.to/gugubnibi/show-hn-sleepyquant-a-12-agent-crypto-quant-running-on-one-mac-4dhh</guid>
      <description>&lt;h1&gt;
  
  
  Show HN: SleepyQuant – a 12-agent crypto quant running on one Mac
&lt;/h1&gt;

&lt;p&gt;Hey everyone,&lt;/p&gt;

&lt;p&gt;SleepyQuant is a solo experiment I've been running for the last couple of weeks: 12 local AI agents coordinating a paper crypto trading book on a single Apple M1 Max. No cloud inference, no API bills, no vendor black box. Every agent prompt, every losing trade, every round-trip gets written up weekly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stack (all local):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apple M1 Max, 64 GB RAM&lt;/li&gt;
&lt;li&gt;MLX Qwen 2.5 32B Q8 as the primary agent model&lt;/li&gt;
&lt;li&gt;DeepSeek R1 14B Q8 as a lazy-loaded reasoning lane for research tasks&lt;/li&gt;
&lt;li&gt;Priority queue on the MLX inference lock so user chat preempts automation&lt;/li&gt;
&lt;li&gt;FastAPI backend, SwiftUI macOS app, SQLite for state, ChromaDB for agent memory&lt;/li&gt;
&lt;li&gt;Binance paper via ccxt, spot + futures, 70/30 allocation, 10x leverage on the futures lane&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What's deliberately boring:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The paper book is roughly $78 equivalent. Not a typo. The real-mode transition gate requires three consecutive green days before anything touches real capital, and even then the first real trade is capped tiny. If the strategy can't handle $78, I'd rather find out for free.&lt;/li&gt;
&lt;li&gt;Tight scalp TP/SL (2.0% / -1.5% on futures) with a hard -8% daily drawdown stop.&lt;/li&gt;
&lt;li&gt;Every losing trade gets a post-mortem. The failure vault is public in the weekly newsletter, with root-cause classification (technical / news / execution slippage) and the exact param changes shipped as a response.&lt;/li&gt;
&lt;li&gt;Funding rate guard — refuses to open futures positions when our side is paying extreme funding. Shipped after the scanner was quietly bleeding basis points for three days straight.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Agents (one role each):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A COO / dispatcher, a trading lead, separate futures + spot executors, a CFO, a CTO with filesystem + shell tools, an R&amp;amp;D / failure analyst, a legal / compliance officer, a resource monitor, a QA engineer, a news intelligence watcher, and a content / SEO writer.&lt;/p&gt;

&lt;p&gt;Each agent has a focused system prompt + a small set of skill handlers. The COO routes CEO requests to the right specialist instead of one monolithic agent trying to do everything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live paper P&amp;amp;L widget + weekly newsletter:&lt;/strong&gt; &lt;a href="https://sleepyquant.rest" rel="noopener noreferrer"&gt;https://sleepyquant.rest&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two things I'd genuinely want feedback on — please weigh in below:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Is 12 agents worth the routing overhead?&lt;/strong&gt; Or would a single bigger agent with tool use be cleaner at this scale? I keep flip-flopping and would love to hear from anyone who's been through the same decomposition choice.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MLX unload strategies on Apple Silicon?&lt;/strong&gt; Right now my reasoning model auto-unloads after 2 minutes idle, which works but feels crude. If you're running MLX in production on a Mac, how do you free RAM when you need it back?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Try it or follow along:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live paper P&amp;amp;L widget + weekly write-up:&lt;/strong&gt; &lt;a href="https://sleepyquant.rest" rel="noopener noreferrer"&gt;https://sleepyquant.rest&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subscribe to the weekly post-mortem newsletter&lt;/strong&gt; — Beehiiv, free, one email per week, no upsells, no signals, no affiliate links&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cadence:&lt;/strong&gt; every Tuesday. If the book dies, I'll write up that too&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Happy to answer questions in the comments about the architecture, the failure vault, the priority queue design, or why local-first LLM agents are worth the effort on a 64 GB machine. Fire away.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>quant</category>
      <category>mlx</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>SleepyQuant — Twitter brand assets (bio + pinned tweet)</title>
      <dc:creator>Đỗ Hiệp</dc:creator>
      <pubDate>Sat, 18 Apr 2026 01:47:21 +0000</pubDate>
      <link>https://dev.to/gugubnibi/sleepyquant-twitter-brand-assets-bio-pinned-tweet-1joe</link>
      <guid>https://dev.to/gugubnibi/sleepyquant-twitter-brand-assets-bio-pinned-tweet-1joe</guid>
      <description>&lt;h2&gt;
  
  
  Profile
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Display name (50 chars max):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SleepyQuant
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Bio (160 chars max — landing + newsletter + 1-line pitch):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI trades while the CEO sleeps. 12 local agents + one Mac M1 Max running a paper crypto book in public. Weekly post-mortems, zero hype.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;(139 chars — room for a trailing link to sleepyquant.rest in the website field rather than in the bio text itself.)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Location:&lt;/strong&gt; &lt;code&gt;Runs on a Mac in a closet&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;code&gt;https://sleepyquant.rest&lt;/code&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Pinned tweet
&lt;/h2&gt;

&lt;p&gt;One tweet, no thread. Meant to be the first thing a new visitor sees. No question on purpose — it's a brand statement, not a conversation opener.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;One Mac. 12 AI agents. A $78 paper crypto book.

I run a quant experiment while I sleep and post the whole journey — every win, every dumb loss, every architecture note — every week.

Live P&amp;amp;L + the newsletter: sleepyquant.rest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;(278 chars — right under the 280 limit, no line-break tricks, reads in one pass.)&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Alternate pinned tweet (if the first one feels too cold)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I ship weekly regardless of wins or losses.

Week 1 on paper: +2.65%, 9 round-trips, 3 losses with full post-mortems, funding-rate guard shipped mid-week.

Everything runs locally on one Mac. sleepyquant.rest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;(242 chars.)&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Keep the bio and pinned tweet aligned on tone. Reader should see the bio, then the pinned, and the two should feel like one voice.&lt;/li&gt;
&lt;li&gt;Don't use "crypto trading bot" — implies signals and gets flagged by X ad policy. Use "paper crypto book" or "quant experiment".&lt;/li&gt;
&lt;li&gt;Update the pinned weekly — roll in the latest round-trip number so it never feels stale. The alternate version is a good template for that weekly refresh.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>quant</category>
      <category>mlx</category>
      <category>buildinpublic</category>
    </item>
  </channel>
</rss>
