Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Quantis - ML Platform & Quantitative Finance System

Project Structure

code/
├── backend/                    # FastAPI backend
│   ├── auth/                   # Authentication utilities
│   ├── core/                   # App factory, config, database
│   ├── domain/                 # SQLAlchemy models & Pydantic schemas
│   ├── endpoints/              # API route handlers
│   ├── middleware/             # CORS, auth, logging, error handling
│   ├── services/               # Business logic layer
│   ├── workers/                # Celery background tasks
│   ├── tests/                  # Test suite
│   └── requirements.txt
│
└── quant_ml/                   # ML & Quantitative Finance package (renamed from ml/)
    ├── data/
    │   ├── features/           # Feast feature store integration
    │   └── process_data.py     # Data engine + financial feature engineering
    ├── models/
    │   ├── hyperparameter_tuning/  # Optuna optimisation
    │   ├── model_serving/          # MLflow pyfunc serving
    │   ├── train_model.py          # TFT + LSTM training
    │   ├── mlflow_tracking.py      # Experiment tracking
    │   └── aws_deploy.py           # S3 + SageMaker deployment
    ├── monitoring/
    │   └── metrics_collector.py    # CloudWatch metrics
    └── quant/                  # ★ Advanced Quantitative Finance (new)
        ├── risk_metrics.py         # VaR, CVaR, Sharpe, Sortino, drawdown, alpha/beta
        ├── portfolio_optimizer.py  # Mean-Variance, Risk Parity, Black-Litterman
        ├── alpha_signals.py        # Momentum, value, quality, stat-arb signals
        ├── backtester.py           # Vectorised backtester + walk-forward validation
        ├── regime_detection.py     # HMM, GARCH, rolling-zscore regime classifiers
        └── execution_model.py      # Almgren-Chriss impact, TWAP/VWAP scheduling

Quick Start

Installation

cd backend
pip install -r requirements.txt

# Optional quant_ml extras
pip install hmmlearn arch scipy  # for regime detection
pip install feast                 # for feature store
pip install optuna                # for hyperparameter tuning
pip install mlflow                # for experiment tracking

Starting the Backend

cd backend
uvicorn core.app:app --host 0.0.0.0 --port 8000 --reload

The backend starts successfully when you see:

INFO: Database initialized successfully
INFO: Uvicorn running on http://0.0.0.0:8000

API Docs

Environment Configuration

Copy .env.example to .env and configure:

SECRET_KEY=your-secret-key-change-in-production
JWT_SECRET=your-jwt-secret-change-in-production

# Database (defaults to SQLite)
DATABASE_URL=sqlite:///./quantis.db

# Redis (optional — enables Celery background tasks)
REDIS_URL=redis://localhost:6379/0
CELERY_BROKER_URL=redis://localhost:6379/0

# Email (optional)
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
SMTP_USERNAME=[email protected]
SMTP_PASSWORD=your-password

Testing

# From project root
pytest backend/tests/ -v

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

quant_ml — Advanced Quant Finance Usage

from quant_ml.quant import (
    risk_report,
    MeanVarianceOptimizer,
    RiskParityOptimizer,
    BlackLittermanOptimizer,
    VectorisedBacktester,
    BacktestConfig,
    WalkForwardValidator,
    HMMRegimeDetector,
    RollingZScoreRegimeDetector,
    momentum,
    low_volatility,
    combine_signals,
    AlmgrenChrissModel,
    ExecutionParams,
)

# Risk metrics
import numpy as np
returns = np.random.randn(252) * 0.01
report = risk_report(returns)
print(report)

# Portfolio optimisation (Mean-Variance)
import pandas as pd
prices = pd.DataFrame(np.random.randn(500, 5).cumsum(axis=0) + 100,
                      columns=list("ABCDE"))
ret_df = prices.pct_change().dropna()
mvo = MeanVarianceOptimizer(ret_df)
result = mvo.max_sharpe()
print(result["weights"])

# Vectorised backtesting
config = BacktestConfig(commission_bps=5, rebalance_freq="W")
bt = VectorisedBacktester(config)
signals = momentum(prices)
bt_result = bt.run(prices, signals)
print(bt_result.performance)

# Regime detection (no extra deps)
from quant_ml.quant import RollingZScoreRegimeDetector
detector = RollingZScoreRegimeDetector(window=63)
regimes = detector.fit_predict(ret_df.iloc[:, 0])

# Execution cost estimation
params = ExecutionParams(
    symbol="AAPL", avg_daily_volume=5_000_000, price=180.0
)
ac = AlmgrenChrissModel(params)
estimate = ac.pre_trade_estimate(order_shares=10_000, horizon_days=5)
print(estimate)