Read the statement by Michael Teeuw here.
MMM-Fintech - Multi-Asset Portfolio Display (Crypto, Stocks, ETFs, Forex)
-
Hi everyone,
I’d like to share a module I’ve been working on: MMM-Fintech – a portfolio display module that shows your financial holdings with real-time pricing. I built it to fill my needs. I took a modular approach that would allow writing additional connectors for other data sources.
Screenshot

Features
- Multi-Asset Support: Crypto, stocks, ETFs, mutual funds, and forex rates in one unified display
- Coinbase Integration: Automatically fetches crypto holdings via CDP API
- Twelve Data Integration: Real-time pricing for stocks, ETFs, mutual funds, and forex
- Manual Holdings: Add staked assets or brokerage positions that APIs can’t see
- Market Hours Scheduling: Limits stock/forex polling to trading hours to conserve API calls
- Privacy Mode: Hide quantities and values – show only symbols, prices, and changes
- Currency Conversion: Display values in USD, EUR, GBP, PHP, or other currencies
- Encrypted Credentials: AES-256-GCM encryption for your API keys
Links
- GitHub: https://github.com/sonnyb9/MMM-Fintech
- Installation & Setup: See the README for step-by-step instructions
Requirements
- Coinbase CDP API key (free, for crypto)
- Twelve Data API key (free tier: 800 calls/day, for stocks/forex)
License
MIT
Feedback Welcome
This is my first MagicMirror module. I’d appreciate any feedback, bug reports, or feature suggestions. Feel free to open issues on GitHub or reply here.
Thanks!
-
Was looking at your roadmap, a suggestion:
In addition to syncing with brokers, you could also look at portfolio tracking products like https://www.sharesight.com/nz/ -
@scottwalsh Interesting idea, I’ll have a look at that. I was thinking about using Plaid, but it would cost money and I’m frugal :)
-
I’m working on a patch to add snap trade support. A snaptrade branch should appear in my repo in the next day or two. Thanks for the suggestion!
-
@ArnoldoB Noted the screenshot seems to be a broken file on GitHub (and in the post here).
-
@scottwalsh I fixed the screenshot.
I also released a new v0.6.0 of MMM-Fintech with Snaptrade support. It can replace the Coinbase free API and TwelveData API while providing better holdings data. Coinbase was reporting staked crypto holdings as $0 balance forcing the use of a manual_holdings.json file. Snaptrade is pay as you go, so I left coinbase, TwelveData, and the manual holding options in place as free options. I’m still using TwelveData for pricing updates since it’s free for up to 800 queries per day.
-
I’ve released v0.8.0. Here’s the release notes:
[0.8.0] - 2026-01-09
Added
- Portfolio Performance Charts: Visual tracking of portfolio value over time
- Area chart with gradient fill
- Hourly snapshots (rolling 48 hours) for 1D view
- Daily snapshots for 1W, 1M, 3M, 1Y, All views
- Chart.js integration via CDN
- Chart Configuration Options:
showCharts- Enable chart display (default: false)chartMode- “combined” / “separate” / “exclude-crypto”chartPeriod- “1D” / “1W” / “1M” / “3M” / “1Y” / “All”showPeriodSelector- Show period buttons for touch devices (default: false)historyRetention- Days to retain daily history (default: 1825 / 5 years)
- History Storage: Local
history.jsonfile for snapshot data- ~600 bytes per snapshot (10 holdings)
- ~250 KB after 1 year, ~1.1 MB after 5 years
Changed
- Price updates now record hourly snapshots for chart data
- Holdings sync now records daily snapshots for chart data
- Portfolio Performance Charts: Visual tracking of portfolio value over time
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login