Skip to main content

Mistake Journal

Ko-fi

Buy Me A Coffee

Learn from your trading mistakes. Track patterns in your bad decisions.

Mistake Journal is a CLI trade journal that focuses on what went wrong and why. Log your trades with emotions, reasoning, and outcomes - then analyze patterns in your losing trades to become a better trader.

Features

  • Trade Logging: Record entries with emotions, reasoning, market conditions
  • Mistake Tagging: Categorize errors (FOMO, revenge trade, no stop loss, etc.)
  • Pattern Analysis: AI identifies recurring mistakes in your history
  • Emotion Tracking: Correlate emotional state with trade outcomes
  • Weekly Reports: Summarize wins, losses, and lessons learned
  • Export: JSON/CSV export for external analysis

Installation

pip install mistake-journal

Quick Start

# Log a new trade
mistake-journal log

# Quick log with inline data
mistake-journal log --symbol BTC --action buy --price 45000 --emotion anxious

# Review your journal
mistake-journal review

# Analyze your mistakes
mistake-journal analyze

# Weekly summary
mistake-journal report --week

Example Session

$ mistake-journal log

NEW TRADE ENTRY
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Symbol: DOGE
Action [buy/sell]: buy
Entry price: 0.15
Position size ($): 500
Date (enter for now):

PRE-TRADE STATE
How are you feeling? [1-5 scale]
  1=Fearful  2=Anxious  3=Neutral  4=Confident  5=Euphoric
Emotion level: 5

Why did you enter this trade?
> Elon tweeted and it's pumping, don't want to miss out

Did you have a plan before entering? [y/n]: n
Stop loss set? [y/n]: n
Take profit target? [y/n]: n

Tags (comma-separated): fomo, no-plan, social-media
Notes: Saw it on Twitter, jumped in without thinking

Entry logged! Remember to close this trade later with:
  mistake-journal close --id 47
$ mistake-journal close --id 47

CLOSING TRADE #47 (DOGE)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Exit price: 0.11
Exit date (enter for now):

OUTCOME: -$133.33 (-26.7%)

POST-TRADE REFLECTION
What went wrong (or right)?
> Bought the top, it dumped right after. Classic.

What would you do differently?
> Wait for a pullback, set a stop loss, don't trade on tweets

Lesson learned: Don't chase pumps based on social media

Trade closed and saved!

Analyze Your Patterns

$ mistake-journal analyze

MISTAKE PATTERN ANALYSIS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Total trades: 47
Win rate: 38%
Avg winner: +$234
Avg loser: -$189

TOP MISTAKE PATTERNS:

1. FOMO (12 trades, 83% loss rate)
   - Avg loss: -$201
   - Usually occurs when: emotion level 4-5
   - Common symbols: DOGE, SHIB, meme coins

2. No Stop Loss (18 trades, 67% loss rate)
   - Avg loss when wrong: -$312 (vs -$98 with stops)
   - "Let me just hold and see" → usually gets worse

3. Revenge Trading (6 trades, 100% loss rate)
   - Always follows a losing trade within 1 hour
   - Avg loss: -$287

4. Overconfidence (8 trades, 62% loss rate)
   - Emotion level 5, large position sizes
   - Avg position: 15% of portfolio (vs your 5% rule)

INSIGHTS:
• You perform best when emotion level is 2-3 (neutral/slightly cautious)
• Your worst day is Monday (42% win rate vs 51% other days)
• Trades with a written plan: 58% win rate
• Trades without a plan: 24% win rate

RECOMMENDATION:
Stop trading meme coins on social media hype. Your win rate on
these is 12%. Consider a 24-hour waiting rule for high-emotion trades.

Mistake Tags

Built-in tags (or add your own):

Tag Description
fomo Fear of missing out - chased a pump
revenge Tried to "win back" losses immediately
no-plan Entered without clear entry/exit criteria
no-stop No stop loss set
oversized Position too large for risk tolerance
overtrading Too many trades in short period
averaging-down Added to a losing position
moved-stop Moved stop loss to avoid being stopped out
early-exit Sold winner too early out of fear
held-loser Held loser hoping it would recover

Commands

mistake-journal log                  # Log new trade
mistake-journal close --id <ID>      # Close a trade
mistake-journal review               # Browse journal entries
mistake-journal analyze              # Pattern analysis
mistake-journal report [--week/--month]  # Performance report
mistake-journal tags                 # Manage custom tags
mistake-journal export --format csv  # Export data
mistake-journal stats                # Quick statistics

Use as Library

from mistake_journal import Journal

journal = Journal()

# Log a trade
trade_id = journal.log_trade(
    symbol="BTC",
    action="buy",
    price=45000,
    size=1000,
    emotion=4,
    reasoning="Breakout pattern",
    tags=["technical", "planned"]
)

# Close it
journal.close_trade(
    trade_id,
    exit_price=48000,
    reflection="Stuck to the plan, took profits at target"
)

# Analyze
analysis = journal.analyze()
print(analysis.top_mistakes)
print(analysis.recommendations)

Storage

Journal data stored locally in ~/.mistake-journal/:

  • trades.json - All trade entries
  • config.json - Settings
  • tags.json - Custom tags

Philosophy

The goal isn't to track P&L (use a spreadsheet for that). The goal is to:

  1. Force reflection on every trade
  2. Identify patterns you can't see in the moment
  3. Build self-awareness about emotional trading
  4. Create accountability through written records

Most traders repeat the same 3-4 mistakes. Find yours. Fix them.

License

MIT License

Metadata

Release files for mistake-journal 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mistake-journal 0.1.0
File Size Uploaded
mistake_journal-0.1.0.tar.gz 16.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mistake-journal 0.1.0
File Interpreter ABI Platform
mistake_journal-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 28.9 kB

Release files / mistake_journal-0.1.0.tar.gz

Download URL mistake_journal-0.1.0.tar.gz
Size 16.5 kB
Tags Source
SHA-256 checksum
How to use checksums
dbacef4fdf8083c895d9f7be28ae1d27a49827630f1c94789a59941508e50b3e
BLAKE2b-256 checksum
How to use checksums
557125aef04a3aa0dbdeadbabbc5b3aa9f2eacae744da27ff7a09db14b270124
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / mistake_journal-0.1.0-py3-none-any.whl

Download URL mistake_journal-0.1.0-py3-none-any.whl
Size 12.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6c346966cc2b371244a5c8356698cf3b5f842229a47d2f4fa63a807558482e72
BLAKE2b-256 checksum
How to use checksums
3cd995a81a7cfc11f660941ef908b246d2cdaa9066038586ff82026eadb0c4d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page