Indie Trader Journal  ·  v1.6  ·  Local-first  ·  Free

Your portfolio tracker thinks like a trader.

indieTJ is a private, local-first trading journal built by a real retail trader. Capital recovery logic, effective cost tracking, and full transaction history — entirely inside your browser. No signup. No cloud. No subscriptions. Ever.

Available as browser extension: Chrome Extension Firefox Add-on
✓ 100% Local Storage ✓ No Cloud Sync ✓ Capital Recovery Model ✓ Effective Cost Tracking ✓ Works Offline ✓ Zero Frameworks ✓ No Signup
🔒No Signup Required
☁️No Cloud Sync
💳No Subscriptions
🗄️Your Data Stays Yours
📈Built by a Real Trader
📴Works Completely Offline
Watch indieTJ

See capital recovery
in action.

A full walkthrough of the capital recovery model, effective cost calculation, transaction history, average cost calculator, and AI prompt system.

The Problem

Most portfolio apps
fail real traders.

They were designed for passive investors. Not for traders who manage multiple entries, partial exits, and need to know exactly how much capital is still at risk.

📊
They only show numbers
A list of positions with average price tells you nothing about unrecovered capital, effective cost, or real risk exposure after partial sells.
☁️
Your data lives in their cloud
Your entire trading history, positions, psychology — uploaded to servers you don't control, synced to apps you didn't authorize, monetized as behavioral data.
💳
Subscriptions for basic features
Advanced cost tracking locked behind $20/month. Import/export restricted. Basic calculations paywalled. You pay forever just to see your own data.
🧮
Wrong average cost after partial sells
Standard trackers recalculate average buy price incorrectly after partial exits. They don't model capital recovery at all — the most critical metric for a real trader.

"I built indieTJ because I was tired of tools that couldn't tell me how much of my original capital I'd actually recovered — and how much was still at risk in each position."

— indieTJ Author  ·  Retail Trader Since 2019
The Capital Recovery Model

Not your average cost.
Your effective cost.

indieTJ tracks how much of your original capital is still unrecovered in each position — not just what you paid per share. This is the key metric for real position management.

// Worked Example — BUY 2000 shares @ $2.64 → SELL 1000 @ $3.70
01
Initial Buy
$5,280
2000 shares × $2.64 — total capital deployed into position
02
Partial Sell
$3,700
1000 shares × $3.70 — capital returned to your account
03
Effective Cost
$1,580
$5,280 − $3,700 — capital still at risk in remaining 1000 shares
Capital at Risk 70.08% recovered — $3,700 of $5,280
💡
Your Avg Buy Price is now $1.58 — not $2.64. Only $1,580 of your original capital remains at risk across 1,000 remaining shares. Sell more and this number drops further. When your total proceeds equal total invested, remaining shares become FREE.
⚖️
Effective Cost
Unrecovered capital still at risk. max(0, invested − proceeds). Drops as you sell. Hits zero when FREE.
📉
Avg Buy Price
Not your original purchase price — it's unrecovered cost per remaining share. effectiveCost / qty.
🎁
Free Shares
When total proceeds exceed total invested, remaining shares cost you nothing. indieTJ marks them FREE and tracks bonus profit above recovery.
🔐
Realized P/L
Calculated against your total original investment using the capital recovery model — not just the shares you sold. Locked-in, honest accounting.
Features

Built for the way
traders actually work.

💹
Live Price Tracking via Finnhub
Enter your free Finnhub API key once. indieTJ fetches live prices with ▲/▼ arrows vs previous close, updates unrealized P/L in real time. Two-pass caching avoids data loss on mutations. Your API key never leaves your browser — it's stored in a separate localStorage key and excluded from all exports.
Finnhub API60s price cache Direction arrowsSession-only Key never exported
📋
Transaction History
Full BUY/SELL log per position. Expandable inline tree view. Date-stamped, editable, complete. See exactly how each position evolved over time.
Per-position treeCarry-over history
📅
Yearly Portfolio Journal
Multi-year tab system. Transfer positions year-to-year with full prior history preserved. Track your evolution as a trader across years.
Year tabsAuto-migration
🧮
Average Cost Calculator
Enter existing shares + avg price + new purchase details. Get new weighted average, total invested, current value, P/L per share, and total P/L instantly.
DCA analysisWeighted average
📊
Profit / Loss Calculator
Plan exits before you pull the trigger. Sell by shares or by dollar amount — see total buy value, sell value, P/L, and return % instantly.
Sell by sharesSell by amountReturn %
💾
JSON Backup & Export
Export your entire portfolio to a dated JSON file anytime. Import it back on any device. Your data is portable, human-readable, and always completely yours.
One-click exportFull importHuman-readable
📝
Position Notes
Attach notes to any position. Visible inline with 2-line clamp, full text on hover. Target prices, entry theses, reminders — all right there.
🔍
Smart Search & Sort
Live search by ticker or name. Filter Active/Closed/All. Sort by newest, oldest, name, best profit, or worst loss. Find anything instantly.
🎁
Free Share Detection
When your total proceeds exceed total invested, indieTJ automatically marks remaining shares as FREE and quantifies the bonus profit above full capital recovery.
Interface

A workspace built
for focused traders.

