⚠ Chart.js failed to load from all CDNs — charts will not render. Try opening this file locally instead of via htmlpreview.
PERF//METRICS
Trading Journal Analytics
Connected
Connect to Notion
Credentials are saved in your browser's localStorage — they never leave your machine. On mobile, use 📱 Mobile Bookmark to generate a URL with credentials embedded in the hash — iOS clears localStorage aggressively but a bookmarked URL persists forever.
CORS proxy required: Notion blocks direct browser API calls. You need a free Cloudflare Worker — takes ~2 minutes to set up (instructions below).
Notion Integration Token
CORS Proxy URL your Cloudflare Worker URL — required
How to set up the Cloudflare Worker (free, ~2 min):
1. dash.cloudflare.com → Workers & Pages → Create → Create Worker
2. Replace all default code with the script below, click Deploy
3. Copy the worker URL (shown after deploy, ends in .workers.dev) and paste above
Worker script(click to copy)export default {
async fetch(request) {
if (request.method === 'OPTIONS') {
return new Response(null, { headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': '*',
'Access-Control-Allow-Methods': 'GET,POST,PATCH,DELETE,OPTIONS',
}});
}
const url = new URL(request.url);
const target = 'https://api.notion.com' + url.pathname + url.search;
const headers = new Headers(request.headers);
headers.delete('origin');
headers.delete('host');
const resp = await fetch(target, {
method: request.method,
headers,
body: request.method !== 'GET' ? request.body : undefined,
});
const out = new Response(resp.body, resp);
out.headers.set('Access-Control-Allow-Origin', '*');
out.headers.set('Access-Control-Allow-Headers', '*');
return out;
}
}↑ Click to copy · Free tier: 100,000 requests/day · The worker only forwards calls to api.notion.com
Security note: Your Notion token travels through the worker, but the code above does not log or store it — you own and control the worker. Tokens are stored only in your browser's localStorage and cleared when you click "Clear Saved".
Range
→
Fetching trades from Notion…
Win Rate
0.0%
0 wins / 1 trades
Profit Factor
0.00
gross win ÷ loss
Expectancy
-$1.20
wr×avgW − lr×avgL
Winning Days
0
1 losing / 1 days
Max Drawdown
$0.00
peak to trough
Max Consec. Losses
1
from 2026-02-20
Process Compliance
0%
0 of 1 trades
Missed Profit
$0
no early exits
Cumulative P&L-$1.20
Win / Loss Days0W / 1L
Date
Trades
P&L
Result
2026-02-20
1
-$1.20
LOSS
P&L Distributionper trade
Win Ratedonut
Drawdown Curvefrom peak
Daily Results SequenceMax 1 loss
Daily results (chronological)
L
⚠ Max consecutive losses: 1
Avg Win vs Avg Loss by Sessionexpectancy
Playbook Performance1 models
Bias AlignmentWith: 0%
Process Rulescompliance breakdown
Psychology vs P&Lstress & confidence
FOMO / Impulsive TradesFOMO on: 0 trades · WR: 0% vs 0%
✓ Deployed to GitHub Pages
Live at https://jahrfm.github.io/trading-dashboard/ — updates go live in ~30 seconds, no caching. On mobile: use 📱 Mobile Bookmark to generate a bookmarkable URL with credentials baked in.
📱 Mobile Bookmark URL
Your credentials are embedded in the URL hash (the part after #). The hash is never sent to any server — it lives only in your browser. Bookmark this URL on your phone and the dashboard will load automatically every time.
⚠ This URL contains your Notion token. Only share it with yourself — treat it like a password.