Skip to content

Finlearner is the upgraded version of finlearn providing even better services for better financial management and planning and investing

License

Notifications You must be signed in to change notification settings

ankitdutta428/finlearner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

9 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

FinLearner Logo
State-of-the-art Financial Analysis & Deep Learning Library

Tests PyPI version Downloads License Python 3.8+ GitHub stars


๐Ÿ”ฅ What is FinLearner?

FinLearner is a comprehensive Python library designed for quantitative researchers, algorithmic traders, and data scientists. It provides production-ready tools for:

  • ๐Ÿ“ˆ Deep Learning Forecasting โ€” LSTM/GRU models optimized for time-series prediction
  • ๐Ÿ’ผ Portfolio Optimization โ€” Markowitz Mean-Variance with Monte Carlo simulation
  • ๐Ÿ“Š Technical Analysis โ€” 20+ indicators including RSI, MACD, Bollinger Bands, Ichimoku Cloud
  • ๐ŸŽฏ Options Pricing โ€” Black-Scholes-Merton model with Greeks calculation
  • ๐Ÿง  Physics-Informed Neural Networks โ€” PINN for solving Black-Scholes PDE
  • ๐Ÿ“‰ Interactive Visualization โ€” Beautiful Plotly-powered financial charts

Philosophy: One library. All the tools you need. From data fetching to model deployment.


๐Ÿ“ฐ News

Date News
2025-12 ๐ŸŽ‰ v0.0.91 released with Physics-Informed Neural Networks (PINN) for options pricing
2025-12 ๐Ÿ“Š Added Ichimoku Cloud and advanced technical indicators
2025-12 ๐Ÿš€ FinLearner is now available on PyPI!

๐Ÿ“ฆ Installation

Install with pip (recommended)

pip install finlearner

Install from source

git clone https://github.com/ankitdutta428/finlearner.git
cd finlearner
pip install -e .

Requirements

  • Python 3.8+
  • TensorFlow 2.10+
  • NumPy, Pandas, SciPy, Scikit-learn
  • Plotly, Matplotlib, Seaborn
  • yfinance

โšก Quick Start

๐Ÿ”ฎ Stock Price Prediction with LSTM

Train a deep learning model to predict stock prices with just a few lines of code:

from finlearner import DataLoader, TimeSeriesPredictor, Plotter

# 1. Fetch and preprocess data
df = DataLoader.download_data('AAPL', start='2020-01-01', end='2024-01-01')

# 2. Initialize and train the LSTM predictor
predictor = TimeSeriesPredictor(lookback_days=60)
predictor.fit(df, epochs=25, batch_size=32)

# 3. Generate predictions
predictions = predictor.predict(df)

# 4. Visualize results
Plotter.plot_prediction(df, predictions, title="Apple Stock Prediction")

๐Ÿ’ผ Portfolio Optimization (Markowitz)

Find the optimal asset allocation using Modern Portfolio Theory:

from finlearner import PortfolioOptimizer

# Define your portfolio
tickers = ['AAPL', 'GOOG', 'MSFT', 'AMZN', 'TSLA']

# Run optimization with Monte Carlo simulation
optimizer = PortfolioOptimizer(tickers=tickers, start='2023-01-01', end='2024-01-01')
results, optimal_allocation, metrics = optimizer.optimize(num_portfolios=10000)

print("๐Ÿ“Š Optimal Allocation (Max Sharpe Ratio):")
print(optimal_allocation)
print(f"\n๐Ÿ“ˆ Expected Return: {metrics[1]:.2%}")
print(f"๐Ÿ“‰ Volatility: {metrics[0]:.2%}")

๐Ÿ“Š Technical Analysis

Apply comprehensive technical indicators to your data:

from finlearner import DataLoader, TechnicalIndicators, Plotter

# Load data
df = DataLoader.download_data('NVDA', start='2023-01-01', end='2024-01-01')

# Add all technical indicators at once
ti = TechnicalIndicators(df)
df_enriched = ti.add_all()  # Adds RSI, MACD, Bollinger Bands, ATR, Ichimoku, etc.

# Or add specific indicators
df = ti.rsi(window=14)
df = ti.macd(fast=12, slow=26, signal=9)
df = ti.bollinger_bands(window=20, num_std=2)

# Interactive candlestick chart
Plotter.candlestick(df_enriched, title="NVIDIA Technical Analysis")

๐ŸŽฏ Options Pricing (Black-Scholes-Merton)