Portfolio View
Realized Profit
$0
Realized Loss
$1,780
Net Result
-$1,780
Capital
$43,620
Unreal. P/L
-$15,848
DFLI
Active
+$550
-$1,580
ENVX
Active
-$75
+$0
STEX
Active
+$270
+$0
BURU
Active
-$2,392
+$0
Portfolio Dashboard
Effective cost · Realized & unrealized P/L · Live prices
Avg Cost Calculator
Existing Shares
1000.0000
New Avg Price
$1.2900
P/L Total
-$580.00
P/L Per Share
-$0.2900
Average Cost Calculator
DCA planning · Weighted averages
P/L Calculator
Shares Sold
1000.0000
Total Sell Value
$2000.00
Profit / Loss
+$420.00
Return %
+26.58%
P/L Calculator
Exit planning · Return % projection
Privacy First

Your portfolio
never leaves
your machine.

indieTJ was designed around one principle: your financial data belongs to you. Stored in your browser. Controlled by you. No accounts. No analytics. No tracking. No server ever sees your data.

All data stored in localStorage — browser-local, never uploaded
Finnhub API key stored separately — never included in exports or backups
No login, no email, no personal information ever collected
No analytics, no tracking scripts, no third-party data sharing
No cookies beyond what the browser creates for localStorage
Export your entire portfolio as JSON — take it anywhere, anytime
Works fully offline — no internet required for core functionality
Your Data Vault
// localStorage · Browser-only · Your device
Portfolio dataLOCAL ONLY
API key (Finnhub)LOCAL ONLY
AI prompts & notesLOCAL ONLY
Cloud syncDISABLED
Account requiredDISABLED
Analytics / telemetryDISABLED
Subscription requiredDISABLED
Built Differently

Zero frameworks.
Zero bloat. Zero BS.

indieTJ is pure HTML, CSS, and vanilla JavaScript. No npm. No build step. No framework overhead. Open the file — it works.

app.js · indieTJ v1.6 · capital recovery engine
// Capital Recovery Engine
function calcPositionStats(pos) {
  let originalInvested = 0;
  let totalProceeds   = 0;
  let remainingQty    = 0;

  pos.transactions.forEach(tx => {
    if (tx.type === 'BUY') {
      originalInvested += tx.qty * tx.price;
      remainingQty     += tx.qty;
    } else {
      totalProceeds += tx.qty * tx.price;
      remainingQty -= tx.qty;
    }
  });

  // Capital still unrecovered
  const effectiveCost =
    Math.max(0, originalInvested - totalProceeds);

  // Drops to $0.00 when FREE
  const avgBuyPrice =
    remainingQty > 0
      ? effectiveCost / remainingQty
      : 0;

  return { effectiveCost, avgBuyPrice,
    originalInvested, totalProceeds,
    remainingQty };
}
Pure Vanilla JavaScript
Zero React. Zero Vue. No npm, no build step, no node_modules. The entire app is three files: index.html · style.css · app.js. Open it. It works.
🗄️
localStorage Architecture
All portfolio data persisted to indietj_v1 on every mutation. JSON serialized, instantly portable via Export/Import.
📴
Offline Capable
Core functionality — journal, history, calculators, AI prompts — works with zero internet. Live prices via Finnhub are fully optional.
🔌
Finnhub API (Optional)
Free Finnhub key for live prices. Two-pass caching: 60s price TTL, 24h company name TTL. Free tier covers 10–20 position portfolios. Key stored locally, never exported.
AI Workflow Integration

Your trading prompts,
always ready.

indieTJ includes a built-in AI Prompt Manager. Store, organize, and access your best ChatGPT and Claude trading prompts alongside your portfolio — no copy-paste hunting.

Star & Categorize
Tag prompts by category — analysis, entry strategy, risk management, exit planning. Star your best for instant access.
📋
One-Click Copy
Copy any prompt to clipboard in a single click. Paste directly into ChatGPT or Claude — zero friction between thought and action.
🔒
Stored Locally
Prompts live in localStorage alongside your portfolio. Exported together in your backup JSON. Private like everything else.
📊 Portfolio
🤖 AI Prompts
+ New Prompt
Position Size Analysis
Risk
Given my effective cost of $X across Y remaining shares, analyze my risk exposure if price drops to Z. Consider capital recovery status and suggest optimal partial exit levels.
DCA Entry Strategy
Entry
I hold X shares at avg $Y. Current price is $Z. Analyze a DCA scenario adding W shares. What's the new effective cost and break-even price?
Capital Recovery Exit
Exit
My effective cost is $X. I've recovered $Y of $Z invested. Suggest a partial sell ladder to achieve 100% capital recovery while retaining upside exposure.
Loss Psychology Analysis
Analysis
Help me objectively evaluate holding vs cutting a position with -$X unrealized P/L. Analyze: original thesis, current fundamentals, capital recovery status, opportunity cost.
Get indieTJ

Install in one click.
No signup. No payment.

Available directly from official browser extension stores. Open and start journaling immediately — your trading journal starts the moment you install.

Chrome Extension
For Google Chrome, Brave, Edge, Arc, and all Chromium-based browsers
Add to Chrome — Free
Firefox Add-on
Available on the official Mozilla Add-ons store. One click installation.
Add to Firefox — Free
Official stores only
No personal data collected
Free — no trial, no limits
Works immediately on install
Private by design  ·  Free forever  ·  Built by a trader

Own your trading journal.
Own your data.

No accounts. No subscriptions. No cloud. Just you, your trades, and a tool that thinks the way you do.

100% free · localStorage only · no signup · works offline · your data never leaves your browser