Vol. I · No. 1

The Stack Report

A periodical for the patient buyer of bitcoin.

§ Embed

Embed the calculator.

Drop The Stack Report into your post. Configure the backtest below — amount, cadence, dates, optional strategies — copy the snippet, paste it anywhere HTML is allowed. Your readers get the full calculator. No key, no signup, no tracking pixels. The footer is the only attribution; that's the masthead in miniature.

§ Configure

Amount per buy (USD)

Frequency
From
To

§ Strategies (optional)

Bought everything on day one — the timer’s best-case if you guessed right.

Buys more when below the target curve; less when above. Capped at 3× the cadence amount, never sells.

Doubles the buy whenever price closes below its 30-day moving average.

§ Live preview

What your readers will see. The iframe auto-resizes via postMessage when the snippet's parent script is present.

§ The snippet

<iframe src="https://thestackreport.io/embed/calculator?amount=50&freq=weekly&from=2022-05-29&to=2026-05-29"
        width="100%" height="820" style="border:0;max-width:720px"
        loading="lazy" title="Bitcoin DCA backtester · thestackreport.io"></iframe>
<script>(function(){window.addEventListener('message',function(e){if(e.origin!=='https://thestackreport.io')return;var d=e.data;if(!d||d.type!=='tsr-embed-resize')return;var h=Number(d.height);if(!(h>=200&&h<=5000))return;var fs=document.querySelectorAll('iframe[src*="thestackreport.io/embed/calculator"]');for(var i=0;i<fs.length;i++){if(fs[i].contentWindow===e.source){fs[i].style.height=h+'px';break;}}});})();</script>

Paste anywhere HTML is allowed — a Ghost or WordPress post, a Substack note, a static page. The trailing <script> is optional but recommended; it auto-resizes the iframe as readers interact with the calculator (toggling strategies, switching units). Without it, the iframe stays at 820 px and the inner page scrolls.

§ 01 · What it is

A stripped, fully interactive Calculator.

The embed renders the same Calculator the homepage uses — same chart, same strategies, same drawdown panel, same comparator verdict. Readers can edit the parameters and run their own backtests inside the iframe. The masthead, the saved-runs UI, the newsletter capture, the email-this-report form — all stripped.

§ 02 · Attribution

One line, bottom of the iframe.

A single Fraunces italic line — Built with The Stack Report — and a mono small-caps Open in full →link that opens the same backtest on this site in a new tab. That's the only thing identifying us inside your post. We won't add a banner, won't pop a modal, won't inject anything else. Editorial sites have an aesthetic; we respect yours.

§ 03 · Parameters

Same vocabulary as the calculator URL.

The iframe's query string accepts amount, freq (daily / weekly / monthly), from + to (YYYY-MM-DD), and an optional comma-separated strat=lump,va,dip. Malformed values silently fall back to defaults — your reader sees a working calculator, never a broken page. Full reference at /api § 02.

§ 04 · Sizing

Width auto, height auto with the script.

The snippet defaults to width="100%" with a max-width: 720px cap — past that the calculator stops gaining visual weight without gaining content. Height starts at 820 px; the trailing <script> listens for postMessage from the iframe and resizes it as readers toggle strategies. If your CMS strips scripts, the iframe scrolls internally instead — still works, less elegant.

§ 05 · Defence in depth

Sandboxed if you want to be paranoid.

The snippet works as shipped. If you'd rather lock the iframe down further, add sandbox="allow-scripts allow-same-origin" to the <iframe> tag. That denies form submission, top-level navigation, popups, downloads, and pointer-lock — none of which the calculator needs. allow-scripts keeps the chart and inputs working; allow-same-originlets the iframe's internal fetch to our price cache succeed. The auto-resize postMessage still works inside a sandbox.

§ 06 · Promise

No tracking, no pixels, no third-party JS.

The iframe doesn't load Plausible, Vercel Analytics, or any other beacon. It doesn't write to localStorageon your reader's machine. We don't know who embedded us; we don't want to. The only thing the iframe asks of your reader's browser is the cached price series from our API, which is rate-limited and unlogged.

Make attribution beautiful enough to leave in.