A production-style Python project for forecasting 30-day multi-currency liquidity and generating optimal fund allocation across currencies using SARIMAX time-series models.
Built with:
- Python
- Pandas / NumPy
- SARIMAX (statsmodels)
- Streamlit (Dashboard)
- ExcelWriter for reporting
- PyTest (Unit Tests)
- GitHub Actions (CI)
- Docker (optional)
This project simulates and forecasts daily cashflows for multiple currencies (EUR, USD, JPY, BRL, INR, AUD), then optimizes capital allocation based on predicted liquidity needs.
It includes:
SARIMAX models generate 30-day forecasts for each currency.
Allocations computed using forecast magnitudes (probability-like weights).
A Streamlit interface allowing users to:
- view historical data
- plot future liquidity forecasts
- export reports
- view allocation results
Exports:
- Historical data
- Forecast data
- Allocation summary
to Excel using xlsxwriter.
liquidity-forecasting/ βββ liquidity_forecasting/ β βββ data.py β βββ model.py β βββ allocation.py β βββ export.py β βββ plotting.py β βββ init.py βββ tests/ β βββ test_data.py β βββ test_model_and_allocation.py βββ app.py βββ main.py βββ requirements.txt βββ README.md
(bash) git clone https://github.com/Andorta/LiquidityForecasting.git cd LiquidityForecasting
(bash) python3 -m pip install -r requirements.txt
π Continuous Integration
GitHub Actions automatically runs:
dependency installation
test suite (pytest)
Python version matrix (3.9 & 3.11)
Workflow file: .github/workflows/ci.yml
π Future Improvements
Add SQL database ingestion
Add Docker image with production-ready Streamlit app
Hyperparameter tuning for SARIMAX
Stress-testing and scenario modelling
π€ Author
Andorta
Feel free to open issues or contribute!