Making-of · Personal tool · Finance

I built my own tracker
to really know
where my positions are.

I buy stocks and crypto now and then on Trade Republic and the like. The problem: these apps show you an average price but not where you actually bought, or how much came out of your own pocket. I got fed up. A week later, I had my own tracker: Jerwis Finance. Every entry point on a chart, the real amount invested, and a wishlist that tells me whether waiting was a good call. The story, unfiltered.

12 min read Level Everyone Date May 2026
Jérémy Sagnier Jérémy Sagnier · I test AI every day · I share what actually helped me Published · Updated May 22, 2026
In 30 seconds

What you'll find inside

  • The trigger: Trade Republic and the like show you an average price. But where did you actually buy? Exactly how much came out of your own pocket? No clear answer.
  • The team: just me, pair-programming with Claude Code. A week for the base, two weeks for the polish.
  • The result: Jerwis Finance, a personal tracker wired to Yahoo Finance, CoinGecko and the ECB. Every entry point on a chart, the average cost recomputed in EUR using the real historical rates, the day-by-day history of my portfolio value.
  • The 5 features: positions with average cost in EUR + a transactions ledger + an asset page with candlesticks and indicators + DCA plans + a wishlist (the stocks you're watching, with their performance since the date you added them).
  • The idea behind the wishlist: you think "I could have bought this stock" → you add it → 6 months later you know exactly whether waiting was the right call or not.
  • Transparency: article written with Claude (reviewed and approved by me), build done with Claude Code. I'm not a developer. If you spot a mistake, write to me and I'll fix it.
— The trigger

The problem nobody talks about.

To set the scene: I invest now and then. Not a trader, not a day-trader, not someone glued to the charts every hour. Just someone who puts money into stocks or crypto when an opportunity comes up. A few US stocks, some Bitcoin, some Ethereum, an ETF here and there. Multiply that by several buys over 2-3 years and it starts to add up to a small portfolio.

For a long time, I used Trade Republic for stocks, and another service for crypto. On paper, these apps are perfect · clean interface, near-zero fees, buying in two taps. But in daily use, I kept running into three things that really got on my nerves.

First thing: you never get the history of when you bought what. On Trade Republic, you see your "average buy price." But that average is a mathematical mean of all your purchases. If you bought Apple 5 times over 2 years, at 5 different prices, all you see is the average. You no longer know where your real entry points were. You no longer know whether you bought at the top or the bottom. The raw history is in the app but you have to scroll through it by hand, and it's never shown on the price chart.

Second thing: you never know how much you actually invested out of your own pocket. The "total invested" shown doesn't account for currency conversions (you buy in dollars, but your account is in euros). The FX fees are buried in the average price. You roughly know your financial effort, but not to the cent. When you want to reason about "how much am I actually up?", it gets complicated.

Third thing: no tool lets you keep a smart wishlist. You think "hey, Netflix might be worth buying, I'll wait for a dip" → then you forget → 6 months later you come back, the stock is up 40%, and you wonder whether waiting was the right move. But since you never noted the date you spotted it, you'll never really know.

The real problem isn't the broker · it's what you don't have in hand

Trade Republic, eToro, Revolut, they all do their job well: buying and selling. What they're missing is the analytical view of your own decision-making. Where did you actually buy, at what price, in what currency, at what exchange rate, how much it cost you in hidden fees. And what you've been watching, and since when. That data exists in your statements but it's chopped into pieces across 4 different places.

One evening, I got fed up. I grabbed a sheet of paper and wrote out the list of what I'd want to have, if I built my own tool.

  1. All my entry points on the stock's chart · not just a line for the average price, but one dot per purchase, on the right date.
  2. The average cost recomputed cleanly in EUR using the real historical ECB exchange rates, fees included.
  3. The total amount actually invested, in euros that left my account, no approximation.
  4. Clear unrealized and realized gains/losses, in euros and as a percentage.
  5. A dated wishlist · I note the date I add a stock, and the tool computes its performance since that day. That way I know after the fact whether I was right to wait.
  6. DCA plans · if I want to buy €200 of Bitcoin on the 15th of every month, the tool tells me "you need to buy more today" and executes it in one click.
  7. A historical overview · the day-by-day evolution of my portfolio's total value, not just the current snapshot.

I read it back. I thought · "that, right there, is exactly what no broker is going to do for me. It's my analyst's view of my own decision-making." And with Claude Code, in 2026, it's doable in a few days. The next morning, I got to work.

— Here's the result

Before I explain how, take a look.

Here's what Jerwis Finance looks like today. This is my home dashboard when I land in the tool. The portfolio's total value up top, the day-by-day value history, my top positions, the allocation by asset type, and a "Watch" block that alerts me if one of my positions has moved a lot or if a threshold has been crossed.

Jerwis Finance · Dashboard with valuation, portfolio history and allocation
↗ The home dashboard · total value, daily history, allocation and signals

This is the screen I'd been missing for years. When I open the app in the morning, I know in 5 seconds · my total value, my cumulative amount invested, whether I'm up or down, and what to watch today. Trade Republic gave me part of that, but in EUR only, with no history, no signals, and without my real entry points.

Everything else in the tool is just a deeper dive into this view. Detail per position. Transaction list. DCA plans. Wishlist. Per-asset page with candlesticks and technical indicators. It's all tidy. It's all computed in EUR using the real historical rates. And it all belongs to me · the data lives in my database, not at a broker that could change its terms tomorrow.

— Day by day

The week of building.

Here's how it actually went, from the spark to going live. For context: I'm not a developer. I'm an entrepreneur, I know how to use Claude Code (the AI tool that writes the code for me while I steer), and that's it. Everything that follows, I did with Claude Code in pair-programming.

Evening 1 · Day 0

The sheet of paper

I list what I want to see in the tool · entry points, average cost in EUR, real amount invested, gains/losses, dated wishlist. I sleep on it to make sure I'm not reinventing something that already exists.

Day 1

The skeleton of the site

I open Claude Code in a fresh folder. I ask for a Next.js project (the modern web app engine) with a Dashboard page and a Positions page. By evening, I have 2 pages displaying with dummy data, but the routing and the theme are in place.

Day 2

The database and the average-cost calculations

First I wire up SQLite locally (faster to get going). I create 4 tables · assets (the stocks and cryptos), transactions (each buy/sell), dca_plans (the recurring purchase plans), wishlist_items. And above all, I work on the average-cost calculations in TDD: Claude Code writes the tests first, then the implementation. 86 automated tests on the calculations in the end.

Day 3

Real-time prices

I wire up Yahoo Finance for stocks and CoinGecko for crypto. And one crucial piece · Frankfurter for the EUR exchange rates from the ECB (European Central Bank). That's what lets me compute the average cost in EUR using the real rate from the day of the purchase, not today's rate. Trade Republic doesn't give you that.

Day 4

The chart with my entry points

The feature I wanted most. I use Recharts to draw the OHLC candlesticks, and I add a layer of dots marking each of my purchases on the exact date. With the MA50, MA200 and RSI 21 indicators in a separate panel. This is what I'd been dreaming of having for 2 years.

Day 5

The dated wishlist

I code the wishlist_items table with a reference_price frozen on adding and a reference_date. Automatic calculation of the virtual performance since that date. I test it · "if I'd bought Booking on March 12, 2026 at $4,800, where would I be today?" Answer in an instant. The thing I wanted.

Day 6-7

The DCA plans and the portfolio history

I add recurring-investment plans ("buy €200 of Bitcoin on the 15th of every month"). And above all, the portfolio_snapshots table that records the portfolio's total value day by day. So on the dashboard, I finally have the history of the valuation, not just the current snapshot.

Weeks 2-3

Supabase migration, auth, deployment

To host the tool somewhere, I migrate the local SQLite database over to Supabase (Postgres in the cloud). I add private auth via a JWT cookie (because it's my financial data, no way it's going public). I deploy on Vercel. I move to jerwis-finance.vercel.app · accessible only with my password.

Polish · weeks 4+

Successive UX overhauls

Once in production, I iterate · a Dashboard overhaul with a "Watch" block and automatic signals, a Positions page overhaul with filters / sorting / CSV export, target prices and per-ticker alerts, a EUR/USD toggle, smart rounding everywhere, an asset page with a quick read. Every time I use it I notice some small thing to improve, and I fix it in the evening with Claude Code.

What this build taught me

The eye-opener is realizing that with Claude Code, your bottleneck is no longer the tech · it's knowing exactly what you want to see. The day I listed on paper my 7 real questions (where did I buy, how much did I put in, how much have I gained, etc.), building the tool became an assembly job. Not a months-long project. A week for the base, and after that you refine through daily use.

— The 3 features that change everything

What no broker does.

Beyond the average cost in EUR, three features are why I no longer open Trade Republic. None of them exist in the mainstream broker apps.

📍

All my entry points on the chart

On each asset's page, the OHLC candlestick shows a colored dot on every date I bought. At a glance I see whether I bought at the top, the bottom, or somewhere in between. It's the feature that kicked it all off and the one I open most often.

💶

The average cost in EUR with the real historical rates

When you buy Apple in dollars in March 2024 at a given EUR/USD rate, the tool records that snapshot rate. The average cost is therefore in euros that left your account on the day, not in "theoretical" euros at today's rate. It's the only way to truly know how much you invested.

👀

The dated wishlist ("I should have bought")

Spot a stock? You add it to the wishlist. The tool freezes the reference price and the date. Six months later, you know exactly what that stock has done since the date you added it. Either waiting was the right call, or you missed a 30% rally. No more vague regrets.

The wishlist has become my favorite feature. Before, I'd think "hmm, maybe Netflix," I'd forget about it, I'd stop talking about it, and I'd end up buying at some random moment with no context. Now I add it, I sleep on it, and 3-6 months later I decide with full knowledge. If the stock has shot up, I know I missed it and I learn from the situation. If it's dropped, I pat myself on the back and maybe buy now.

— Behind the curtain

The 6 pages of the tool.

To give you a concrete idea of what I use day to day, here are the 6 main pages. They're all reachable from the side nav, they all compute their numbers in EUR using the real historical rates, and they all have a EUR/USD toggle if you want to see the other currency.

1. The Dashboard · what I see in the morning

Four KPIs up top · total value, cumulative amount invested, unrealized gains/losses, dividends received. Below · the daily history of the portfolio's value (two overlaid curves · total value and invested capital). On the right · the 3 top positions by weight, the allocation by type (stocks vs crypto), the latest transactions and the next scheduled DCA. Finally, the Watch block that shows automatic signals (over-concentration, abnormal performance, a price crossing a defined threshold).

2. The Positions · the detailed dashboard

Jerwis Finance · Positions page with average cost, weight and performance
↗ Positions page · one row per asset with average cost, portfolio weight, gains/losses

Each row · ticker, quantity, average cost, current value, portfolio weight, gains/losses in EUR and as a percentage. Filters by type (stocks / crypto / all), sorting by column, grouping, dense mode, CSV export. It's the page I open when I want to do a weekly check-in on my positions.

3. The Transactions · the ledger history

Jerwis Finance · Transactions page with history of buys and sells
↗ Transactions page · every buy / sell / dividend in chronological order

The full ledger · every buy, sell, dividend, with the date, quantity, unit price, fees, currency and snapshot exchange rate. That's the data used to recompute the average cost. If I find a mistake in an entry, I edit it here and everything is recalculated automatically.

4. The Asset page · candlesticks + my entry points

Jerwis Finance · Asset detail page with OHLC candlesticks, MA50, MA200, RSI and entry points
↗ Asset page · OHLC candlesticks + MA50 + MA200 + RSI 21 + my entry points

An asset's page · a position summary up top (average cost, value, gains/losses, break-even), OHLC candlesticks over 1-2 years, MA50 and MA200 indicators in the legend and tooltip, a separate RSI panel below. And above all · my entry points colored directly on the candlesticks. It's the page I wanted.

A Target & alerts block lets me set a target price per ticker. The tool computes the distance to the target and shows a "reached" or "pending" status.

5. The DCA Plans · scheduled investing

You create a plan · ticker, amount in euros, frequency (weekly, monthly, on a fixed date). The tool tells you each month when to execute, converts your budget into the asset's native currency at the day's rate, and inserts the transaction in one click. If the price or the FX is unavailable, it refuses outright (no blind recording). On the dashboard, I always have the "next DCA" waiting for me, with the exact due date.

6. The Wishlist · what I'm watching

Jerwis Finance · Wishlist page with watched stocks and performance since the date added
↗ Wishlist page · frozen reference price + virtual performance since the date you added it

For each watched asset · the ticker, the date I added it, the reference price frozen at that moment, the current price, and the virtual performance as a percentage since the date added. It's my "if I'd bought that day, where would I be?". An optional target price lets me flag an alert if the stock reaches the level I'd want to buy it at.

The detail that changes everything · smart rounding

I spent half a day just on the displayed rounding. Totals and valuations are shown without cents (€1,234 instead of €1,234.57). Percentages are to 1 decimal place. Quantities adapt (0.001 BTC vs 10 AAPL). Unit prices keep 2 decimals. Small detail, big comfort to read every day. It's the kind of polish that makes the difference between "neat tool" and "tool you use every day."

— Under the hood

The tech choices, explained simply.

If you've never touched code, you can skip this section with no harm done. But if you want to understand how it runs, here are the building blocks I used and why.

ToolWhat it's forWhy this one
Next.jsThe engine of the site (the equivalent of the engine in a car)Modern standard, Claude Code knows it very well, good integration with Vercel.
SupabaseThe database in the cloud (where my positions and transactions are stored)Free up to a certain volume, secure, I can download my data whenever I want.
Drizzle ORMThe bridge between the code and the database (without writing raw SQL)Type-safe (the tool warns you if you make a mistake), automatic migrations, perfect for TDD.
Yahoo Finance APIFetches stock and ETF pricesFree, complete (candlesticks, indicators), covers US and European exchanges.
CoinGeckoFetches crypto pricesFree, reliable, more than 10,000 cryptos tracked, a very generous freemium tier.
FrankfurterThe historical ECB exchange ratesOfficial European Central Bank API, free, which lets me have the real EUR/USD from the day of each purchase.
RechartsDraws the charts (candlesticks, curves, allocation)A mature, customizable React library, perfect for overlaying dots on candlesticks.
shadcn/uiThe visual components (buttons, tables, modals, dropdowns)Not a framework, just copy-paste. You own the code, you can change anything.
VercelThe host that keeps the app running 24/7Perfect pairing with Next.js, deploy in 30 seconds on every change.

Nothing exotic. It's a standard assembly used by any modern web app. What makes the difference is Claude Code, which let me orchestrate all of it without being a developer.

The detail that pays off · automated tests

For the average-cost calculations, I asked Claude Code to write the tests first, then the implementation (the TDD method · Test-Driven Development). Result · 86 automated tests that run on every code change. When I touch a calculation, I know immediately if I've broken something. For a tool that handles money, that's non-negotiable.

— The honest math

What it really costs.

A lot of people asked me "OK but how much does it cost you each month to run your thing?" Here's the full breakdown.

ServiceMonthly costWhy I pay (or not)
Supabase · free plan€0Plenty for my personal data (a few hundred transactions max).
Vercel · Hobby plan€0The free plan is fine for personal use, enough for someone who logs in now and then.
Yahoo Finance / CoinGecko / Frankfurter€0All the APIs I use are free on their free tier, perfectly suited to personal use.
Domain (optional)~ €1/monthIf you want a custom name, otherwise the free Vercel URL is enough.
Total€0 to €1 / month
Running cost
~ €0
All the services I use have a free tier that's plenty for personal use.
Build time
~ 1 week
For the solid base. The polish and additions keep going, in the evenings, in small touches.
Automated tests
86
On the average-cost calculations, FX conversions, portfolio aggregation. Non-negotiable for a financial tool.

The real cost isn't the money. It's the time. Count on 30-50 hours to get a solid version that does exactly what you need, if you know how to use Claude Code. If you're starting out with AI, plan for more.

But what you really gain is total ownership of your data and your views. You're no longer dependent on a broker that can change its terms, kill a feature, or disappear. Your data is at home, computed the way you want, displayed the way you want.

— The flip side

What gave me the most trouble.

To be transparent, here are the 3 things that cost me the most time · not obvious at the start, important to know if you want to dive in.

  1. The historical exchange rates. At first, I was computing the average cost at the current EUR/USD rate. That's wrong. If you bought Apple in March 2024 when EUR/USD was at 1.09 and today it's at 1.07, the conversion changes. Solution · record the snapshot rate at the moment of each purchase (via Frankfurter, the ECB's API). 2 days to do it cleanly, but it's the foundation for everything else.
  2. Handling sells (realized vs unrealized). When you sell part of a position, how do you recompute the average cost of what's left? There are several methods (FIFO, LIFO, global weighted average). I chose the global weighted average in EUR · sells don't touch the average cost, they just generate a realized gain/loss. Simpler to reason about, and compliant with French tax rules (the weighted-average-cost method).
  3. Time zones. Yahoo Finance returns its dates in UTC. My server runs in another time zone. My users (me) are in Europe. If you're not careful, you end up with a purchase "on March 14" showing "March 13" on the chart. 1 day to understand it, 2 hours to fix it once you do.

The thing to NEVER do with your financial tool

Never deploy your financial tool with public access. Even if you think "nobody's going to find it," even if you don't put your real positions in. Your financial data (even fake) can be used for profiling. Private auth via password or JWT cookie, middleware blocking on all routes. It's the first thing I did before putting anything on Vercel.

— Going further

If you want to reproduce it.

The central idea of this article is that today, with AI tools, you can build your own tools without being a developer. Not just a finance tracker. Any tool you need that no SaaS does properly for you.

Here are the 4 pieces of advice I'd give you if you want to take on a similar project:

  1. Start by writing down on paper what you want to see. Not the tech. Not the screens. Just the questions your tool has to answer. For me · "where did I buy," "how much did I put in," "was I right to wait." As soon as your list is clear, the build is 80% done.
  2. Use Claude Code in pair-programming. You don't type the code, you steer. You give a clear goal, Claude proposes, you approve or you correct. It's exactly like working with a very fast and very patient junior dev. My detailed Claude Code tips here.
  3. For a tool that handles important data (money, health, contracts), automated tests are mandatory. Ask Claude Code to write the tests BEFORE the implementation. That's what lets you touch the code 6 months later without breaking everything.
  4. Private first, public later (or never). Auth via JWT cookie or Supabase Auth, middleware blocking. And before you put anything online, run a security audit. Claude Code can help you with that too · "scan this project and list the XSS, SQL injection, and database permission flaws."

The real message of this article

With AI today, you really can create tools that make your life easier. No need to be a coder. No need for a team. No need for funding. Just to know exactly what you want and to steer Claude Code (or an equivalent). All the articles I share on this site are inspiration in that direction · big projects like the Eurofiscalis booking tool, small tools like Jerwis Finance. The ideas you have in your head are just a few days of work away.

— FAQ

What people ask me most often.

Is the tool public? Can I use it?

No. It's a personal tool, behind private auth. My positions are visible only to me. You can, however, clone the source code if I make it public, or build your own with Claude Code by drawing on what I describe in the article.

Do you need to be a developer to do this?

No, but you do need to know how to drive Claude Code (or an AI equivalent). I'm not a developer, I'm an entrepreneur. What matters is knowing what you want, breaking it down into clear steps, and reviewing what the AI proposes. If you want to learn to use Claude Code, I have a full guide here.

Why not an existing tool like Sharesight or Finary?

I tried them. Sharesight is expensive and US/UK-centric, poorly suited to French tax rules. Finary does a lot but doesn't show you your entry points on the chart and has no dated wishlist. None of them compute the average cost in EUR using the historical rate. And above all · they own your data. That's what made me switch.

How long does it take if I start now?

If you're used to Claude Code and you know exactly what you want · 1 to 2 weeks for a solid base. If you're just starting out with AI · more like a month working evenings and weekends. The code is 30% of the time. The rest is testing, tuning the rounding, simplifying the UX.

And security-wise, is it risky to put your financial data online?

No more than with any broker. Private auth via a signed JWT cookie, a long password (12 characters minimum, bcrypt on the server side), middleware that blocks any route without a valid session, security headers (CSP, HSTS, X-Frame-Options). And above all · no tracking, no ads, no third party I give access to. The only outside connections are the price APIs (Yahoo, CoinGecko, Frankfurter), which only ever receive tickers, never my positions.

You had the idea and you built it. Could you build it for someone else?

No, I don't do client work. But the whole point of this article is to show you that you can do it yourself. If you want to learn, all my articles are there for that, and my AI Playbook newsletter shows you every week what I'm building.

Jérémy Sagnier
Thanks for reading this far 👋

Shall we keep going?

I test AI for real and I share what works, no jargon, no hype. If this article helped you, the easiest way to not miss anything is my Friday letter. And if you have a question or a doubt: reply to me, I read everything.

Get the newsletter → Read more articles