<?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>Forem: pickuma</title>
    <description>The latest articles on Forem by pickuma (@pickuma).</description>
    <link>https://forem.com/pickuma</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%2F3926669%2Fb3923c39-364a-4953-b8f7-aa962d6419e0.jpg</url>
      <title>Forem: pickuma</title>
      <link>https://forem.com/pickuma</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/pickuma"/>
    <language>en</language>
    <item>
      <title>Why Your Backtest Is Lying to You: Data Biases That Ruin Equity Research</title>
      <dc:creator>pickuma</dc:creator>
      <pubDate>Tue, 19 May 2026 05:24:13 +0000</pubDate>
      <link>https://forem.com/pickuma/why-your-backtest-is-lying-to-you-data-biases-that-ruin-equity-research-22hd</link>
      <guid>https://forem.com/pickuma/why-your-backtest-is-lying-to-you-data-biases-that-ruin-equity-research-22hd</guid>
      <description>&lt;p&gt;You built a backtest. It returns 18% annualized over the last&lt;br&gt;
decade. The Sharpe is 1.4. The drawdown is acceptable. You're&lt;br&gt;
already mentally apartment-shopping in the city you'll move to&lt;br&gt;
after the strategy makes you wealthy.&lt;/p&gt;

&lt;p&gt;It's probably wrong. Not because your code has bugs — backtest&lt;br&gt;
code can be flawless and still produce numbers that have almost&lt;br&gt;
nothing to do with what would have happened if you'd traded the&lt;br&gt;
strategy live. The reasons are subtle and they have names.&lt;/p&gt;

&lt;h2&gt;
  
  
  Survivorship bias
&lt;/h2&gt;

&lt;p&gt;The most famous one. If your historical universe is "S&amp;amp;P 500&lt;br&gt;
today, backtested over ten years," you've quietly excluded every&lt;br&gt;
company that was in the S&amp;amp;P 500 at some point and got booted out&lt;br&gt;
— usually because it failed.&lt;/p&gt;

&lt;p&gt;The companies that died don't show up in the dataset. Your&lt;br&gt;
historical "S&amp;amp;P 500" is actually "the winning subset of the&lt;br&gt;
S&amp;amp;P 500 visible from the future." Returns are biased upward,&lt;br&gt;
sometimes by several percentage points a year for small-cap or&lt;br&gt;
emerging-market strategies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; use a point-in-time index membership database, or build&lt;br&gt;
one. CRSP and similar paid datasets handle this; free options&lt;br&gt;
require more work and willingness to scrape historical index&lt;br&gt;
constituent lists.&lt;/p&gt;

&lt;h2&gt;
  
  
  Look-ahead bias
&lt;/h2&gt;

&lt;p&gt;You computed the trailing-twelve-month P/E using today's reported&lt;br&gt;
financials. Trouble: those financials weren't available at the&lt;br&gt;
time. Earnings get reported 30–90 days after a quarter ends, and&lt;br&gt;
restatements happen after that.&lt;/p&gt;

&lt;p&gt;If you're ranking companies on March 31, 2018, you should be&lt;br&gt;
using financials that were &lt;em&gt;actually filed and disclosed by&lt;br&gt;
March 31, 2018&lt;/em&gt; — not the latest revision visible today.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; use point-in-time fundamentals. EDGAR preserves the&lt;br&gt;
original filing dates, so it can be done, but it requires care.&lt;br&gt;
Most price-data vendors hand you the latest-available value with&lt;br&gt;
no timestamp — that's the bias source.&lt;/p&gt;

&lt;h2&gt;
  
  
  Universe selection bias
&lt;/h2&gt;