Price European options and calculate Greeks:

from finlearner.options import BlackScholesMerton

# Create option pricer
option = BlackScholesMerton(
    S=100,      # Spot price
    K=100,      # Strike price
    T=1,        # Time to maturity (years)
    r=0.05,     # Risk-free rate
    sigma=0.2,  # Volatility
    q=0.02      # Dividend yield
)

# Calculate prices
call_price = option.price('call')
put_price = option.price('put')

# Calculate Greeks
greeks = option.greeks('call')
print(f"Call Price: ${call_price:.2f}")
print(f"Delta: {greeks['delta']:.4f}")
print(f"Gamma: {greeks['gamma']:.4f}")
print(f"Vega: {greeks['vega']:.4f}")

๐Ÿ—๏ธ Architecture

graph TB
    subgraph Data Layer
        A[DataLoader] --> |yfinance| B[Raw OHLCV Data]
    end
    
    subgraph Analysis Layer
        B --> C[TechnicalIndicators]
        B --> D[PortfolioOptimizer]
        B --> E[TimeSeriesPredictor]
    end
    
    subgraph Pricing Layer
        F[BlackScholesMerton] --> G[Option Prices + Greeks]
        H[BlackScholesPINN] --> I[PDE Solutions]
    end
    
    subgraph Visualization Layer
        C --> J[Plotter]
        D --> J
        E --> J
        J --> K[Interactive Charts]
    end
    
    style A fill:#4CAF50,color:#fff
    style E fill:#2196F3,color:#fff
    style F fill:#FF9800,color:#fff
    style J fill:#9C27B0,color:#fff
Loading

๐Ÿ“š Module Reference

Module Class Description
finlearner.data DataLoader Unified data fetching wrapper for Yahoo Finance
finlearner.models TimeSeriesPredictor LSTM-based time series forecasting
finlearner.portfolio PortfolioOptimizer Markowitz Mean-Variance optimization
finlearner.technical TechnicalIndicators 20+ technical analysis indicators
finlearner.options BlackScholesMerton European option pricing with Greeks
finlearner.pinn BlackScholesPINN Physics-Informed Neural Network for Black-Scholes
finlearner.plotting Plotter Interactive visualization with Plotly
finlearner.utils check_val Model validation utilities

๐Ÿ“Š Technical Indicators Available

Category Indicators
Trend SMA, EMA, MACD, Ichimoku Cloud
Momentum RSI, Stochastic Oscillator, CCI
Volatility Bollinger Bands, ATR
Volume OBV (On-Balance Volume)

๐Ÿงช Testing

Run the test suite:

# Run all tests
pytest tests/ -v

# Run with coverage report
pytest tests/ --cov=finlearner --cov-report=term-missing

# Run specific test module
pytest tests/test_options.py -v

๐Ÿค Contributing

We welcome contributions from the community! Here's how to get started:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Write tests for your changes
  4. Commit your changes (git commit -m 'Add AmazingFeature')
  5. Push to the branch (git push origin feature/AmazingFeature)
  6. Open a Pull Request

Development Setup

# Clone your fork
git clone https://github.com/YOUR_USERNAME/finlearner.git
cd finlearner

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install in development mode
pip install -e ".[dev]"

# Run tests
pytest tests/ -v

๐Ÿ“– Documentation


๐Ÿ—บ๏ธ Roadmap

  • Backtesting engine for strategy testing
  • Risk metrics (VaR, CVaR, Maximum Drawdown)
  • Transformer-based forecasting models
  • Sentiment analysis integration
  • Additional data sources (Alpha Vantage, Polygon.io)
  • CLI interface for quick analysis

๐Ÿ“ Citation

If you use FinLearner in your research, please cite:

@software{finlearner2024,
  author = {Dutta, Ankit},
  title = {FinLearner: A Comprehensive Financial Analysis and Deep Learning Library},
  year = {2025},
  publisher = {GitHub},
  url = {https://github.com/ankitdutta428/finlearner}
}

๐Ÿ“„ License

Distributed under the Apache 2.0 License. See LICENSE for more information.


๐Ÿ™ Acknowledgments

  • yfinance for financial data
  • TensorFlow for deep learning infrastructure
  • Plotly for interactive visualizations
  • The open-source quantitative finance community

Built with โค๏ธ by Ankit Dutta

Star on GitHub

About

Finlearner is the upgraded version of finlearn providing even better services for better financial management and planning and investing

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages