Package Python complet pour la finance quantitative
Project description
QuantFinance 📊
Package Python professionnel pour la finance quantitative
Documentation | PyPI | GitHub
✨ Fonctionnalités
📈 Pricing d'Instruments Financiers
- Options : Black-Scholes, Binomial Tree, Monte Carlo
- Grecques : Delta, Gamma, Vega, Theta, Rho
- Volatilité Implicite : Méthode de Newton-Raphson
- Options Exotiques : Asiatiques, Barrières
- Obligations : Pricing, YTM, Duration, Convexité
⚠️ Gestion des Risques
- Value at Risk (VaR) : Historique, Paramétrique, EWMA, Monte Carlo
- Expected Shortfall (CVaR)
- Métriques : Sharpe, Sortino, Calmar, Omega, Information Ratio
- Drawdown : Maximum, Duration, Série temporelle
- Stress Testing : Scénarios, Analyse historique, Simulation
📊 Optimisation de Portefeuille
- Markowitz : Variance minimale, Sharpe maximum, Frontière efficiente
- Risk Parity : Contribution égale au risque
- Black-Litterman : Intégration de vues d'investissement
- Hierarchical Risk Parity (HRP)
- Maximum Diversification
- Rééquilibrage : Périodique, Seuils, Bandes de tolérance
🔄 Backtesting
- Framework de backtesting flexible
- Stratégies prédéfinies (MA Crossover, Momentum, etc.)
- Prise en compte des coûts de transaction
- Analyse de performance détaillée
🛠️ Utilitaires
- Chargement de données (CSV, Yahoo Finance, API)
- Génération de données synthétiques
- Nettoyage et préparation de données
- Indicateurs techniques (SMA, EMA, RSI, MACD, Bollinger Bands)
- Visualisations avancées
🚀 Installation
Via pip (recommandé)
pip install quantfinance
Depuis les sources
git clone https://github.com/Mafoya1er/quantfinance.git
cd quantfinance
pip install -e .
Avec dépendances optionnelles
# Pour l'analyse de données
pip install quantfinance[data]
# Pour le développement
pip install quantfinance[dev]
# Tout installer
pip install quantfinance[all]
📚 Démarrage Rapide
Pricing d'Options
from quantfinance.pricing.options import BlackScholes
# Option call européenne
bs = BlackScholes(S=100, K=105, T=1, r=0.05, sigma=0.25, option_type='call')
print(f"Prix: {bs.price():.2f}")
print(f"Delta: {bs.delta():.4f}")
print(f"Gamma: {bs.gamma():.6f}")
print(f"Vega: {bs.vega():.4f}")
# Volatilité implicite
market_price = 8.50
implied_vol = bs.implied_volatility(market_price)
print(f"Vol implicite: {implied_vol:.2%}")
Optimisation de Portefeuille
from quantfinance.portfolio.optimization import PortfolioOptimizer, EfficientFrontier
from quantfinance.utils.data import DataLoader
# Charger des données
prices = DataLoader.generate_synthetic_prices(n_assets=5, n_days=252*3)
returns = prices.pct_change().dropna()
# Optimiser
optimizer = PortfolioOptimizer(returns, risk_free_rate=0.02)
# Sharpe maximum
max_sharpe = optimizer.maximize_sharpe()
print(f"Rendement: {max_sharpe['return']:.2%}")
print(f"Sharpe: {max_sharpe['sharpe_ratio']:.3f}")
print("\nPoids:")
print(max_sharpe['weights'])
# Frontière efficiente
frontier = EfficientFrontier(optimizer)
frontier.plot_frontier()
Analyse de Risque
from quantfinance.risk.var import VaRCalculator
from quantfinance.risk.metrics import RiskMetrics, PerformanceAnalyzer
# VaR et CVaR
var_95 = VaRCalculator.historical_var(returns.iloc[:, 0], 0.95)
es_95 = VaRCalculator.expected_shortfall(returns.iloc[:, 0], 0.95)
print(f"VaR 95%: {var_95:.2%}")
print(f"CVaR 95%: {es_95:.2%}")
# Analyse complète
analyzer = PerformanceAnalyzer(returns.iloc[:, 0], risk_free_rate=0.02)
summary = analyzer.summary_statistics()
print(summary)
Backtesting
from quantfinance.portfolio.backtesting import Backtester, MovingAverageCrossover
from quantfinance.utils.data import DataLoader
# Données OHLCV
data = DataLoader.generate_ohlcv_data(n_days=500)
# Stratégie
strategy = MovingAverageCrossover(short_window=20, long_window=50)
# Backtest
backtester = Backtester(data, strategy, initial_capital=100000)
results = backtester.run()
print(f"Rendement: {results['Total Return']:.2%}")
print(f"Sharpe: {results['Sharpe Ratio']:.3f}")
print(f"Max DD: {results['Max Drawdown']:.2%}")
# Visualisation
backtester.plot()
📖 Documentation
Documentation complète disponible sur ReadTheDocs.
Guides
Référence API
🧪 Tests
# Lancer tous les tests
pytest
# Avec couverture
pytest --cov=quantfinance --cov-report=html
# Tests rapides seulement
pytest -m "not slow"
🤝 Contribution
Les contributions sont les bienvenues ! Consultez CONTRIBUTING.md.
- Fork le projet
- Créez une branche (
git checkout -b feature/AmazingFeature) - Committez (
git commit -m 'feat: Add AmazingFeature') - Push (
git push origin feature/AmazingFeature) - Ouvrez une Pull Request
📝 Licence
Ce projet est sous licence MIT. Voir LICENSE pour plus de détails.
🙏 Remerciements
- NumPy - Calculs numériques
- Pandas - Manipulation de données
- SciPy - Outils scientifiques
- Matplotlib - Visualisations
📧 Contact
Marcel ALOEKPO - LinkedIn -marcelaloekpo@gmail.com
Projet: https://github.com/Mafoya1er/quantfinance
⭐ Support
Si vous trouvez ce projet utile, n'hésitez pas à lui donner une étoile ⭐ sur GitHub !
📊 Statistiques
Made with ❤️ for quantitative finance
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file quantfinance-0.1.0.tar.gz.
File metadata
- Download URL: quantfinance-0.1.0.tar.gz
- Upload date:
- Size: 53.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9aaa1255d2dd2f5cd41ca3898ce2b28abf0e1ed3f5eb628e986b3ff94a64b454
|
|
| MD5 |
8e06c5694aa377a7eccb2f12ed836709
|
|
| BLAKE2b-256 |
25c2dde403eb84f7578df6e8ab8b364117154dcd6c950b7cedcfd3692ebb2a56
|
File details
Details for the file quantfinance-0.1.0-py3-none-any.whl.
File metadata
- Download URL: quantfinance-0.1.0-py3-none-any.whl
- Upload date:
- Size: 48.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e6c7e022007e93c005d2df1a34700830c816a52bd927e00ca1bf7380092ae604
|
|
| MD5 |
8fb45c64aef98afff6d1698447f3bc76
|
|
| BLAKE2b-256 |
d5b24ca72cf6906cd24c6792cac362e6766742ee41db45cec5896089f67bcc09
|