&lt;p&gt;A close cousin of survivorship. If you backtest on "stocks that&lt;br&gt;
have at least 10 years of clean fundamental data," you've&lt;br&gt;
selected for stability — companies that didn't go bankrupt,&lt;br&gt;
didn't merge, didn't get acquired, didn't change reporting&lt;br&gt;
standards. Your universe is structurally biased toward survivors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; define your universe as a point-in-time set ("Russell&lt;br&gt;
3000 as of the rebalance date") and accept that some constituents&lt;br&gt;
will have noisy or incomplete data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Slippage and transaction costs
&lt;/h2&gt;

&lt;p&gt;You assumed you traded at the closing price with zero cost. In&lt;br&gt;
reality, large orders move the market, bid-ask spreads exist,&lt;br&gt;
and small-cap stocks can be impossible to fill at the quoted&lt;br&gt;
price.&lt;/p&gt;

&lt;p&gt;A strategy that backtests at 15% gross return after slippage and&lt;br&gt;
costs is often 8–10% net. The smaller your average market cap&lt;br&gt;
and the higher your turnover, the worse the gap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; model slippage explicitly. A reasonable starting point&lt;br&gt;
is 20–50 basis points per round-trip for liquid stocks, 100+ bps&lt;br&gt;
for small caps. Charge it to every trade.&lt;/p&gt;

&lt;h2&gt;
  
  
  Backtest overfitting
&lt;/h2&gt;

&lt;p&gt;You ran 200 parameter combinations and the best one delivered&lt;br&gt;
22%. Congratulations: you've discovered noise in your dataset,&lt;br&gt;
not signal. By construction, the best of 200 trials on the same&lt;br&gt;
data will look impressive even if the underlying strategy has no&lt;br&gt;
edge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; walk-forward testing. Develop on one window, test on a&lt;br&gt;
later out-of-sample window you never touched during parameter&lt;br&gt;
selection. If the out-of-sample period underperforms&lt;br&gt;
substantially, the rule was likely overfit. Bonferroni-style&lt;br&gt;
corrections for multiple-testing apply here too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Calendar and currency cleanup
&lt;/h2&gt;

&lt;p&gt;Subtler than the rest, but important:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Time zones.&lt;/strong&gt; "Closing price on date X" depends on which
exchange and which time zone X refers to. Cross-listed names
bite first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Corporate actions.&lt;/strong&gt; Stock splits and dividends have to be
back-adjusted consistently. Yahoo Finance gives you adjusted
prices; sometimes the adjustments are off for small caps or
delisted names.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Currency.&lt;/strong&gt; A non-USD strategy backtest needs FX adjustment
at the same point in time as the prices, not at today's rate.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;If your backtest dramatically outperforms the broad market over&lt;br&gt;
a long window, treat that as a red flag, not a celebration.&lt;br&gt;
Persistent strategy edges are uncommon and small. A 5%-per-year&lt;br&gt;
alpha is exceptional. A 15%-per-year alpha is almost always a&lt;br&gt;
data bias.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The honest closing
&lt;/h2&gt;

&lt;p&gt;A backtest is a hypothesis, not a result. The version of you who&lt;br&gt;
will trade the strategy live doesn't have access to next year's&lt;br&gt;
returns — only to today's beliefs. The point of correcting for&lt;br&gt;
biases isn't to make the backtest look worse; it's to make the&lt;br&gt;
backtest tell you something true about what to expect.&lt;/p&gt;

&lt;p&gt;If after correcting for all of the above, your strategy still&lt;br&gt;
shows a clean edge: trade a small amount of real money for six&lt;br&gt;
months and see if the live numbers match. If they don't, you've&lt;br&gt;
learned the cheap version of the lesson everyone else learns the&lt;br&gt;
expensive way.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://pickuma.com/posts/backtest-data-biases-that-ruin-equity-research/?utm_source=devto&amp;amp;utm_medium=crosspost&amp;amp;utm_campaign=blog" rel="noopener noreferrer"&gt;pickuma.com&lt;/a&gt;. Subscribe to &lt;a href="https://pickuma.com/rss.xml" rel="noopener noreferrer"&gt;the RSS&lt;/a&gt; or follow &lt;a href="https://bsky.app/profile/pickuma.bsky.social" rel="noopener noreferrer"&gt;@pickuma.bsky.social&lt;/a&gt; for new reviews.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>investing</category>
      <category>finance</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Index Funds, ETFs, Mutual Funds: What Actually Differs (and When It Matters)</title>
      <dc:creator>pickuma</dc:creator>
      <pubDate>Tue, 19 May 2026 05:22:57 +0000</pubDate>
      <link>https://forem.com/pickuma/index-funds-etfs-mutual-funds-what-actually-differs-and-when-it-matters-1077</link>
      <guid>https://forem.com/pickuma/index-funds-etfs-mutual-funds-what-actually-differs-and-when-it-matters-1077</guid>
      <description>&lt;p&gt;The marketing for retail investment products collapses three&lt;br&gt;
distinct things into one fuzzy idea: "passive, low-cost, set it&lt;br&gt;
and forget it." The labels — index fund, ETF, mutual fund — get&lt;br&gt;
used interchangeably even though they describe different&lt;br&gt;
structures with different mechanics.&lt;/p&gt;

&lt;p&gt;For most people most of the time, the difference is small enough&lt;br&gt;
to ignore. For some people some of the time, the difference is&lt;br&gt;
big enough to matter. Here's where the lines actually are.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick definitions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mutual fund:&lt;/strong&gt; a pooled investment vehicle where shares are
bought from and redeemed by the fund company at the day's NAV
(net asset value). Settles end-of-day, not intraday.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ETF (exchange-traded fund):&lt;/strong&gt; also a pooled vehicle, but
shares trade on an exchange like a stock. Settles intraday.
Uses an "authorized participant" creation/redemption mechanism
that has tax implications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Index fund:&lt;/strong&gt; a strategy descriptor, not a structure. An
index fund tracks a benchmark (S&amp;amp;P 500, total market, etc.).
Index funds can be either mutual funds or ETFs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So "mutual fund vs ETF" is a structural question. "Index fund vs&lt;br&gt;
active fund" is a strategy question. They cut across each other.&lt;/p&gt;

&lt;h2&gt;
  
  
  Side-by-side
&lt;/h2&gt;

&lt;p&gt;The tax line is the one most retail investors don't think about&lt;br&gt;
and shouldn't ignore.&lt;/p&gt;

&lt;h2&gt;
  
  
  The tax structure difference, briefly
&lt;/h2&gt;

&lt;p&gt;When investors redeem mutual fund shares, the fund may have to&lt;br&gt;
sell underlying holdings to meet the redemption. Those sales&lt;br&gt;
generate capital gains, which the fund distributes to &lt;em&gt;all&lt;/em&gt;&lt;br&gt;
remaining shareholders at year-end. You can owe tax on a fund&lt;br&gt;
you've held for years even if you didn't sell a thing.&lt;/p&gt;

&lt;p&gt;ETFs use a creation/redemption mechanism with authorized&lt;br&gt;
participants where shares are exchanged for baskets of underlying&lt;br&gt;
securities "in kind." That largely sidesteps the capital-gains&lt;br&gt;
distribution problem. In taxable accounts, this is often the&lt;br&gt;
single biggest practical difference.&lt;/p&gt;

&lt;p&gt;In retirement accounts (401(k), IRA), the distinction is&lt;br&gt;
irrelevant because the account itself shields the gains.&lt;/p&gt;

&lt;h2&gt;
  
  
  When the difference matters
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Taxable brokerage account.&lt;/strong&gt; ETF wins on tax efficiency, by
enough to justify a 10–15 bps expense-ratio premium in many
cases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;401(k) menu.&lt;/strong&gt; You usually only have mutual fund options
anyway. Pick the cheapest broad-market index option; the
structural question is moot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fractional dollar investing.&lt;/strong&gt; Some brokers let you buy
fractional ETF shares; some don't. Mutual funds always settle
in dollar amounts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Active strategy access.&lt;/strong&gt; Many active strategies are only
available as mutual funds. If you specifically want a
particular manager, you may not have a choice.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When it doesn't matter as much as people think
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Returns of a broadly equivalent index fund vs ETF over a
decade.&lt;/strong&gt; Within 10–30 basis points for the same underlying
index. The tax difference dominates the return difference for
taxable accounts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expense ratios.&lt;/strong&gt; The gap between mutual fund and ETF
expense ratios on broad indexes has closed dramatically over
the last fifteen years. A broad-market mutual fund and the
corresponding ETF often charge nearly the same.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;The most common mistake in this space isn't structural — it's&lt;br&gt;
holding actively managed mutual funds in a taxable account.&lt;br&gt;
Annual capital-gains distributions plus higher expense ratios&lt;br&gt;
compound badly. If you're in that position, the question to&lt;br&gt;
research first is "would an equivalent ETF lower my tax bill,"&lt;br&gt;
not "is ETF or mutual fund better in general."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What people get wrong
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;"ETFs are riskier because they trade intraday."&lt;/strong&gt; Not really.
Intraday liquidity is a feature, not a leverage source. The
underlying portfolio is what determines risk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Index funds always beat active funds."&lt;/strong&gt; On average, over
long horizons, after fees, yes — but "always" is too strong.
The S&amp;amp;P-vs-active comparison varies by asset class, decade,
and the particular cohort of active managers in the study.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Mutual funds are obsolete."&lt;/strong&gt; They aren't, especially in
retirement accounts and for active strategies. They're a
structure, not a relic.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The shortest useful summary
&lt;/h2&gt;

&lt;p&gt;Pick the structure that fits where the money lives. Taxable&lt;br&gt;
account → ETF, almost always. Retirement account → whichever&lt;br&gt;
your plan offers, usually mutual fund. Active manager you&lt;br&gt;
specifically want → mutual fund, accept the trade-offs. The&lt;br&gt;
structure question matters less than picking the right index&lt;br&gt;
and keeping costs low.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://pickuma.com/posts/index-funds-etfs-mutual-funds-what-differs/?utm_source=devto&amp;amp;utm_medium=crosspost&amp;amp;utm_campaign=blog" rel="noopener noreferrer"&gt;pickuma.com&lt;/a&gt;. Subscribe to &lt;a href="https://pickuma.com/rss.xml" rel="noopener noreferrer"&gt;the RSS&lt;/a&gt; or follow &lt;a href="https://bsky.app/profile/pickuma.bsky.social" rel="noopener noreferrer"&gt;@pickuma.bsky.social&lt;/a&gt; for new reviews.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>investing</category>
      <category>finance</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>What Diversification Actually Buys You (and What It Doesn't)</title>
      <dc:creator>pickuma</dc:creator>
      <pubDate>Tue, 19 May 2026 05:21:41 +0000</pubDate>
      <link>https://forem.com/pickuma/what-diversification-actually-buys-you-and-what-it-doesnt-3nd</link>
      <guid>https://forem.com/pickuma/what-diversification-actually-buys-you-and-what-it-doesnt-3nd</guid>
      <description>&lt;p&gt;"Diversification" is one of those finance words that does a lot&lt;br&gt;
of marketing labor without much teaching labor. Every robo-&lt;br&gt;
advisor mentions it. Every target-date fund's pitch implies it.&lt;br&gt;
The definition that actually matters — what diversification does&lt;br&gt;
and doesn't do — tends to get lost in the slogan.&lt;/p&gt;

&lt;p&gt;The short version: diversification reduces the risk you don't&lt;br&gt;
get paid for taking. It doesn't reduce all risk. The distinction&lt;br&gt;
matters most exactly when people forget about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The mechanical idea
&lt;/h2&gt;

&lt;p&gt;If you hold two assets whose returns are perfectly correlated,&lt;br&gt;
the portfolio variance equals the weighted average of the&lt;br&gt;
individual variances. You've diluted nothing.&lt;/p&gt;

&lt;p&gt;If you hold two assets whose returns are less than perfectly&lt;br&gt;
correlated, the portfolio variance is &lt;em&gt;lower&lt;/em&gt; than the weighted&lt;br&gt;
average. The amount of "free" risk reduction depends on how&lt;br&gt;
uncorrelated the assets are.&lt;/p&gt;

&lt;p&gt;That's diversification's claim: lower portfolio risk without&lt;br&gt;
lower expected return. It's one of the few things in investing&lt;br&gt;
that actually qualifies as a free lunch — but only within&lt;br&gt;
limits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Idiosyncratic vs systematic risk
&lt;/h2&gt;

&lt;p&gt;The standard breakdown:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Idiosyncratic (specific) risk&lt;/strong&gt; — the risk that &lt;em&gt;one
company&lt;/em&gt; fails for reasons specific to it. Accounting fraud,
CEO scandal, a failed product launch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Systematic (market) risk&lt;/strong&gt; — the risk that &lt;em&gt;everything&lt;/em&gt;
drops together. Recession, rate shock, geopolitical event.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Diversification across enough individual stocks within an asset&lt;br&gt;
class eliminates most idiosyncratic risk. Holding 30–50 stocks&lt;br&gt;
covers most of it; holding 500 covers nearly all of it.&lt;/p&gt;

&lt;p&gt;It cannot eliminate systematic risk. When the broad market&lt;br&gt;
drops 30%, your diversified portfolio of US large-cap stocks&lt;br&gt;
also drops roughly 30%. The fact that you held 500 names instead&lt;br&gt;
of 1 doesn't help in that scenario.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the slogan breaks: correlation under stress
&lt;/h2&gt;

&lt;p&gt;The number that diversification is built on — the correlation&lt;br&gt;
between assets — isn't stable. In normal markets, the&lt;br&gt;
correlation between US stocks and international stocks might&lt;br&gt;
sit around 0.5. In a crisis (2008, March 2020, 2022), those&lt;br&gt;
cross-equity correlations spike toward 1.&lt;/p&gt;

&lt;p&gt;"Diversification fails when you need it most" is a real&lt;br&gt;
phenomenon, not just a cliché. The assets that protected you in&lt;br&gt;
calm years can all sell off together in panic months.&lt;/p&gt;

&lt;p&gt;The implication: a portfolio diversified across "things that are&lt;br&gt;
all equity-like" — US stocks, international stocks, REITs,&lt;br&gt;
commodities — is less diversified in a crisis than the calm-&lt;br&gt;
period correlations suggest.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually still diversifies in stress
&lt;/h2&gt;

&lt;p&gt;A short list of asset relationships that have historically held&lt;br&gt;
up reasonably well in past crises:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;High-quality government bonds vs equities.&lt;/strong&gt; Negative
correlation during deflationary panics (notably 2008). Note:
not in inflationary regimes — 2022 broke this.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cash.&lt;/strong&gt; Boring, but uncorrelated by construction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Some long-volatility positions.&lt;/strong&gt; Expensive to hold in calm
periods.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gold (sometimes).&lt;/strong&gt; Inconsistent — works in some crises,
doesn't in others.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The honest summary is that &lt;em&gt;true&lt;/em&gt; crisis diversification is&lt;br&gt;
expensive. It either costs you in calm periods (cash drag,&lt;br&gt;
volatility premium decay) or it's unreliable (gold).&lt;/p&gt;

&lt;h2&gt;
  
  
  What people get wrong
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;"More holdings = more diversification."&lt;/strong&gt; Adding the 200th
S&amp;amp;P 500 name adds almost no diversification — you already
captured the systematic risk by name 30. Adding a &lt;em&gt;different
asset class&lt;/em&gt; would help; adding more of the same kind doesn't.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"60/40 is a diversified portfolio."&lt;/strong&gt; It's two assets. It's
better than 100% stocks for most goals, but it's "lightly
diversified," not "well-diversified" in the academic sense.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Diversification means I won't lose money."&lt;/strong&gt; It means
you'll likely lose less than the unluckiest single bet in a
normal market. It doesn't mean you'll lose nothing in a
market-wide drop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"International diversification doesn't work because
correlations are high."&lt;/strong&gt; Correlations are higher than they
used to be, but not 1.0. The free lunch is smaller, not gone.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The useful framing
&lt;/h2&gt;

&lt;p&gt;Diversification is a tool with a specific job: reduce the&lt;br&gt;
variance of outcomes around the same expected return. It does&lt;br&gt;
that job well within asset classes and partially across asset&lt;br&gt;
classes. It does not do the job of eliminating market risk, and&lt;br&gt;
nothing else does either — at least, not without paying for it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The right question isn't "am I diversified" but "what risks am I&lt;br&gt;
still exposed to, and am I being compensated for them?"&lt;br&gt;
Systematic equity risk is compensated, in expectation, by the&lt;br&gt;
equity risk premium. Single-name risk is not. Diversification is&lt;br&gt;
the mechanism that turns the second kind into the first.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;Diversification is more arithmetic than philosophy. Below a&lt;br&gt;
certain level of holdings it adds a lot. Above that level it&lt;br&gt;
adds little. Across asset classes it helps in calm periods and&lt;br&gt;
partially in stress periods. The job it does is real and worth&lt;br&gt;
doing — the job it doesn't do is the one the marketing implies.&lt;/p&gt;

&lt;p&gt;Knowing the difference is most of what makes diversification&lt;br&gt;
useful in practice.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://pickuma.com/posts/what-diversification-actually-buys-you/?utm_source=devto&amp;amp;utm_medium=crosspost&amp;amp;utm_campaign=blog" rel="noopener noreferrer"&gt;pickuma.com&lt;/a&gt;. Subscribe to &lt;a href="https://pickuma.com/rss.xml" rel="noopener noreferrer"&gt;the RSS&lt;/a&gt; or follow &lt;a href="https://bsky.app/profile/pickuma.bsky.social" rel="noopener noreferrer"&gt;@pickuma.bsky.social&lt;/a&gt; for new reviews.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>investing</category>
      <category>finance</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>SEC EDGAR for Developers: The Free Fundamentals API Hiding in Plain Sight</title>
      <dc:creator>pickuma</dc:creator>
      <pubDate>Tue, 19 May 2026 05:20:26 +0000</pubDate>
      <link>https://forem.com/pickuma/sec-edgar-for-developers-the-free-fundamentals-api-hiding-in-plain-sight-1cbi</link>
      <guid>https://forem.com/pickuma/sec-edgar-for-developers-the-free-fundamentals-api-hiding-in-plain-sight-1cbi</guid>
      <description>&lt;p&gt;You finished the comparison shopping between Polygon and Alpha&lt;br&gt;
Vantage, maybe even signed up for a free tier of each. Now you&lt;br&gt;
want to pull fundamentals — revenue, earnings, free cash flow —&lt;br&gt;
for your screener.&lt;/p&gt;

&lt;p&gt;Don't reach for the paid tier just yet. The SEC publishes every&lt;br&gt;
filing from every public US company through a free, well-&lt;br&gt;
structured JSON API at &lt;code&gt;data.sec.gov&lt;/code&gt;. It's unrated, public, and&lt;br&gt;
the data is straight from the source.&lt;/p&gt;
&lt;h2&gt;
  
  
  What EDGAR actually exposes
&lt;/h2&gt;

&lt;p&gt;Three endpoints do most of the work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/submissions/CIK{cik}.json&lt;/code&gt;&lt;/strong&gt; — every filing a company has
made, with dates, accession numbers, and direct links to the
documents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/api/xbrl/companyfacts/CIK{cik}.json&lt;/code&gt;&lt;/strong&gt; — every reported XBRL
fact for that company, across all filings, indexed by concept
(&lt;code&gt;Revenues&lt;/code&gt;, &lt;code&gt;NetIncomeLoss&lt;/code&gt;, &lt;code&gt;Assets&lt;/code&gt;, etc.) and unit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/api/xbrl/companyconcept/CIK{cik}/us-gaap/{concept}.json&lt;/code&gt;&lt;/strong&gt; —
just one concept across all reported periods.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;code&gt;companyfacts&lt;/code&gt; endpoint is the workhorse. One JSON request&lt;br&gt;
and you have every quarterly and annual fact the company has&lt;br&gt;
filed with the SEC since they switched to XBRL in 2009.&lt;/p&gt;
&lt;h2&gt;
  
  
  The annoying part: CIK lookup
&lt;/h2&gt;

&lt;p&gt;EDGAR keys companies by &lt;strong&gt;CIK&lt;/strong&gt; (Central Index Key), not ticker.&lt;br&gt;
You'll need to maintain or fetch a ticker → CIK map. The SEC&lt;br&gt;
publishes one:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-A&lt;/span&gt; &lt;span class="s1"&gt;'your-name you@example.com'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  https://www.sec.gov/files/company_tickers.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;User-Agent&lt;/code&gt; header is required — EDGAR rate-limits anonymous&lt;br&gt;
requests and asks for an identifying string. They throttle at 10&lt;br&gt;
requests/second across all clients; respect it.&lt;/p&gt;
&lt;h2&gt;
  
  
  A minimal example
&lt;/h2&gt;

&lt;p&gt;Here's the smallest useful thing — pulling the last 4 quarterly&lt;br&gt;
revenues for Apple (CIK &lt;code&gt;0000320193&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;User-Agent&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;side-project you@example.com&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://data.sec.gov/api/xbrl/companyconcept/&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;CIK0000320193/us-gaap/Revenues.json&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;# units may include USD and USD/shares; pick USD
&lt;/span&gt;&lt;span class="n"&gt;usd&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;units&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;USD&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="c1"&gt;# 10-Q quarterly filings only
&lt;/span&gt;&lt;span class="n"&gt;quarterly&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;usd&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;form&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;10-Q&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;quarterly&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;end&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;reverse&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;quarterly&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;end&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;val&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Free, structured, official.&lt;/p&gt;

&lt;h2&gt;
  
  
  When EDGAR wins
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No rate-limit drama&lt;/strong&gt; for any volume a side project can
generate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authoritative&lt;/strong&gt; — straight from filings. No vendor between
you and the company's own numbers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Historical depth&lt;/strong&gt; since 2009 for most large filers, earlier
in some cases.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where EDGAR struggles
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Concept fragmentation.&lt;/strong&gt; Companies don't all use the same
XBRL concept for the same thing. Apple uses &lt;code&gt;Revenues&lt;/code&gt;; some
others have used &lt;code&gt;SalesRevenueNet&lt;/code&gt; or company-specific
extensions. Real cleanup work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Restated filings.&lt;/strong&gt; When a company restates an earlier
quarter, EDGAR contains both the original and the restated
values. Your code has to decide which one is "the truth" for
backtest purposes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Calendar mismatch.&lt;/strong&gt; Companies report on different fiscal
calendars. You can't naively compare one issuer's Q1 ending in
December to another's Q1 ending in September.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No price data.&lt;/strong&gt; EDGAR is filings, not market data. You
still need Polygon, Alpha Vantage, or similar for OHLC.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A reasonable production setup
&lt;/h2&gt;

&lt;p&gt;For a magic-formula-style screener:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Maintain a local &lt;code&gt;cik_map&lt;/code&gt; table (refresh weekly from SEC's
&lt;code&gt;company_tickers.json&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;For each ticker in your universe, fetch &lt;code&gt;companyfacts&lt;/code&gt; once
and cache. Refresh on a quarterly cadence — fundamentals
don't change daily.&lt;/li&gt;
&lt;li&gt;Normalize concepts to your own internal names (&lt;code&gt;revenues&lt;/code&gt;,
&lt;code&gt;net_income&lt;/code&gt;, &lt;code&gt;total_assets&lt;/code&gt;, etc.) with a hand-curated
mapping that tolerates fragmentation.&lt;/li&gt;
&lt;li&gt;Get prices from your paid or free price-data API.&lt;/li&gt;
&lt;li&gt;Run your ranking once a week — it's cheaper than the daily
refresh cadence most tutorials suggest.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;The hardest part of building a fundamentals pipeline is not the&lt;br&gt;
API — it's the concept normalization. Budget more time for&lt;br&gt;
"decide what counts as revenue across 500 issuers" than for&lt;br&gt;
"wire up the HTTP request." Get it wrong and your screener&lt;br&gt;
silently ranks the inconsistent reporters.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Closing note
&lt;/h2&gt;

&lt;p&gt;The fundamentals data that paid APIs charge for is largely a&lt;br&gt;
cleaned-up, normalized version of what EDGAR already gives you&lt;br&gt;
for free. If your project is willing to do the cleanup, EDGAR is&lt;br&gt;
the better foundation. If you'd rather pay a vendor to handle the&lt;br&gt;
normalization, that's also a reasonable choice. Either way,&lt;br&gt;
knowing the raw source exists changes how you think about the&lt;br&gt;
cost of building.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://pickuma.com/posts/sec-edgar-fundamentals-api-for-developers/?utm_source=devto&amp;amp;utm_medium=crosspost&amp;amp;utm_campaign=blog" rel="noopener noreferrer"&gt;pickuma.com&lt;/a&gt;. Subscribe to &lt;a href="https://pickuma.com/rss.xml" rel="noopener noreferrer"&gt;the RSS&lt;/a&gt; or follow &lt;a href="https://bsky.app/profile/pickuma.bsky.social" rel="noopener noreferrer"&gt;@pickuma.bsky.social&lt;/a&gt; for new reviews.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>investing</category>
      <category>finance</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The Boring Math of Compound Returns (And Why Everyone Gets It Wrong)</title>
      <dc:creator>pickuma</dc:creator>
      <pubDate>Tue, 19 May 2026 05:19:10 +0000</pubDate>
      <link>https://forem.com/pickuma/the-boring-math-of-compound-returns-and-why-everyone-gets-it-wrong-h48</link>
      <guid>https://forem.com/pickuma/the-boring-math-of-compound-returns-and-why-everyone-gets-it-wrong-h48</guid>
      <description>&lt;p&gt;Compound interest is the kind of topic that gets called "the&lt;br&gt;
eighth wonder of the world" in motivational graphics. The actual&lt;br&gt;
math is mundane. The most common rules of thumb are subtly&lt;br&gt;
wrong. And the most-shared retirement charts make assumptions&lt;br&gt;
about return paths that real markets rarely deliver.&lt;/p&gt;

&lt;p&gt;This isn't a takedown of compounding — it's a takedown of how&lt;br&gt;
compounding gets explained. The reality is calmer and more&lt;br&gt;
useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  The basic formula isn't the whole story
&lt;/h2&gt;

&lt;p&gt;The textbook compound formula is &lt;code&gt;final = principal × (1 + r)^n&lt;/code&gt;.&lt;br&gt;
That works perfectly if every year delivers exactly &lt;code&gt;r&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Markets don't. Returns vary. The arithmetic average of yearly&lt;br&gt;
returns and the actual compound return are not the same number.&lt;/p&gt;

&lt;h2&gt;
  
  
  Arithmetic vs geometric mean
&lt;/h2&gt;

&lt;p&gt;Take an investment that returns +50% in year one and -50% in&lt;br&gt;
year two.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Arithmetic mean:&lt;/strong&gt; (50% + (-50%)) / 2 = 0%. "Average return
was zero."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geometric mean (actual outcome):&lt;/strong&gt; start with $100, end at
$150, then $75. The compound return is −25% over two years —
about −13.4% per year.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The geometric mean is always ≤ the arithmetic mean, with&lt;br&gt;
equality only when every return is identical. This gap is called&lt;br&gt;
&lt;strong&gt;volatility drag&lt;/strong&gt; or the &lt;strong&gt;variance penalty&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For a roughly stable broad-market portfolio, the gap is small&lt;br&gt;
but not negligible — typically around 1–2% per year. For a&lt;br&gt;
volatile asset (an individual small-cap, a leveraged ETF, a&lt;br&gt;
single cryptocurrency), the gap can be much larger.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters in practice
&lt;/h2&gt;

&lt;p&gt;Most "average return" figures you see in retail finance content&lt;br&gt;
are arithmetic. The wealth you'd actually have is geometric.&lt;br&gt;
Over decades, the difference compounds in the wrong direction.&lt;/p&gt;

&lt;p&gt;A reasonable approximation: &lt;code&gt;geometric ≈ arithmetic − (variance / 2)&lt;/code&gt;.&lt;br&gt;
That subtraction is the variance penalty in dollar form. Over&lt;br&gt;
twenty or thirty years, it's the difference between a clean&lt;br&gt;
projection and the path you'd actually live through.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Rule of 72 (and where it fails)
&lt;/h2&gt;

&lt;p&gt;"Years to double = 72 / interest rate." At 8%, money doubles in&lt;br&gt;
about 9 years. The rule is a Taylor-series approximation that's&lt;br&gt;
accurate around 6–10% and breaks down at higher rates.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;At 12%: rule says 6 years, actual ~6.1. Fine.&lt;/li&gt;
&lt;li&gt;At 20%: rule says 3.6 years, actual ~3.8. Off.&lt;/li&gt;
&lt;li&gt;At 50%: rule says 1.44 years, actual ~1.7. Misleading.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For low rates, the rule slightly overestimates the doubling&lt;br&gt;
time. The "Rule of 70" is closer for very low rates; the "Rule&lt;br&gt;
of 72" is the practical compromise because 72 has more divisors&lt;br&gt;
and gives nicer mental arithmetic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sequence of returns risk
&lt;/h2&gt;

&lt;p&gt;Two retirees with identical average returns can end up with very&lt;br&gt;
different outcomes if the returns arrive in different orders.&lt;/p&gt;

&lt;p&gt;If you retire just before a bad decade for equities and are&lt;br&gt;
drawing down a portfolio, the drawdowns compound against you in&lt;br&gt;
a way that doesn't reverse just because returns recover later.&lt;br&gt;
The withdrawals from a depressed portfolio book the losses&lt;br&gt;
permanently.&lt;/p&gt;

&lt;p&gt;This is why fixed-rate retirement projections ("assume 7% return&lt;br&gt;
forever") overstate the safety of withdrawal rates. The same 7%&lt;br&gt;
&lt;em&gt;delivered with realistic year-to-year variance&lt;/em&gt; gives a wider&lt;br&gt;
distribution of outcomes, with the bad tail materially worse&lt;br&gt;
than the smooth path implies.&lt;/p&gt;

&lt;p&gt;The fix isn't to abandon compounding — it's to use &lt;strong&gt;stochastic&lt;/strong&gt;&lt;br&gt;
projections (Monte Carlo) instead of single-path ones,&lt;br&gt;
especially near and during the withdrawal phase.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the "start early" charts get right and wrong
&lt;/h2&gt;

&lt;p&gt;The right part: time in the market matters. Contributing&lt;br&gt;
consistently from age 25 to 35 (then nothing) often ends up with&lt;br&gt;
more than contributing the same amount per year from 35 to 65,&lt;br&gt;
assuming the same return path.&lt;/p&gt;

&lt;p&gt;The misleading part: that calculation assumes a flat compound&lt;br&gt;
return for the entire period. Real return paths have decades-&lt;br&gt;
long regimes — some decades have been great for US equities,&lt;br&gt;
some have been bad. The "start early" math is correct in&lt;br&gt;
expectation; the actual outcome for any specific cohort depends&lt;br&gt;
heavily on which decades they were contributing during.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The single most useful rule of thumb for back-of-envelope&lt;br&gt;
compounding is: doubling at 7% takes ~10 years (slightly under),&lt;br&gt;
quadrupling takes ~20, an 8x takes ~30. Memorize that grid and&lt;br&gt;
you can sketch realistic outcomes without a calculator.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What this means for decisions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Don't conflate the average return you read in marketing copy
with the wealth path you'd actually experience.&lt;/strong&gt; Volatility
drag is small per year and large over decades.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't use Monte Carlo for everything&lt;/strong&gt;, but don't use
single-path 7%-forever models when the answer matters. The
smoothness hides risk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time in the market is a real lever&lt;/strong&gt;, but the magnitude
depends on the regime you're contributing during, not just on
the number of years.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Compounding is real, useful, and reliable. The mystification&lt;br&gt;
around it is the problem.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://pickuma.com/posts/boring-math-of-compound-returns/?utm_source=devto&amp;amp;utm_medium=crosspost&amp;amp;utm_campaign=blog" rel="noopener noreferrer"&gt;pickuma.com&lt;/a&gt;. Subscribe to &lt;a href="https://pickuma.com/rss.xml" rel="noopener noreferrer"&gt;the RSS&lt;/a&gt; or follow &lt;a href="https://bsky.app/profile/pickuma.bsky.social" rel="noopener noreferrer"&gt;@pickuma.bsky.social&lt;/a&gt; for new reviews.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>investing</category>
      <category>finance</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>What 'Rules-Based Investing' Actually Means (And What It Doesn't)</title>
      <dc:creator>pickuma</dc:creator>
      <pubDate>Tue, 19 May 2026 05:06:15 +0000</pubDate>
      <link>https://forem.com/pickuma/what-rules-based-investing-actually-means-and-what-it-doesnt-moe</link>
      <guid>https://forem.com/pickuma/what-rules-based-investing-actually-means-and-what-it-doesnt-moe</guid>
      <description>&lt;p&gt;Open any investing subreddit and you'll find someone asking which&lt;br&gt;
"AI-powered" trading service to subscribe to. The marketing makes&lt;br&gt;
it sound like there's a secret algorithm sitting behind a paywall.&lt;br&gt;
There usually isn't. Most of what gets sold as "AI investing" is&lt;br&gt;
the same thing the old quant funds were doing in the early 2000s,&lt;br&gt;
repackaged with newer buzzwords.&lt;/p&gt;

&lt;p&gt;The actual category most of these strategies belong to is&lt;br&gt;
&lt;em&gt;rules-based investing&lt;/em&gt; — and it's worth understanding what that&lt;br&gt;
means, because the term covers both very sensible discipline and&lt;br&gt;
very silly product marketing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one-line definition
&lt;/h2&gt;

&lt;p&gt;A rules-based investor decides what trigger means what action&lt;br&gt;
&lt;strong&gt;before&lt;/strong&gt; the event happens. The rule is written down. When the&lt;br&gt;
trigger fires, the action is taken, regardless of how the investor&lt;br&gt;
feels in the moment.&lt;/p&gt;

&lt;p&gt;That's it. There's no claim of secret knowledge. There's no claim&lt;br&gt;
about predicting markets. The whole point is to make the future&lt;br&gt;
decision &lt;em&gt;now&lt;/em&gt;, when emotions aren't loaded.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it actually looks like
&lt;/h2&gt;

&lt;p&gt;Examples that fit the definition:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Index rebalancing.&lt;/strong&gt; "On the first trading day of January, sell
whatever is now more than 5% above its target weight in the
portfolio and buy whatever is more than 5% below." That's a rule.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dollar-cost averaging.&lt;/strong&gt; "On the 15th of every month, buy a
fixed dollar amount of a broad-market ETF." Also a rule.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stop-losses.&lt;/strong&gt; "If a position drops 10% from the entry price,
sell." A rule, applied without renegotiation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The magic formula.&lt;/strong&gt; "Once a year, rank stocks by earnings
yield and return on capital, hold the top 30 for a year." Joel
Greenblatt's version — also a rule.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trend-following.&lt;/strong&gt; "If the 50-day moving average crosses above
the 200-day, increase equity allocation by X%." A more
complicated trigger, same shape.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Notice that none of these claim to predict anything. They're all&lt;br&gt;
about &lt;em&gt;what to do&lt;/em&gt; in pre-specified situations.&lt;/p&gt;

&lt;h2&gt;
  
  
  What rules-based investing isn't
&lt;/h2&gt;

&lt;p&gt;Three common misuses of the term:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;It's not high-frequency or algorithmic trading.&lt;/strong&gt; HFT is a
different sport entirely — sub-millisecond latency arbitrage,
market-making, statistical exploitation of order-book
microstructure. You will not do that from your laptop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It's not "AI investing."&lt;/strong&gt; A neural network choosing stocks
based on price patterns is also rules-based — just with an
opaque rule. The label is marketing, not mechanism.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It's not a guarantee.&lt;/strong&gt; A rule that has worked for a decade
can fail in the eleventh year. Rules-based investing reduces
certain kinds of mistakes; it does not eliminate all of them.
Past performance is not predictive.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why it actually works
&lt;/h2&gt;

&lt;p&gt;The case for writing your rules down has nothing to do with&lt;br&gt;
finding hidden alpha. It's behavioral.&lt;/p&gt;

&lt;p&gt;When markets move violently, your brain wants to do something.&lt;br&gt;
Selling at the bottom feels safe; buying the dip feels brave; both&lt;br&gt;
feelings are misleading more often than they are useful. A&lt;br&gt;
pre-committed rule short-circuits this. You execute the action&lt;br&gt;
because the action was decided when you were calm.&lt;/p&gt;

&lt;p&gt;The widely cited Fidelity Magellan observation — that the average&lt;br&gt;
investor in that fund underperformed the fund itself, because they&lt;br&gt;
bought after rallies and sold after drawdowns — is the canonical&lt;br&gt;
illustration. The rule that says "don't react to last quarter's&lt;br&gt;
returns" is unsexy and reliable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where rules-based strategies fail
&lt;/h2&gt;

&lt;p&gt;Three failure modes are worth knowing before you commit to one:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backtest overfitting.&lt;/strong&gt; A rule that worked beautifully in
historical data may have been fit to the noise of that data.
The smaller and more recent the backtest window, the less you
should trust the result. Walk-forward testing helps, but it
doesn't fully cure the disease.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regime change.&lt;/strong&gt; Rules calibrated to one market environment
can silently break when the environment shifts. The 60/40
stocks-and-bonds rule that ran smoothly from 1980 to 2020 came
under real strain in 2022 when both legs sold off together.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Abandonment under stress.&lt;/strong&gt; A rule only works if you actually
follow it. A stop-loss you ignore the second time it fires is
worse than no stop-loss at all.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;A "rule" you keep changing is not a rule. If you find yourself&lt;br&gt;
adjusting parameters because the recent results were uncomfortable,&lt;br&gt;
you're back to discretionary investing — just with extra steps and&lt;br&gt;
the illusion of discipline. Pick rules you can survive emotionally,&lt;br&gt;
not just rules that look best in backtest.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How to start without overthinking it
&lt;/h2&gt;

&lt;p&gt;If you want to put a rule in place this month:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Pick a frequency.&lt;/strong&gt; Monthly is a common starting cadence.
Weekly is too noisy for most people; quarterly is fine and
reduces transaction costs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick an asset universe.&lt;/strong&gt; Broad index ETFs are sufficient
for most people. You don't need to start with individual
stocks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write the rule down.&lt;/strong&gt; Two sentences, in a text file. Date
it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Execute and don't second-guess for at least four cycles.&lt;/strong&gt;
If after a year the rule isn't working, that's information.
If after a month you're tempted to change it, that's you, not
the rule.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's the entire methodology. The rest is patience.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest closing
&lt;/h2&gt;

&lt;p&gt;Rules-based investing isn't magic. It doesn't outperform the&lt;br&gt;
market on average — by construction, broad rule-following can't.&lt;br&gt;
What it does is make your behavior more predictable than your&lt;br&gt;
emotions, which for most people is the single largest improvement&lt;br&gt;
available without a finance degree.&lt;/p&gt;

&lt;p&gt;That's a real edge. It just isn't the edge the product marketing&lt;br&gt;
implies.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://pickuma.com/posts/what-rules-based-investing-actually-means/?utm_source=devto&amp;amp;utm_medium=crosspost&amp;amp;utm_campaign=blog" rel="noopener noreferrer"&gt;pickuma.com&lt;/a&gt;. Subscribe to &lt;a href="https://pickuma.com/rss.xml" rel="noopener noreferrer"&gt;the RSS&lt;/a&gt; or follow &lt;a href="https://bsky.app/profile/pickuma.bsky.social" rel="noopener noreferrer"&gt;@pickuma.bsky.social&lt;/a&gt; for new reviews.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>investing</category>
      <category>finance</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Polygon vs Alpha Vantage: Which Stock Data API Fits a Side-Project Budget</title>
      <dc:creator>pickuma</dc:creator>
      <pubDate>Tue, 19 May 2026 05:04:59 +0000</pubDate>
      <link>https://forem.com/pickuma/polygon-vs-alpha-vantage-which-stock-data-api-fits-a-side-project-budget-57d1</link>
      <guid>https://forem.com/pickuma/polygon-vs-alpha-vantage-which-stock-data-api-fits-a-side-project-budget-57d1</guid>
      <description>&lt;p&gt;You want to build a stock screener. Maybe a magic-formula scan, maybe&lt;br&gt;
a custom backtest, maybe just a dashboard that pings the close of your&lt;br&gt;
watchlist every evening. You hit the data wall fast: free tiers from&lt;br&gt;
the big-name APIs come with throttles or restrictions that turn a&lt;br&gt;
weekend project into a debugging marathon.&lt;/p&gt;

&lt;p&gt;The two most common entry points for developer-side stock data are&lt;br&gt;
&lt;strong&gt;Polygon.io&lt;/strong&gt; and &lt;strong&gt;Alpha Vantage&lt;/strong&gt;. They occupy slightly different&lt;br&gt;
positions — Polygon is the modern, well-funded data provider with&lt;br&gt;
fast-moving infrastructure; Alpha Vantage is the older, broader-coverage&lt;br&gt;
service that has been the default "free tier exists" answer since 2017.&lt;br&gt;
Which one fits depends almost entirely on what you're building.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you actually need from a stock data API
&lt;/h2&gt;

&lt;p&gt;For most side projects, three things matter more than anything else:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;What does the free tier let you do?&lt;/strong&gt; A free tier that returns
end-of-day OHLC for the full US universe is enough to run a
magic-formula screen. A free tier rate-limited to 25 requests a day
is not.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How wide is the coverage?&lt;/strong&gt; Are you only looking at US stocks, or
do you need options chains, forex, crypto, futures, or fundamentals?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is the developer experience smooth?&lt;/strong&gt; API key issuance, SDK
quality, documentation freshness, response shape. The two providers
are not equivalent here.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Latency, historical depth, and tick-level data also matter — but if&lt;br&gt;
you're a side-project developer, you almost certainly don't need&lt;br&gt;
microsecond-grade data. Daily or minute-level is plenty.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing and free tiers at a glance
&lt;/h2&gt;

&lt;p&gt;The shape below reflects each provider's published tiers at the time&lt;br&gt;
of writing. Pricing pages change — verify before you commit.&lt;/p&gt;

&lt;p&gt;The most important thing this table hides: Alpha Vantage's free-tier&lt;br&gt;
limit dropped sharply over the last few years. If you're following an&lt;br&gt;
older tutorial that assumes 500 requests a day, that's no longer the&lt;br&gt;
deal. Polygon's free tier, by contrast, is limited per-minute rather&lt;br&gt;
than per-day, which is more forgiving for development but less&lt;br&gt;
forgiving for a hosted job.&lt;/p&gt;

&lt;h2&gt;
  
  
  Coverage breakdown
&lt;/h2&gt;

&lt;h3&gt;
  
  
  US equities (the common case)
&lt;/h3&gt;

&lt;p&gt;Both providers have full US equity coverage on paid tiers. On free&lt;br&gt;
tiers, both work — Polygon gives you per-minute throughput for fewer&lt;br&gt;
endpoints; Alpha Vantage gives you broader endpoints with a stricter&lt;br&gt;
daily cap.&lt;/p&gt;

&lt;h3&gt;
  
  
  Options
&lt;/h3&gt;

&lt;p&gt;Polygon is the clearer pick on paid tiers. Full options chains,&lt;br&gt;
greeks, and historical option prices are available on their higher&lt;br&gt;
plans. Alpha Vantage exposes options data on its Premium plans, but&lt;br&gt;
the shape is less ergonomic for chain-walking.&lt;/p&gt;

&lt;h3&gt;
  
  
  Forex and crypto
&lt;/h3&gt;

&lt;p&gt;Alpha Vantage gives you forex and crypto on the free tier, within the&lt;br&gt;
daily cap. Polygon requires the higher Stocks-plus-Currencies or&lt;br&gt;
Advanced plan. If your hobby project is a multi-asset dashboard,&lt;br&gt;
Alpha Vantage's free tier is a real advantage here.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fundamentals
&lt;/h3&gt;

&lt;p&gt;Both expose basic fundamentals (income statement, balance sheet, cash&lt;br&gt;
flow). Polygon's fundamentals data is generally newer and better&lt;br&gt;
structured. Alpha Vantage's was the de facto standard for free&lt;br&gt;
fundamentals before SEC EDGAR's API matured — today, EDGAR is often&lt;br&gt;
the better source for free fundamentals straight from filings.&lt;/p&gt;

&lt;h2&gt;
  
  
  Developer experience
&lt;/h2&gt;

&lt;p&gt;Sign-up flow is similar: fill a form, get a key. The differences show&lt;br&gt;
up in everyday use.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Polygon&lt;/strong&gt; has typed SDKs in Python, Go, and JavaScript that map
closely to the REST API. Docs render with example responses.
WebSocket streaming is straightforward.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alpha Vantage&lt;/strong&gt; has a thinner SDK story (the community Python
package is the most-used). Docs are denser and older-looking. The
CSV vs JSON toggle is per-endpoint, which surprises people.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're prototyping and want to be reading clean JSON in your&lt;br&gt;
editor within five minutes, Polygon's developer experience is&lt;br&gt;
noticeably ahead in 2026. If you're already in a Python notebook with&lt;br&gt;
&lt;code&gt;pandas-datareader&lt;/code&gt; set up, Alpha Vantage feels familiar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rate limits in practice
&lt;/h2&gt;

&lt;p&gt;A side-project screener doesn't need to hammer either API. But the&lt;br&gt;
shape of the limit affects how you structure your code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Polygon's per-minute rate limit means a sleep-and-retry loop is
fine. You can scan several thousand tickers overnight on the free
tier if you're patient.&lt;/li&gt;
&lt;li&gt;Alpha Vantage's per-day limit makes the same scan impossible
without a paid tier. Premium raises the cap by an order of
magnitude or more.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;For a magic-formula style scan that needs trailing financial data on&lt;br&gt;
several thousand US tickers, the SEC EDGAR submissions API is free,&lt;br&gt;
well-structured, and has no rate-limit drama. Use it for fundamentals;&lt;br&gt;
reserve Polygon or Alpha Vantage for the price data.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  When to pick which
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Polygon&lt;/strong&gt; if: you want fast iteration on US equities or options,
expect to graduate to a paid plan within a few weeks, and care
about modern developer experience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alpha Vantage&lt;/strong&gt; if: you need forex or crypto on a free tier,
you're scripting in Python notebooks, or you only need a handful
of end-of-day quotes per day and can live with the 25-call cap.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you can't decide, sign up for both — both keys are free, and&lt;br&gt;
running them side by side for a weekend will surface the friction&lt;br&gt;
points that actually matter to your project before you spend any&lt;br&gt;
money.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest caveats
&lt;/h2&gt;

&lt;p&gt;Stock data APIs change pricing, restructure tiers, and tighten&lt;br&gt;
limits without much warning. The shape of this comparison should be&lt;br&gt;
stable for a year or two; the specific numbers may not be. Before&lt;br&gt;
you architect anything load-bearing on either provider, verify the&lt;br&gt;
current free-tier and paid-tier limits on their pricing pages, and&lt;br&gt;
budget for the price step-up if your project takes off.&lt;/p&gt;

&lt;p&gt;And the usual reminder: better data does not become a trading edge&lt;br&gt;
by itself. The same close prices everyone has access to are still&lt;br&gt;
close prices everyone has access to.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://pickuma.com/posts/polygon-vs-alpha-vantage-stock-data-apis-2026/?utm_source=devto&amp;amp;utm_medium=crosspost&amp;amp;utm_campaign=blog" rel="noopener noreferrer"&gt;pickuma.com&lt;/a&gt;. Subscribe to &lt;a href="https://pickuma.com/rss.xml" rel="noopener noreferrer"&gt;the RSS&lt;/a&gt; or follow &lt;a href="https://bsky.app/profile/pickuma.bsky.social" rel="noopener noreferrer"&gt;@pickuma.bsky.social&lt;/a&gt; for new reviews.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>investing</category>
      <category>finance</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Why we're writing about investing on a developer tools blog</title>
      <dc:creator>pickuma</dc:creator>
      <pubDate>Tue, 19 May 2026 04:53:31 +0000</pubDate>
      <link>https://forem.com/pickuma/why-were-writing-about-investing-on-a-developer-tools-blog-52d1</link>
      <guid>https://forem.com/pickuma/why-were-writing-about-investing-on-a-developer-tools-blog-52d1</guid>
      <description>&lt;p&gt;Pickuma started as a place to write down what actually happened when we&lt;br&gt;
ran a tool first-hand. That habit — try, document, disclose — turns out&lt;br&gt;
to map cleanly onto investing too, so we're opening a small second lane:&lt;br&gt;
&lt;strong&gt;Finance&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's in scope
&lt;/h2&gt;

&lt;p&gt;Three kinds of posts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Developer × investor crossovers.&lt;/strong&gt; Reviews of data APIs (Polygon,
Alpha Vantage), screener tooling, and the occasional "build a
stock screener in Postgres" walkthrough.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Investor guides.&lt;/strong&gt; Hands-on takes on the boring infrastructure of
investing — accounts, fees, what a piece of jargon actually means.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Market essays.&lt;/strong&gt; Arguments about where the macro story might be
wrong, grounded in numbers we can show, not vibes.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What's not in scope
&lt;/h2&gt;

&lt;p&gt;We're not picking stocks. No target prices, no "this is the one"&lt;br&gt;
essays, no guaranteed returns. If a post is making a directional&lt;br&gt;
argument, it'll say what would prove it wrong.&lt;/p&gt;

&lt;p&gt;We're not giving tax or legal advice. Rules vary by jurisdiction.&lt;br&gt;
Ask a CPA, not a blog.&lt;/p&gt;

&lt;h2&gt;
  
  
  The editorial guardrails
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Every finance article carries the &lt;strong&gt;Not investment advice&lt;/strong&gt; notice
at the footer (rendered automatically).&lt;/li&gt;
&lt;li&gt;If we hold a position in something we're discussing, we say so
inline.&lt;/li&gt;
&lt;li&gt;Live prices get a date and source, or they don't show up.&lt;/li&gt;
&lt;li&gt;AI assistance is disclosed the same way as on every other Pickuma
post.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's it. The first reviews and essays will follow shortly.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://pickuma.com/posts/why-finance-on-pickuma/?utm_source=devto&amp;amp;utm_medium=crosspost&amp;amp;utm_campaign=blog" rel="noopener noreferrer"&gt;pickuma.com&lt;/a&gt;. Subscribe to &lt;a href="https://pickuma.com/rss.xml" rel="noopener noreferrer"&gt;the RSS&lt;/a&gt; or follow &lt;a href="https://bsky.app/profile/pickuma.bsky.social" rel="noopener noreferrer"&gt;@pickuma.bsky.social&lt;/a&gt; for new reviews.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>investing</category>
      <category>finance</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Immich Review: Self-Hosted Google Photos Alternative for Developers</title>
      <dc:creator>pickuma</dc:creator>
      <pubDate>Mon, 18 May 2026 14:33:03 +0000</pubDate>
      <link>https://forem.com/pickuma/immich-review-self-hosted-google-photos-alternative-for-developers-1279</link>
      <guid>https://forem.com/pickuma/immich-review-self-hosted-google-photos-alternative-for-developers-1279</guid>
      <description>&lt;h2&gt;
  
  
  What Immich Is
&lt;/h2&gt;

&lt;p&gt;Immich is an open-source, self-hosted photo and video backup platform. The project ships a server, a web client, and native iOS and Android apps under AGPL-3.0. The mobile apps mirror the Google Photos flow: grant photo library access, and the app uploads new captures to a server you run. The web UI organizes the resulting library with albums, places, faces, and natural-language search.&lt;/p&gt;

&lt;p&gt;The repo on GitHub ships a &lt;code&gt;docker-compose.yml&lt;/code&gt; and a small set of services. Standing the stack up takes one command on any host with Docker installed. The team has been shipping the project publicly since 2022 and has crossed 60,000 GitHub stars, with a monthly release cadence.&lt;/p&gt;

&lt;p&gt;Three audiences care about this project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Households leaving Google Photos because of the 15 GB shared quota or the unease about cloud-side ML running on private photos.&lt;/li&gt;
&lt;li&gt;Homelabbers who already run a NAS or a small server and want a "photos app" tier on top of their existing storage.&lt;/li&gt;
&lt;li&gt;Developers who want an HTTP API and event hooks for their own automation — bulk imports, custom albums, family-facing share endpoints.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What makes Immich worth a review now rather than a year ago: stability landed, the mobile apps stopped requiring background-task workarounds on iOS for normal use, and the ML stack got faster CPU inference paths via ONNX runtime updates. If you bounced off Immich in 2023 because every other release broke your database schema, the picture is different today.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture and Deployment
&lt;/h2&gt;

&lt;p&gt;The reference deployment is six containers, all defined in the example compose file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;immich-server&lt;/code&gt; — the NestJS API plus microservices for jobs, ingest, and notifications.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;immich-machine-learning&lt;/code&gt; — a Python service that runs ML models (face detection, face embeddings, CLIP image and text embeddings).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;redis&lt;/code&gt; — job queue and short-term cache.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;postgres&lt;/code&gt; — metadata, with the &lt;code&gt;pgvecto.rs&lt;/code&gt; or &lt;code&gt;pgvector&lt;/code&gt; extension for vector search.&lt;/li&gt;
&lt;li&gt;A web client served from the server container.&lt;/li&gt;
&lt;li&gt;An optional reverse proxy of your choice.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You point &lt;code&gt;UPLOAD_LOCATION&lt;/code&gt; at a directory on the host, set a Postgres password, and run &lt;code&gt;docker compose up -d&lt;/code&gt;. The web UI is reachable in under a minute on a small server. First-run setup creates an admin user and lets you invite additional users from the settings page.&lt;/p&gt;

&lt;p&gt;Originals are stored on the filesystem and never re-encoded. JPEG, HEIC, most RAW formats via libraw, and the common video containers (MP4, MOV, ProRes) all import as-is. The server generates a thumbnail and a larger preview alongside each original, so a 50 GB phone roll lands closer to 65 GB on disk after processing.&lt;/p&gt;

&lt;p&gt;Postgres holds metadata and the vector index. The machine learning container drives the first-run cost: bulk-importing an existing library puts every image through face detection, face embedding, and CLIP embedding. On a 4-core x86 box, an import of around 100,000 photos can take the better part of a day. After that, incremental ingest from phones is near-instant because the queue depth is just the new captures.&lt;/p&gt;

&lt;p&gt;You can run the ML container on GPU via CUDA, OpenVINO, or Apple's CoreML on macOS hosts. The repo documents the configurations. On a homelab box with a discrete GPU, initial import drops from hours to minutes.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Immich is not a backup tool — it is the photos app. Your Immich server is one drive failure away from data loss. Set up restic, kopia, or rclone to push to S3, Backblaze B2, or a second disk before you migrate your phone library off Google Photos. The community's most common regret in support channels is skipping this step.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  AI Features and What They Actually Do
&lt;/h2&gt;

&lt;p&gt;Three AI features ship in the box.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Face clustering.&lt;/strong&gt; Every photo goes through RetinaFace for detection and an ArcFace-style model for embeddings. Embeddings get clustered into "people" you can name. You name a cluster once and the label propagates to every other photo in that cluster. Accuracy on adults is good. Embeddings for young children drift as their features change, so expect to merge clusters by hand every few months until they grow up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Smart search.&lt;/strong&gt; CLIP-derived embeddings let you type &lt;code&gt;red bicycle at night&lt;/code&gt; or &lt;code&gt;kitchen with morning light&lt;/code&gt; and get a ranked result list. The search runs over precomputed embeddings stored in Postgres. Latency on libraries under 50,000 photos is sub-second on commodity hardware, and quality on natural-language queries holds up against the equivalent Google Photos search in our spot checks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Duplicate detection.&lt;/strong&gt; Perceptual hashing flags near-duplicates — rotation, compression, and edit variants — for manual review. You confirm or reject each batch from the UI rather than the server deleting anything on its own. Conservative defaults, which is the right call for an irreplaceable archive.&lt;/p&gt;

&lt;p&gt;What the AI does not do today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Text OCR on signs or handwritten notes lags Apple's on-device OCR.&lt;/li&gt;
&lt;li&gt;Auto-generated "memories" reels exist but are skeletal next to Google Photos.&lt;/li&gt;
&lt;li&gt;No voice tagging, AI captions, or generative editing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For developers, the ML container is just an HTTP service. You can call it directly if you want to bolt your own pipelines onto it — for example, generating CLIP embeddings for photos already stored elsewhere and feeding them into the database.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tradeoffs of Self-Hosting
&lt;/h2&gt;

&lt;p&gt;Mobile uploads carry platform constraints. iOS aggressively suspends background uploads, so a roll of 500 new photos may upload across several app opens rather than in one push. The Immich app uses every background API iOS exposes; the ceiling is Apple's, not Immich's. Android is more cooperative but still subject to manufacturer-specific power management.&lt;/p&gt;

&lt;p&gt;The web UI is functional and clearly improving. Album sharing, public links, and collaborative albums all work. Comments and reactions exist but feel plain compared to Google Photos. If you share with non-technical family members, expect a short adjustment period — and consider keeping Google Photos on a free tier as the "share with grandma" path for the first six months.&lt;/p&gt;

&lt;p&gt;Resource footprint is modest at rest and spiky during ML work. A household-scale instance (3–5 users, ~300,000 photos) runs steady-state on 4 GB RAM and 2 vCPUs. Initial import will saturate any CPU you give it; plan for a one-time spike or schedule it overnight.&lt;/p&gt;

&lt;p&gt;Cost arithmetic versus Google One 2 TB ($9.99/month, $99.99/year on annual prepay): a capable Mini PC plus a 4 TB SSD is $300–500 one-time. Add Backblaze B2 offsite at $6/TB/month for proper backup and you spend roughly $144/year for 2 TB of cold copies. Plain hardware payback lands around year three. After that, you own the rails.&lt;/p&gt;

&lt;p&gt;The right question is not whether Immich beats Google Photos on polish — it does not, and it does not need to. The right question is whether owning your photo archive is worth the operational tax of running one more service. For developers who already run a homelab, the answer is usually yes. For everyone else, evaluate honestly before you migrate.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://pickuma.com/posts/immich-review-self-hosted-google-photos-alternative/?utm_source=devto&amp;amp;utm_medium=crosspost&amp;amp;utm_campaign=blog" rel="noopener noreferrer"&gt;pickuma.com&lt;/a&gt;. Subscribe to &lt;a href="https://pickuma.com/rss.xml" rel="noopener noreferrer"&gt;the RSS&lt;/a&gt; or follow &lt;a href="https://bsky.app/profile/pickuma.bsky.social" rel="noopener noreferrer"&gt;@pickuma.bsky.social&lt;/a&gt; for new reviews.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>devops</category>
      <category>cloud</category>
      <category>astro</category>
    </item>
    <item>
      <title>AI Research Slop: How to Filter Signal From the ArXiv Flood</title>
      <dc:creator>pickuma</dc:creator>
      <pubDate>Mon, 18 May 2026 14:31:47 +0000</pubDate>
      <link>https://forem.com/pickuma/ai-research-slop-how-to-filter-signal-from-the-arxiv-flood-5f9j</link>
      <guid>https://forem.com/pickuma/ai-research-slop-how-to-filter-signal-from-the-arxiv-flood-5f9j</guid>
      <description>&lt;p&gt;ArXiv's cs.LG and cs.CL categories now receive several thousand new submissions every month, and a non-trivial slice of that flood is what researchers on r/MachineLearning have started calling "slop": papers that recycle benchmarks, propose marginal deltas over published baselines, or in some cases were partly authored by the LLMs they claim to evaluate. The signal-to-noise ratio is degrading fast enough that people who used to read the daily arxiv mailing now report giving up. If you are trying to stay current as a developer or applied researcher, the question is not whether to filter — it is how to filter without missing the few papers that will reshape your stack six months from now.&lt;/p&gt;

&lt;h2&gt;
  
  
  What slop actually looks like in ML research
&lt;/h2&gt;

&lt;p&gt;Slop is not a single failure mode. It is a cluster.&lt;/p&gt;

&lt;p&gt;The first category is the marginal delta: a paper that tweaks a known architecture, runs it on the same three benchmarks everyone uses, and reports a 0.3-point improvement that may or may not survive a seed change. These papers were always common, but submission volume has multiplied them.&lt;/p&gt;

&lt;p&gt;The second is benchmark reuse without acknowledgment. A model is fine-tuned on data that overlaps with the evaluation set, and the leaderboard win is reported as if it were honest. The 2024 wave of LLM contamination findings made this category much harder to ignore.&lt;/p&gt;

&lt;p&gt;The third — and the one that surfaces most often in community threads — is LLM-assisted writing that crosses the line from polishing into authorship. Reviewers have flagged submissions where citations point to papers that do not exist, equations contain hallucinated symbols, and the related-work section reads like a summary generated from titles alone. Several venues, including ICLR and NeurIPS, have updated their author policies in response. Reviewer-side abuse exists too: there is meaningful evidence that some reviews are themselves LLM-generated, which sets up a feedback loop where slop reviews slop.&lt;/p&gt;

&lt;p&gt;The honest framing is that the median paper has not gotten worse. The tail has gotten much longer, and the cost of finding the good papers inside that tail has gone up.&lt;/p&gt;

&lt;h2&gt;
  
  
  A triage workflow that scales past 20 papers a week
&lt;/h2&gt;

&lt;p&gt;You cannot read everything. You probably should not even skim everything. The workflow below assumes you have roughly 60 to 90 minutes per week for paper intake and want most of that time spent on papers worth reading carefully.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Filter by source before content.&lt;/strong&gt; Submissions to top venues that have already cleared first-round review are a different distribution than raw arxiv preprints. If a paper has not been posted by an author you recognize, an affiliation you trust, or accepted somewhere with real review, it goes to a "maybe later" pile. This is not gatekeeping — it is the only sane way to spend a finite reading budget.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use the abstract as a hypothesis, not a summary.&lt;/strong&gt; Read it once, then jump to the main results table or method figure. If the gap between the abstract's claim and the table's actual numbers is large, the paper is signaling slop. You will internalize this pattern within a few weeks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check whether code and weights ship.&lt;/strong&gt; For empirical work, the absence of a public repository is no longer a neutral signal — it is a negative one. Papers with Code, Hugging Face, and GitHub links should be present and non-empty. Repositories with a README and no commits since submission are a known pattern.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use citation graphs, not citation counts.&lt;/strong&gt; Connected Papers and Semantic Scholar's "influential citations" view show you whether a paper is being built on or merely cited. A new paper with 200 citations that are all "we follow X" is not the same as one with 30 citations from groups extending its method.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Treat any paper whose related-work section cites work that does not exist as conclusively slop and stop reading. We have seen this in papers from named labs, not just anonymous submissions. A single hallucinated citation is enough — the rest of the document was not checked by a human carefully enough to trust.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Curation services and tools worth your subscription
&lt;/h2&gt;

&lt;p&gt;The cheapest filter is to outsource part of it to someone whose taste you trust.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sebastian Raschka's Ahead of AI&lt;/strong&gt; publishes long-form roundups that triage papers around LLMs, training methods, and applied ML. The summaries are technical enough that you can decide whether to read the original from the summary alone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Import AI&lt;/strong&gt; by Jack Clark covers policy, capability progression, and a small number of papers per issue. Useful for spotting trends before they hit your feed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Batch&lt;/strong&gt; from DeepLearning.AI is broader and shallower; helpful for orientation if you are not deep in ML day to day, less useful if you are.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;alphaXiv&lt;/strong&gt; layers comments on top of arxiv. Reading the discussion under a contested paper often saves you the trouble of reading the paper itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Semantic Scholar's Research Feeds&lt;/strong&gt; lets you specify seed papers and surfaces new arxiv preprints ranked by relevance to that seed. Better than chronological for the same reason a recommendation engine beats a chronological feed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Papers with Code&lt;/strong&gt; is still the right starting point if you want to find the current state of the art on a specific benchmark and skip the marketing.&lt;/p&gt;

&lt;p&gt;For deeper provenance work — checking whether a model's training data contaminates its evaluation — &lt;strong&gt;scite&lt;/strong&gt; and &lt;strong&gt;Litmaps&lt;/strong&gt; are worth knowing about, though both are paid.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build your own filter and let it compound
&lt;/h2&gt;

&lt;p&gt;The most underrated filter is the one you build yourself, paper by paper, over months. Every paper you read carefully should produce a one-paragraph note: what the claim is, what evidence supports it, and whether your prior moved. Six months in, you will notice that some authors and labs consistently move your prior and others do not. That ranking is more accurate than any third-party signal.&lt;/p&gt;

&lt;p&gt;A simple Notion database with paper title, link, claim, evidence, and a 'would re-read' flag is enough. The 'would re-read' column is the highest-signal field — papers you actually return to are the ones that mattered.&lt;/p&gt;

&lt;p&gt;The compound effect matters more than any single tool. A researcher who has read 200 papers carefully has a better filter than any service can provide, because their filter encodes their specific research interests. The tools above are scaffolding for getting to that point without burning out on slop first.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://pickuma.com/posts/ai-research-slop-filter-papers/?utm_source=devto&amp;amp;utm_medium=crosspost&amp;amp;utm_campaign=blog" rel="noopener noreferrer"&gt;pickuma.com&lt;/a&gt;. Subscribe to &lt;a href="https://pickuma.com/rss.xml" rel="noopener noreferrer"&gt;the RSS&lt;/a&gt; or follow &lt;a href="https://bsky.app/profile/pickuma.bsky.social" rel="noopener noreferrer"&gt;@pickuma.bsky.social&lt;/a&gt; for new reviews.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Claude Code Agent View: Why Developers Aren't Sold on Anthropic's New CLI Dashboard</title>
      <dc:creator>pickuma</dc:creator>
      <pubDate>Mon, 18 May 2026 14:30:31 +0000</pubDate>
      <link>https://forem.com/pickuma/claude-code-agent-view-why-developers-arent-sold-on-anthropics-new-cli-dashboard-4h4f</link>
      <guid>https://forem.com/pickuma/claude-code-agent-view-why-developers-arent-sold-on-anthropics-new-cli-dashboard-4h4f</guid>
      <description>&lt;h2&gt;
  
  
  What agent view actually ships
&lt;/h2&gt;

&lt;p&gt;Anthropic added an "agent view" feature to Claude Code, its terminal-based coding agent. The pitch is straightforward: if you run multiple Claude Code sessions in parallel — one per branch, one per repo, one per task — the dashboard gives you a single pane to see what each session is doing and switch between them without juggling tmux panes or terminal tabs.&lt;/p&gt;

&lt;p&gt;The feature targets a specific user: someone who already runs three or more Claude Code instances at once. That's a real workflow. Power users have been spawning agents per git worktree for months, often through custom shell scripts, terminal multiplexers, or wrapper tools like Conductor. Agent view tries to standardize that experience inside the CLI itself instead of leaving each user to roll their own.&lt;/p&gt;

&lt;p&gt;What the dashboard shows is roughly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The list of active Claude Code sessions on your machine&lt;/li&gt;
&lt;li&gt;Each session's current state — idle, thinking, awaiting input, running a tool&lt;/li&gt;
&lt;li&gt;A way to jump between sessions without leaving the dashboard&lt;/li&gt;
&lt;li&gt;A consolidated view of what each agent is working on&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The whole thing lives in your shell. It's a TUI, not a web app, and that's a deliberate choice consistent with how Claude Code positions itself: terminal-native, no separate desktop surface to keep open.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you've never run more than one Claude Code session at a time, agent view solves a problem you don't have. The feature exists for the subset of users who already coordinate parallel agents and want less context-switching friction. Solo-session users can safely ignore it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why the developer response has been muted
&lt;/h2&gt;

&lt;p&gt;The pushback we've seen isn't that the feature is bad. It's that the hard problems with multi-agent workflows live upstream of "which window am I looking at."&lt;/p&gt;

&lt;p&gt;Here's what developers actually struggle with when running parallel Claude Code sessions, and where agent view lands on each:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Coordination, not just monitoring.&lt;/strong&gt; Knowing three agents are working on three branches doesn't tell you whether they're stepping on each other's changes, duplicating work, or producing diffs that will conflict at merge time. Agent view surfaces state. It doesn't reconcile output.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost visibility.&lt;/strong&gt; Running four agents in parallel multiplies your token spend by four. The dashboard doesn't surface per-session cost in real time, and that's the metric most teams care about before they let agents fan out across a codebase. You have to wait for the Anthropic usage page to update, then attribute spend back to sessions yourself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output quality across sessions.&lt;/strong&gt; When you run multiple agents on related tasks — say, three different approaches to the same refactor — you want comparative review. Agent view shows what each is doing, not how to pick between them. The "diff A vs diff B, here's which I'd merge" view doesn't exist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Existing tooling already covers the basics.&lt;/strong&gt; tmux, screen, Zellij, kitty, WezTerm, even plain iTerm tabs handle session management. Developers who already built workflows around those tools see agent view as a reimplementation of capabilities they already have, with less flexibility than their custom setup.&lt;/p&gt;

&lt;p&gt;The lukewarm response isn't "this is bad." It's "this isn't the bottleneck." The dashboard solves the easy problem (where are my sessions?) while leaving the hard ones (do these agents agree? what did this run cost? which output should I keep?) untouched.&lt;/p&gt;

&lt;p&gt;There's a secondary critique that comes up too: a TUI dashboard in 2026 feels like a half-step. If you're already going to build session orchestration, why not a proper web UI that survives terminal crashes, supports remote sessions, and shows real cost graphs? Anthropic's answer appears to be that Claude Code's identity is CLI-first — but for power users juggling multiple machines or remote work, that constraint is the constraint.&lt;/p&gt;

&lt;h2&gt;
  
  
  What would actually move the needle
&lt;/h2&gt;

&lt;p&gt;The more interesting question isn't whether agent view is useful — for some users it will be a small quality-of-life win — but what a real multi-agent control plane would look like. Based on what we've seen production teams ask for:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Per-session cost tracking&lt;/strong&gt; with thresholds. "Stop this session if it crosses 50k tokens" beats a status indicator. "Show me which session burned 80% of today's spend" beats a list of session names.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conflict detection at the diff level.&lt;/strong&gt; If two parallel sessions both touch &lt;code&gt;src/auth/login.ts&lt;/code&gt;, surface that before you waste compute on both. Even a static pass over each session's working tree would help.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output comparison.&lt;/strong&gt; A side-by-side view of multiple agents' diffs on the same task, with a pick-and-merge workflow. This is the feature that would make parallel agents genuinely productive instead of merely possible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistent session state.&lt;/strong&gt; Currently, killing your terminal effectively kills the session. A real control plane would let sessions survive terminal crashes, machine sleep, and laptop close — and ideally let you resume from another device.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;None of those are in agent view today. Some are roadmap candidates, some are out of scope for a CLI tool entirely. The honest read: Anthropic shipped maybe 20% of the multi-agent UX problem, and the remaining 80% is still open — across every agent CLI on the market, not just this one.&lt;/p&gt;

&lt;p&gt;For developers who want to keep using Claude Code, agent view is a no-cost upgrade. Turn it on, see if it helps your workflow, ignore it if it doesn't. The bigger question — how do you actually manage three or more AI agents on the same codebase without thrashing yourself or your token budget? — remains unsolved across the industry. Cursor, Cline, Aider, Continue, and Claude Code are each working on different slices of it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Don't let agent view's existence trick you into running more parallel agents than you can review. Token spend scales linearly with sessions; review attention does not. The bottleneck is rarely how many agents you can spawn — it's how many outputs you can sanity-check before merging.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  When agent view is worth turning on
&lt;/h2&gt;

&lt;p&gt;Short answer: when you already run three or more Claude Code sessions at once and your bottleneck is genuinely "I can't keep track of which one is doing what." If that describes you, the dashboard will save you small amounts of friction many times per day, and that adds up.&lt;/p&gt;

&lt;p&gt;If your bottleneck is anywhere else on the list above — cost, conflicts, review, persistence — agent view won't fix it, and you should keep building around it with the tools you already have. The dashboard isn't the answer to multi-agent coding. It's a session switcher, and judging it as anything more than that sets up the disappointment that's been showing up in the response so far.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://pickuma.com/posts/claude-code-agent-view-review/?utm_source=devto&amp;amp;utm_medium=crosspost&amp;amp;utm_campaign=blog" rel="noopener noreferrer"&gt;pickuma.com&lt;/a&gt;. Subscribe to &lt;a href="https://pickuma.com/rss.xml" rel="noopener noreferrer"&gt;the RSS&lt;/a&gt; or follow &lt;a href="https://bsky.app/profile/pickuma.bsky.social" rel="noopener noreferrer"&gt;@pickuma.bsky.social&lt;/a&gt; for new reviews.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Anthropic Splits Agent SDK Billing: What Devs Need to Know About New Credit Pools</title>
      <dc:creator>pickuma</dc:creator>
      <pubDate>Mon, 18 May 2026 14:29:15 +0000</pubDate>
      <link>https://forem.com/pickuma/anthropic-splits-agent-sdk-billing-what-devs-need-to-know-about-new-credit-pools-38i</link>
      <guid>https://forem.com/pickuma/anthropic-splits-agent-sdk-billing-what-devs-need-to-know-about-new-credit-pools-38i</guid>
      <description>&lt;p&gt;Anthropic is changing how it bills Agent SDK traffic, and if you've been treating those costs as just another line on your standard Claude API invoice, that's about to stop being accurate. The company is separating programmatic Agent SDK usage — the traffic generated by third-party apps built on the SDK — from standard Claude billing, routing it instead into a new monthly credit pool. We pulled apart what's been announced to figure out which integrations need attention before this lands.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually changed
&lt;/h2&gt;

&lt;p&gt;Until now, Agent SDK usage and direct Claude API calls drew from the same meter. You burned tokens, you paid per token, you watched a single number tick up on your dashboard. The new structure splits that meter in two.&lt;/p&gt;

&lt;p&gt;Direct API calls — the ones you make from your own backend, with your own auth, hitting Claude endpoints directly — continue to behave the way they always have. Pay-as-you-go token pricing, the rate limits tied to your usage tier, the standard invoice line.&lt;/p&gt;

&lt;p&gt;Agent SDK traffic, on the other hand, routes into a separate monthly credit pool. This is the usage generated when third-party apps wrap the SDK and your account is on the hook for the resulting calls. The credits are allocated per month, not per token, and that single change cascades into a different cost model, different rate limit semantics, and different forecasting math.&lt;/p&gt;

&lt;p&gt;If your product imports the Agent SDK in production, this is the integration to audit first. Direct API consumers don't need to do anything yet, but anyone shipping on top of the SDK needs to revisit assumptions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why credit pools change your forecasting math
&lt;/h2&gt;

&lt;p&gt;Pay-as-you-go billing is mostly linear: 2x the requests means 2x the bill. Credit pools are not linear. They're bounded by a monthly allocation, which changes both your ceiling and your burst behavior.&lt;/p&gt;

&lt;p&gt;A few things shift in practice:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Burst days eat the pool faster.&lt;/strong&gt; A single viral day or a noisy production bug can chew through credits that you assumed would last the month. Smoothing across the calendar is no longer something the billing system does for you — it's something you need to plan for in product behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Forecasting becomes a question about pool fit, not just token spend.&lt;/strong&gt; The right question stops being "how many tokens will we use next quarter" and becomes "which pool tier do we need, and how much headroom do we want for spikes." Tier upgrades become a discrete decision point rather than a continuous slope.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exhaustion behavior matters now.&lt;/strong&gt; When you run out of pool credits, what does your app do? Return a 429 to your users? Fail open to a fallback model? Queue requests until next month? That was a theoretical question under pay-as-you-go (you'd just pay more); under pool billing, it's a real one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Internal attribution gets messier.&lt;/strong&gt; If multiple features or teams share one Agent SDK pool, you now need to track usage at the feature level to know who's consuming the budget. Observability that just sums tokens won't tell you which integration is the cost driver.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If your Agent SDK calls sit in a latency-sensitive path, audit your fallback logic before the new billing structure activates. A drained credit pool behaves differently from a pay-as-you-go bill — your code needs to handle the "no credits left" case as a normal failure mode, not an unexpected one.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What to audit in your integration
&lt;/h2&gt;

&lt;p&gt;Five things worth a pass before this lands:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Tag your Agent SDK call sites.&lt;/strong&gt; Every code path that touches the SDK should be tagged in your observability so you can attribute spend to the right pool. If you're running both direct API calls and SDK calls from the same service, you want to know which one is which without grepping logs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Re-read your rate limit handling.&lt;/strong&gt; Pool credits and per-minute rate limits aren't the same thing, but they interact. Your retry logic should distinguish "rate limited, back off and retry" from "out of credits, fail fast." Lumping them together leads to retry storms when the pool is dry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Forecast against the pool, not against tokens.&lt;/strong&gt; Build a small dashboard that shows credits consumed against credits allocated for the month, with a projection line. If your current burn rate trends past 100% before month-end, you want to know on day 10, not day 28.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Revisit your unit economics.&lt;/strong&gt; If you charge customers per request and the cost basis just changed shape, your margin assumptions may not hold. Per-pool pricing rewards predictable workloads and penalizes bursty ones — your pricing should reflect that if it doesn't already.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Update your runbook.&lt;/strong&gt; What happens at 80% pool usage? At 95%? At exhaustion? The answer should not be "page someone and figure it out." Pre-decide the throttling, fallback, or upgrade path so the on-call engineer doesn't have to.&lt;/p&gt;

&lt;p&gt;The pattern across all five: treat the credit pool as a finite resource with an SLA, not as a flexible meter that absorbs spikes for free.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to check before this affects you
&lt;/h2&gt;

&lt;p&gt;Three concrete steps for this week, regardless of how much SDK traffic you currently run:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pull your last 90 days of usage and split it by call type. If you can't tell which calls would land in the new pool versus the standard API, that's the first observability gap to close.&lt;/li&gt;
&lt;li&gt;Find the Anthropic billing documentation for the new pool structure and read it end to end before your finance team asks. The general shape of the change is public, but the specifics (exact tiers, credit-to-token conversion, overage behavior) live in the official docs.&lt;/li&gt;
&lt;li&gt;Estimate which pool tier your current usage would land in, and price the next tier up as a planning input. You want to know the cost of headroom before you need it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most teams will not be dramatically affected by this in the first month. The teams that get burned are the ones who assume billing structure changes don't apply to them and discover the difference at quarter-end.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://pickuma.com/posts/anthropic-agent-sdk-credit-pools-billing-split/?utm_source=devto&amp;amp;utm_medium=crosspost&amp;amp;utm_campaign=blog" rel="noopener noreferrer"&gt;pickuma.com&lt;/a&gt;. Subscribe to &lt;a href="https://pickuma.com/rss.xml" rel="noopener noreferrer"&gt;the RSS&lt;/a&gt; or follow &lt;a href="https://bsky.app/profile/pickuma.bsky.social" rel="noopener noreferrer"&gt;@pickuma.bsky.social&lt;/a&gt; for new reviews.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
