quantfinance


Namequantfinance JSON
Version 0.1.1 PyPI version JSON
download
home_pageNone
SummaryPackage Python complet pour la finance quantitative
upload_time2025-10-19 21:17:56
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseNone
keywords finance quantitative finance portfolio optimization risk management options pricing derivatives black-scholes var backtesting
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # QuantFinance 📊

[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
[![PyPI version](https://badge.fury.io/py/quantfinance.svg)](https://badge.fury.io/py/quantfinance)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Build Status](https://github.com/Mafoya1er/quantfinance/workflows/CI/badge.svg)](https://github.com/Mafoya1er/quantfinance/actions)
[![codecov](https://codecov.io/gh/Mafoya1er/quantfinance/branch/main/graph/badge.svg)](https://codecov.io/gh/Mafoya1er/quantfinance)
[![Documentation Status](https://readthedocs.org/projects/quantfinance/badge/?version=latest)](https://quantfinance.readthedocs.io/en/latest/?badge=latest)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)

> Package Python professionnel pour la finance quantitative

[Documentation](https://quantfinance.readthedocs.io) | [PyPI](https://pypi.org/project/quantfinance/) | [GitHub](https://github.com/Mafoya1er/quantfinance)

## ✨ 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é)

```bash
pip install quantfinance
```

### Depuis les sources

```bash
git clone https://github.com/Mafoya1er/quantfinance.git
cd quantfinance
pip install -e .
```

### Avec dépendances optionnelles

```bash
# 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

```python
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

```python
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()
```

### Analyse de Risque

```python
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

```python
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_results()
```

## 📖 Documentation

Documentation complète disponible sur [ReadTheDocs](https://quantfinance.readthedocs.io).

### Guides

- [Installation](https://quantfinance.readthedocs.io/en/latest/user_guide/installation.html)
- [Démarrage Rapide](https://quantfinance.readthedocs.io/en/latest/user_guide/quickstart.html)
- [Tutoriels](https://quantfinance.readthedocs.io/en/latest/user_guide/tutorials.html)
- [Exemples](https://quantfinance.readthedocs.io/en/latest/user_guide/examples.html)

### Référence API

- [Pricing](https://quantfinance.readthedocs.io/en/latest/api/pricing.html)
- [Risk](https://quantfinance.readthedocs.io/en/latest/api/risk.html)
- [Portfolio](https://quantfinance.readthedocs.io/en/latest/api/portfolio.html)
- [Utils](https://quantfinance.readthedocs.io/en/latest/api/utils.html)

## 🧪 Tests

```bash
# 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](CONTRIBUTING.md).

1. Fork le projet
2. Créez une branche (`git checkout -b feature/AmazingFeature`)
3. Committez (`git commit -m 'feat: Add AmazingFeature'`)
4. Push (`git push origin feature/AmazingFeature`)
5. Ouvrez une Pull Request

## 📝 Licence

Ce projet est sous licence MIT. Voir [LICENSE](LICENSE) pour plus de détails.

## 🙏 Remerciements

- [NumPy](https://numpy.org/) - Calculs numériques
- [Pandas](https://pandas.pydata.org/) - Manipulation de données
- [SciPy](https://scipy.org/) - Outils scientifiques
- [Matplotlib](https://matplotlib.org/) - Visualisations

## 📧 Contact

Marcel ALOEKPO - [LinkedIn](https://www.linkedin.com/in/marcel-aloekpo-21b42619a) -marcelaloekpo@gmail.com

Projet: [https://github.com/Mafoya1er/quantfinance](https://github.com/Mafoya1er/quantfinance)

## ⭐ Support

Si vous trouvez ce projet utile, n'hésitez pas à lui donner une étoile ⭐ sur [GitHub](https://github.com/Mafoya1er/quantfinance) !

## 📊 Statistiques

![GitHub stars](https://img.shields.io/github/stars/Mafoya1er/quantfinance?style=social)
![GitHub forks](https://img.shields.io/github/forks/Mafoya1er/quantfinance?style=social)
![GitHub watchers](https://img.shields.io/github/watchers/Mafoya1er/quantfinance?style=social)
![GitHub contributors](https://img.shields.io/github/contributors/Mafoya1er/quantfinance)
![GitHub issues](https://img.shields.io/github/issues/Mafoya1er/quantfinance)
![GitHub pull requests](https://img.shields.io/github/issues-pr/Mafoya1er/quantfinance)

---

**Made with ❤️ for quantitative finance**

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "quantfinance",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "Marcel ALOEKPO <marcelaloekpo@gmail.com>",
    "keywords": "finance, quantitative finance, portfolio optimization, risk management, options pricing, derivatives, black-scholes, var, backtesting",
    "author": null,
    "author_email": "Marcel ALOEKPO <marcelaloekpo@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/9c/a2/0d629d0d0f9e13b26721695e9c3b077a3e076cce14a448c4c112cbe0e5ed/quantfinance-0.1.1.tar.gz",
    "platform": null,
    "description": "# QuantFinance \ud83d\udcca\n\n[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)\n[![PyPI version](https://badge.fury.io/py/quantfinance.svg)](https://badge.fury.io/py/quantfinance)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Build Status](https://github.com/Mafoya1er/quantfinance/workflows/CI/badge.svg)](https://github.com/Mafoya1er/quantfinance/actions)\n[![codecov](https://codecov.io/gh/Mafoya1er/quantfinance/branch/main/graph/badge.svg)](https://codecov.io/gh/Mafoya1er/quantfinance)\n[![Documentation Status](https://readthedocs.org/projects/quantfinance/badge/?version=latest)](https://quantfinance.readthedocs.io/en/latest/?badge=latest)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\n> Package Python professionnel pour la finance quantitative\n\n[Documentation](https://quantfinance.readthedocs.io) | [PyPI](https://pypi.org/project/quantfinance/) | [GitHub](https://github.com/Mafoya1er/quantfinance)\n\n## \u2728 Fonctionnalit\u00e9s\n\n### \ud83d\udcc8 Pricing d'Instruments Financiers\n- **Options** : Black-Scholes, Binomial Tree, Monte Carlo\n- **Grecques** : Delta, Gamma, Vega, Theta, Rho\n- **Volatilit\u00e9 Implicite** : M\u00e9thode de Newton-Raphson\n- **Options Exotiques** : Asiatiques, Barri\u00e8res\n- **Obligations** : Pricing, YTM, Duration, Convexit\u00e9\n\n### \u26a0\ufe0f Gestion des Risques\n- **Value at Risk (VaR)** : Historique, Param\u00e9trique, EWMA, Monte Carlo\n- **Expected Shortfall (CVaR)**\n- **M\u00e9triques** : Sharpe, Sortino, Calmar, Omega, Information Ratio\n- **Drawdown** : Maximum, Duration, S\u00e9rie temporelle\n- **Stress Testing** : Sc\u00e9narios, Analyse historique, Simulation\n\n### \ud83d\udcca Optimisation de Portefeuille\n- **Markowitz** : Variance minimale, Sharpe maximum, Fronti\u00e8re efficiente\n- **Risk Parity** : Contribution \u00e9gale au risque\n- **Black-Litterman** : Int\u00e9gration de vues d'investissement\n- **Hierarchical Risk Parity (HRP)**\n- **Maximum Diversification**\n- **R\u00e9\u00e9quilibrage** : P\u00e9riodique, Seuils, Bandes de tol\u00e9rance\n\n### \ud83d\udd04 Backtesting\n- Framework de backtesting flexible\n- Strat\u00e9gies pr\u00e9d\u00e9finies (MA Crossover, Momentum, etc.)\n- Prise en compte des co\u00fbts de transaction\n- Analyse de performance d\u00e9taill\u00e9e\n\n### \ud83d\udee0\ufe0f Utilitaires\n- Chargement de donn\u00e9es (CSV, Yahoo Finance, API)\n- G\u00e9n\u00e9ration de donn\u00e9es synth\u00e9tiques\n- Nettoyage et pr\u00e9paration de donn\u00e9es\n- Indicateurs techniques (SMA, EMA, RSI, MACD, Bollinger Bands)\n- Visualisations avanc\u00e9es\n\n## \ud83d\ude80 Installation\n\n### Via pip (recommand\u00e9)\n\n```bash\npip install quantfinance\n```\n\n### Depuis les sources\n\n```bash\ngit clone https://github.com/Mafoya1er/quantfinance.git\ncd quantfinance\npip install -e .\n```\n\n### Avec d\u00e9pendances optionnelles\n\n```bash\n# Pour l'analyse de donn\u00e9es\npip install quantfinance[data]\n\n# Pour le d\u00e9veloppement\npip install quantfinance[dev]\n\n# Tout installer\npip install quantfinance[all]\n```\n\n## \ud83d\udcda D\u00e9marrage Rapide\n\n### Pricing d'Options\n\n```python\nfrom quantfinance.pricing.options import BlackScholes\n\n# Option call europ\u00e9enne\nbs = BlackScholes(S=100, K=105, T=1, r=0.05, sigma=0.25, option_type='call')\n\nprint(f\"Prix: {bs.price():.2f}\")\nprint(f\"Delta: {bs.delta():.4f}\")\nprint(f\"Gamma: {bs.gamma():.6f}\")\nprint(f\"Vega: {bs.vega():.4f}\")\n\n# Volatilit\u00e9 implicite\nmarket_price = 8.50\nimplied_vol = bs.implied_volatility(market_price)\nprint(f\"Vol implicite: {implied_vol:.2%}\")\n```\n\n### Optimisation de Portefeuille\n\n```python\nfrom quantfinance.portfolio.optimization import PortfolioOptimizer, EfficientFrontier\nfrom quantfinance.utils.data import DataLoader\n\n# Charger des donn\u00e9es\nprices = DataLoader.generate_synthetic_prices(n_assets=5, n_days=252*3)\nreturns = prices.pct_change().dropna()\n\n# Optimiser\noptimizer = PortfolioOptimizer(returns, risk_free_rate=0.02)\n\n# Sharpe maximum\nmax_sharpe = optimizer.maximize_sharpe()\nprint(f\"Rendement: {max_sharpe['return']:.2%}\")\nprint(f\"Sharpe: {max_sharpe['sharpe_ratio']:.3f}\")\nprint(\"\\nPoids:\")\nprint(max_sharpe['weights'])\n\n# Fronti\u00e8re efficiente\nfrontier = EfficientFrontier(optimizer)\nfrontier.plot()\n```\n\n### Analyse de Risque\n\n```python\nfrom quantfinance.risk.var import VaRCalculator\nfrom quantfinance.risk.metrics import RiskMetrics, PerformanceAnalyzer\n\n# VaR et CVaR\nvar_95 = VaRCalculator.historical_var(returns.iloc[:, 0], 0.95)\nes_95 = VaRCalculator.expected_shortfall(returns.iloc[:, 0], 0.95)\n\nprint(f\"VaR 95%: {var_95:.2%}\")\nprint(f\"CVaR 95%: {es_95:.2%}\")\n\n# Analyse compl\u00e8te\nanalyzer = PerformanceAnalyzer(returns.iloc[:, 0], risk_free_rate=0.02)\nsummary = analyzer.summary_statistics()\nprint(summary)\n```\n\n### Backtesting\n\n```python\nfrom quantfinance.portfolio.backtesting import Backtester, MovingAverageCrossover\nfrom quantfinance.utils.data import DataLoader\n\n# Donn\u00e9es OHLCV\ndata = DataLoader.generate_ohlcv_data(n_days=500)\n\n# Strat\u00e9gie\nstrategy = MovingAverageCrossover(short_window=20, long_window=50)\n\n# Backtest\nbacktester = Backtester(data, strategy, initial_capital=100000)\nresults = backtester.run()\n\nprint(f\"Rendement: {results['Total Return']:.2%}\")\nprint(f\"Sharpe: {results['Sharpe Ratio']:.3f}\")\nprint(f\"Max DD: {results['Max Drawdown']:.2%}\")\n\n# Visualisation\nbacktester.plot_results()\n```\n\n## \ud83d\udcd6 Documentation\n\nDocumentation compl\u00e8te disponible sur [ReadTheDocs](https://quantfinance.readthedocs.io).\n\n### Guides\n\n- [Installation](https://quantfinance.readthedocs.io/en/latest/user_guide/installation.html)\n- [D\u00e9marrage Rapide](https://quantfinance.readthedocs.io/en/latest/user_guide/quickstart.html)\n- [Tutoriels](https://quantfinance.readthedocs.io/en/latest/user_guide/tutorials.html)\n- [Exemples](https://quantfinance.readthedocs.io/en/latest/user_guide/examples.html)\n\n### R\u00e9f\u00e9rence API\n\n- [Pricing](https://quantfinance.readthedocs.io/en/latest/api/pricing.html)\n- [Risk](https://quantfinance.readthedocs.io/en/latest/api/risk.html)\n- [Portfolio](https://quantfinance.readthedocs.io/en/latest/api/portfolio.html)\n- [Utils](https://quantfinance.readthedocs.io/en/latest/api/utils.html)\n\n## \ud83e\uddea Tests\n\n```bash\n# Lancer tous les tests\npytest\n\n# Avec couverture\npytest --cov=quantfinance --cov-report=html\n\n# Tests rapides seulement\npytest -m \"not slow\"\n```\n\n## \ud83e\udd1d Contribution\n\nLes contributions sont les bienvenues ! Consultez [CONTRIBUTING.md](CONTRIBUTING.md).\n\n1. Fork le projet\n2. Cr\u00e9ez une branche (`git checkout -b feature/AmazingFeature`)\n3. Committez (`git commit -m 'feat: Add AmazingFeature'`)\n4. Push (`git push origin feature/AmazingFeature`)\n5. Ouvrez une Pull Request\n\n## \ud83d\udcdd Licence\n\nCe projet est sous licence MIT. Voir [LICENSE](LICENSE) pour plus de d\u00e9tails.\n\n## \ud83d\ude4f Remerciements\n\n- [NumPy](https://numpy.org/) - Calculs num\u00e9riques\n- [Pandas](https://pandas.pydata.org/) - Manipulation de donn\u00e9es\n- [SciPy](https://scipy.org/) - Outils scientifiques\n- [Matplotlib](https://matplotlib.org/) - Visualisations\n\n## \ud83d\udce7 Contact\n\nMarcel ALOEKPO - [LinkedIn](https://www.linkedin.com/in/marcel-aloekpo-21b42619a) -marcelaloekpo@gmail.com\n\nProjet: [https://github.com/Mafoya1er/quantfinance](https://github.com/Mafoya1er/quantfinance)\n\n## \u2b50 Support\n\nSi vous trouvez ce projet utile, n'h\u00e9sitez pas \u00e0 lui donner une \u00e9toile \u2b50 sur [GitHub](https://github.com/Mafoya1er/quantfinance) !\n\n## \ud83d\udcca Statistiques\n\n![GitHub stars](https://img.shields.io/github/stars/Mafoya1er/quantfinance?style=social)\n![GitHub forks](https://img.shields.io/github/forks/Mafoya1er/quantfinance?style=social)\n![GitHub watchers](https://img.shields.io/github/watchers/Mafoya1er/quantfinance?style=social)\n![GitHub contributors](https://img.shields.io/github/contributors/Mafoya1er/quantfinance)\n![GitHub issues](https://img.shields.io/github/issues/Mafoya1er/quantfinance)\n![GitHub pull requests](https://img.shields.io/github/issues-pr/Mafoya1er/quantfinance)\n\n---\n\n**Made with \u2764\ufe0f for quantitative finance**\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Package Python complet pour la finance quantitative",
    "version": "0.1.1",
    "project_urls": {
        "Bug Tracker": "https://github.com/votre-username/quantfinance/issues",
        "Changelog": "https://github.com/votre-username/quantfinance/blob/main/CHANGELOG.md",
        "Documentation": "https://quantfinance.readthedocs.io",
        "Homepage": "https://github.com/votre-username/quantfinance",
        "Repository": "https://github.com/votre-username/quantfinance"
    },
    "split_keywords": [
        "finance",
        " quantitative finance",
        " portfolio optimization",
        " risk management",
        " options pricing",
        " derivatives",
        " black-scholes",
        " var",
        " backtesting"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0611de0b95753b4963ad46e59f1443cddcc9452cf105bc08c21fc00e74535251",
                "md5": "883beaaacf66684bf2f54d5cdd83366d",
                "sha256": "ea6dcfbe719239af8a2cdd0fcb9086fa5baadabae0976cad05406bca1fc226b9"
            },
            "downloads": -1,
            "filename": "quantfinance-0.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "883beaaacf66684bf2f54d5cdd83366d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 48551,
            "upload_time": "2025-10-19T21:17:53",
            "upload_time_iso_8601": "2025-10-19T21:17:53.786347Z",
            "url": "https://files.pythonhosted.org/packages/06/11/de0b95753b4963ad46e59f1443cddcc9452cf105bc08c21fc00e74535251/quantfinance-0.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9ca20d629d0d0f9e13b26721695e9c3b077a3e076cce14a448c4c112cbe0e5ed",
                "md5": "efa96ac117200b991f6d9f2cb3385841",
                "sha256": "05d683eca224127cd26d55e7cac799d22ff330eaa69ba27337b8d149fce1bd5b"
            },
            "downloads": -1,
            "filename": "quantfinance-0.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "efa96ac117200b991f6d9f2cb3385841",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 221506,
            "upload_time": "2025-10-19T21:17:56",
            "upload_time_iso_8601": "2025-10-19T21:17:56.012234Z",
            "url": "https://files.pythonhosted.org/packages/9c/a2/0d629d0d0f9e13b26721695e9c3b077a3e076cce14a448c4c112cbe0e5ed/quantfinance-0.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-19 21:17:56",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "votre-username",
    "github_project": "quantfinance",
    "github_not_found": true,
    "lcname": "quantfinance"
}
        
Elapsed time: 2.88779s