How to Build a DCA Tracker in NotionWith Automatic Cost Basis & Live P&L
Dollar-cost averaging works best when you can see your actual average cost basis and current P&L clearly. This guide shows you how to build a Notion DCA tracker that logs every purchase, calculates your average buy price automatically, and shows live profit and loss via Pulsn.
What you’ll need
- ✓A Notion account (free tier works fine)
- ✓A Pulsn account (free for 1 database — use it for the Portfolio database)
- ✓About 20 minutes for the initial setup
How the two-database structure works
A DCA tracker needs two things: a log of every individual purchase, and a summary view per asset. Notion handles this naturally with two linked databases.
DCA Purchases
One row per purchase. Each row records the date, units bought, price paid, and total spent. You add a row every time you buy.
Portfolio
One row per asset. Rollups aggregate all purchases for that asset — giving you total units, total spent, and automatically calculated average buy price.
Pulsn connects to the Portfolio database and keeps the Current Price property updated — so your P&L is always based on the latest price, not yesterday’s.
Create the DCA Purchases database
This is your purchase log. Every time you buy, you add one row. Set it up with these properties:
| Property | Type | Purpose |
|---|---|---|
| Asset | Title | Name of the coin (e.g. Bitcoin) |
| Portfolio | Relation | Links this purchase to the asset in your Portfolio database |
| Date | Date | When you made this purchase |
| Units Bought | Number | How many coins/tokens you bought |
| Price Paid | Number | Price per coin at time of purchase |
| Total Spent | Formula | prop("Units Bought") * prop("Price Paid") |
| Notes | Text | Optional — reason for buying, exchange used, etc. |
The Total Spent formula is: prop("Units Bought") * prop("Price Paid")
Create the Portfolio database
This is your summary view — one row per asset. The Rollup properties pull aggregated totals from your purchases log.
| Property | Type | Purpose / Formula |
|---|---|---|
| Asset | Title | Name of the coin (e.g. Bitcoin) |
| Purchases | Relation | All purchase rows linked to this asset |
| Total Units | Rollup | Sum of Units Bought across all purchases |
| Total Spent | Rollup | Sum of Total Spent across all purchases |
| Avg Buy Price | Formula | prop("Total Spent") / prop("Total Units") |
| Current Price | Number | Auto-filled by Pulsn from CoinGecko |
| Current Value | Formula | prop("Current Price") * prop("Total Units") |
| P&L | Formula | prop("Current Value") - prop("Total Spent") |
| P&L % | Formula | (prop("P&L") / prop("Total Spent")) * 100 |
Link the databases and set up Rollups
- 1In the DCA Purchases database, add a Relation property pointing to your Portfolio database. Call it “Portfolio”.
- 2For each purchase row, use the Relation to link it to the correct asset in Portfolio. (e.g. your Bitcoin purchases all link to the Bitcoin row in Portfolio.)
- 3In the Portfolio database, add a Rollup called “Total Units”. Set it to: Relation = Purchases, Property = Units Bought, Calculate = Sum.
- 4Add a second Rollup called “Total Spent”. Set it to: Relation = Purchases, Property = Total Spent, Calculate = Sum.
- 5Now add the Avg Buy Price Formula property:
prop("Total Spent") / prop("Total Units"). This automatically updates every time you add a new purchase.
Connect Pulsn for live prices
Connect Pulsn to your Portfolio database — not the Purchases database. For each asset row, set up a sync flow that maps the CoinGecko price to your Current Price property.
Once connected, your Current Value and P&L formulas will automatically reflect the latest price — every 24h on the free plan, every hour on Growth, every 15 minutes on Power.
Connect Notion free →Logging a new DCA purchase
Every time you buy, open the DCA Purchases database and add a row:
- 1Set the Asset name (or use a consistent name so filtering is easy)
- 2Set the Date to today
- 3Enter Units Bought and Price Paid — Total Spent calculates itself
- 4Link to the correct Portfolio asset via the Relation property
- 5Optionally add a note (e.g. 'Weekly DCA — scheduled buy')
The Avg Buy Price in your Portfolio row updates instantly — no manual recalculation needed.
Tips for your DCA tracker
Add a Purchase Count rollup
In Portfolio, add a Rollup that counts the number of linked Purchases rows (Calculate = Count). This tells you how many times you've bought each asset at a glance.
Filter the Purchases log by asset
In the DCA Purchases database, add a filter view per asset (e.g. 'Bitcoin purchases') so you can see your full DCA history for each coin separately.
Sort Purchases by Date descending
Set your default sort to Date (newest first) so your most recent purchase always appears at the top when you open the log.
Track sells too
Add a 'Transaction Type' Select property (Buy / Sell) to the Purchases database. When you sell, add a row with negative units. Your Rollup totals will adjust accordingly.
Ready to build your DCA tracker?
Connect Pulsn to keep your Current Price updated automatically. Free for one database.
Connect Notion for free →