A modern web application to track and analyze mutual fund performance with real-time data fetching, beautiful UI, and automated daily updates.
- Real-time Data Fetching: Automatically fetches latest NAV and returns data from mutual fund APIs
- Clean Web Interface: Responsive UI built with Flask and modern web technologies
- Smart Caching: Redis-backed caching with in-memory fallback for optimal performance
- Advanced Filtering: Search and filter funds by name or category
- Export Functionality: Download fund data as CSV for further analysis
- Auto-refresh: Scheduled daily updates at 11 AM (configurable)
- Performance Tracking: Track returns across multiple timeframes (1D, 1W, 1M, 3M, 6M, 1Y, 3Y, 5Y)
- Python 3.8+
- Redis (optional, for caching)
Simply double-click the startup script:
start.bat: Checks dependencies and starts the Flask server
Or run from command line:
.\start.batThis will:
- Create virtual environment (if needed)
- Install Python dependencies
- Start the Flask server at http://localhost:5000
- Automatically open your browser
- Create virtual environment:
python -m venv venv
venv\Scripts\activate # On Windows- Install dependencies:
pip install -r requirements.txt- Run Flask server:
python app.pyThe application will be available at http://localhost:5000
mutual_funds/
βββ app.py # Flask backend server
βββ fetch_mf_returns.py # Data fetching logic
βββ config.py # Configuration settings
βββ requirements.txt # Python dependencies
βββ start.bat # One-click launcher
βββ templates/ # Flask HTML templates
βββ static/ # Static assets (CSS, JS)
βββ logs/ # Application logs
Edit the funds list in fetch_mf_returns.py:
funds = [
{"name": "Fund Name", "code": "FUND_CODE"},
# Add more funds here
]- Open Task Scheduler
- Create Basic Task
- Set trigger: Daily at 11:00 AM
- Set action: Start
start.bat(full path:D:\Github clones\mutual_funds\start.bat) - Enable "Run whether user is logged on or not"
- Set "Start in" directory to:
D:\Github clones\mutual_funds
$action = New-ScheduledTaskAction -Execute "D:\Github clones\mutual_funds\start.bat" -WorkingDirectory "D:\Github clones\mutual_funds"
$trigger = New-ScheduledTaskTrigger -Daily -At 11:00AM
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
Register-ScheduledTask -TaskName "MutualFundTracker" -Action $action -Trigger $trigger -Settings $settings -Description "Daily mutual fund data refresh at 11 AM"GET /- Main dashboard (web UI)GET /api/funds- Get all fund data (JSON)POST /api/refresh- Force data refreshGET /health- Health check endpoint
- Quick Search: Use the search bar to find specific funds instantly
- Category Filter: Filter by Large Cap, Mid Cap, Small Cap, Liquid, or Debt funds
- Sort Columns: Click any column header to sort by that metric
- Export Data: Click the download button to export current view as CSV
- View Details: Click any fund row to see detailed performance metrics
- Ensure Python 3.8+ is installed:
python --version - Check if port 5000 is free:
netstat -an | findstr :5000 - Verify all dependencies:
pip install -r requirements.txt
- Check internet connection
- Verify mutual fund API is accessible
- Clear Redis cache (if using):
redis-cli FLUSHALL - Check logs in
logs/app.log
Create a .env file for custom configuration:
FLASK_ENV=development
REDIS_URL=redis://localhost:6379
LOG_LEVEL=INFO- Caching: 10-minute TTL for fund data
- Async fetching: Parallel API calls for faster data retrieval
- Optimized rendering: Efficient data handling for large datasets
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is open source and available under the MIT License.
- Built with Flask and modern web technologies
- Uses public mutual fund APIs for data
- Redis for high-performance caching
Note: This application is for educational and personal use. Always verify financial data from official sources before making investment decisions.