Learn investing and trading by doing. Practice with a virtual account, test real strategies risk-free, and complete a 21-day challenge with daily lessons and exercises. PaperProfit can teach you about investing, trading, risk management, markets, portfolio management, and a wide range of investment strategies using real market data, all without risking real money.
Please note that current version is a MVP and code still has bugs and learning journey content is still incomlete.
- 21-Day Learning Journey: Structured educational path with daily lessons, quizzes, and exercises
- Paper Trading: Simulate buy/sell orders without real money
- Portfolio Management: Track multiple accounts and positions
- Real Market Data: Integration with Yahoo Finance, Alpha Vantage, and Financial Modeling Prep
- Automated Trading Bot: Background jobs for order processing and strategy execution
- Performance Analytics: Track your gains/losses and portfolio performance
A structured educational program designed to take you from beginner to confident trader in 21 days:
- Daily Lessons: Each day covers a specific topic with comprehensive study materials and visual aids
- Interactive Quizzes: Test your knowledge with multiple-choice quizzes after each lesson
- Practical Exercises: Apply what you've learned with hands-on exercises
- Progress Tracking: Visual progress tracking with XP system and completion status
- Sequential Unlocking: Days unlock as you master previous lessons (requires 80% quiz score to advance)
- Flexible Learning: Review completed lessons anytime and retake quizzes
The 21-day journey covers essential topics including:
- Market fundamentals and terminology
- Portfolio management principles
- Risk management strategies
- Technical and fundamental analysis
- Trading strategies and execution
- Psychology of trading
- And more...
PaperProfit includes implementation templates for various trading strategies across multiple categories:
- Buy & Hold
- Index Fund Investing
- Dollar-Cost Averaging (DCA)
- Dividend Growth Investing
- Value Investing
- Growth Investing
- Sector Rotation
- Asset Allocation & Rebalancing
- Trend Following
- Breakout Trading
- Momentum Trading
- Mean Reversion
- RSI Overbought/Oversold
- Scalping
- VWAP Strategy
- Opening Range Breakout
- News-Based Trading
- Covered Calls
- Cash-Secured Puts
- Iron Condor
- Warren Buffett (Value Investing)
- Ben Graham (Deep Value)
- Peter Lynch (GARP)
- Ray Dalio (All Weather Portfolio)
- Jesse Livermore (Trend & Breakout)
- John Bogle (Passive Index)
- Stanley Druckenmiller (Macro Trend)
- Jim Simons (Quantitative Statistical Arbitrage)
- Stock analysis using AI
- Trading strategy generation
- Market insights and sector analysis
- Multi-stock comparison
- Framework: FastAPI
- Database: SQLite with SQLAlchemy ORM
- Task Scheduling: APScheduler
- Market Data: yfinance, alpha_vantage
- Python: 3.x
- Framework: Vue 3
- Build Tool: Vite
- UI: Custom components
- Python 3.8 or higher
git clone <repository-url>
cd paper_profit./start.shThis will:
- Create and activate a virtual environment
- Install dependencies
- Run database migrations (if needed)
- Start the FastAPI server on port 5000
- Start background jobs for order processing and market data updates
Go to http://localhost:5000
cd backend/app
python api.pyAPI will be available at http://localhost:5000
API documentation at http://localhost:5000/docs
cd backend/app
python background.pycd frontend
npm run devFrontend will be available at http://localhost:5173
paper_profit/
├── backend/
│ ├── app/
│ │ ├── api.py # FastAPI application
│ │ ├── main.py # CLI entry point
│ │ ├── background.py # Background job scheduler
│ │ ├── analysis/ # Technical & fundamental analysis
│ │ ├── config/ # YAML configuration files
│ │ ├── jobs/ # Scheduled jobs
│ │ │ ├── trading_bot.py # Main trading bot logic
│ │ │ ├── process_orders.py # Order execution
│ │ │ ├── update_market_data.py # Market data updates
│ │ │ └── update_positions.py # Position updates
│ │ ├── neumann/ # 21-Day Learning Journey content
│ │ │ └── [1-21]/ # Daily lessons, quizzes, and exercises
│ │ ├── octopus/ # External service integrations
│ │ │ ├── ai_platforms/ # AI service providers
│ │ │ ├── brokers/ # Broker integrations
│ │ │ └── data_providers/ # Market data providers
│ │ ├── services/ # Business logic
│ │ ├── storage/ # Database models & repositories
│ │ ├── tests/ # Unit tests
│ │ └── utils/ # Utility functions
│ ├── requirements.txt # Python dependencies
│ └── PaperProfit.db # SQLite database
├── frontend/
│ ├── src/
│ │ ├── components/ # Vue components
│ │ ├── App.vue # Root component
│ │ └── main.js # Entry point
│ ├── package.json # Node dependencies
│ └── vite.config.js # Vite configuration
├── start.sh # Quick start script
└── README.md # This file
GET /api/accounts- List all accountsPOST /api/accounts- Create new accountGET /api/accounts/{id}- Get account detailsPUT /api/accounts/{id}- Update accountGET /api/accounts/{id}/summary- Account summary with positionsGET /api/accounts/{id}/portfolio- Portfolio holdingsGET /api/accounts/{id}/performance- Performance metricsPOST /api/accounts/{id}/buy- Create buy orderPOST /api/accounts/{id}/sell- Create sell order
GET /api/strategies- List all strategiesPOST /api/strategies- Create new strategyGET /api/strategies/{id}- Get strategy detailsPUT /api/strategies/{id}- Update strategy
GET /api/instruments/search?query={q}- Search for stocksGET /api/instruments/get/{symbol}- Get instrument detailsGET /api/instruments/{symbol}/market-data?period={p}- Historical data
POST /api/ai/analyze-stock- AI-powered stock analysisPOST /api/ai/generate-strategy- Generate trading strategyGET /api/ai/market-insights- Market insightsPOST /api/ai/compare-stocks- Compare multiple stocks
GET /api/learning-days- Get all learning daysGET /api/learning-days/{day}/study- Get study content for a specific dayGET /api/learning-days/{day}/quiz- Get quiz for a specific dayGET /api/learning-days/{day}/exercise- Get exercise for a specific dayGET /api/learning-days/{day}/image- Get image for a specific dayGET /api/settings/learning_journey- Get learning progressPUT /api/settings/learning_journey- Update learning progress
GET /api/settings- Get settingsPOST /api/settings- Create settingGET /api/service-list- Get service listGET /api/strategy-list- Get strategy templatesGET /api/guide- Investment guide
Edit strategy templates in:
backend/app/config/strategy-list.yamlbackend/app/config/strategy-parameters.yaml
Configure data providers and services in:
backend/app/config/service-list-settings.yaml
The application runs several scheduled jobs:
- Trading Bot - Executes strategies and generates signals
- Process Orders - Processes pending orders
- Update Market Data - Fetches latest market prices
- Update Positions - Updates position valuations
PaperProfit uses SQLite for simplicity. The database is automatically created and migrated on first run.
cd backend/app
python main.py migrateThis project is for educational purposes. Use at your own risk. Past performance does not guarantee future results.
PaperProfit is a simulation platform for educational purposes only. It does not execute real trades. Always do your own research and consult with financial advisors before making real investment decisions.
- Market data is delayed (not real-time)
- Some advanced options strategies are templates only
- AI features require API key
- More broker integrations
- Advanced charting and technical indicators
- Risk management tools
For issues, questions, or contributions, please open an issue on GitHub.
Made with ❤️ for traders and investors learning the markets.
