2026-07-12·2 min read

Stock Academy: the course I wanted before I started

field-notesstock-academy

The moment that started this: I wanted to know whether to open an ISK or a kapitalförsäkring, or just a plain aktie- och fondkonto. Every explanation I found answered the question with three more terms I didn’t have yet. Tax treatment, schablonintäkt, statslåneräntan. The page assumed I already knew the thing it was there to teach me. I closed the tab knowing less than when I opened it, and a little embarrassed for asking.

Stock Academy is what I built so that moment has an exit. It assumes you know nothing about investing and starts there. It’s live at stock-academy.netlify.app.

How it’s shaped

Ten modules, in order, from what a stock is to the end: market basics, investment vehicles, getting started, order types, portfolio construction, risk management, evaluating companies, psychology and pitfalls, taxes and record-keeping, and an ongoing routine. Each module is short lessons and a quiz. Get a question wrong and the answer comes with the reason it’s wrong, not a red X and silence. The reason is the part I kept wanting and never getting.

The Sweden part is a block type, not a footnote

Under the hood, each module is a JavaScript data file in js/data/curriculum/. A module has a goal and a list of lessons; a lesson is a list of content blocks (heading, paragraph, list, callout, keyTerm) and a quiz. The renderer walks that structure, so layout lives in the renderer, not the lesson.

That stays a boring detail until you reach the callout variants: tip, warning, disclaimer, and sweden-eu. The last two are why I set it up this way. Living in Sweden, the tax module has to cover ISK, kapitalförsäkring, aktie- och fondkonto, Nasdaq Stockholm, and Skatteverket, and those rates and rules change. A course that hard-codes a number ages into being wrong. So every Sweden mention carries a sweden-eu callout that renders inline, right where being in Sweden changes the answer, and tells you to check the current rule at the source instead of trusting my screenshot. The disclaimer variant does the same job for the line between education and advice. The caveat travels with the lesson, and fixing one is editing data, not touching the renderer.

Making it stick

I read finance explainers and forget them by the next day. So it installs as an app on your phone and works offline on the train, and a daily review pulls three questions from lessons you’ve already passed. The three are seeded by the date, so they hold steady all day and you can finish them whenever. It’s spaced repetition without me having to call it that. One of the interactive bits, “The Fee Machine,” runs a small annual fee forward over years so you can watch it eat a return, which lands harder than me saying fees matter.

The honest part

None of it is financial advice. I’m not licensed and I’m not telling anyone what to buy. Nothing you type leaves your browser: it’s localStorage, no accounts, no backend. I built it with Claude, in plain HTML, CSS, and JavaScript, with no build step and no dependencies.

I made it because the wall was real for me, and I’d guess it’s real for other people who grew up assuming investing wasn’t written for them.