ML Deployment Platform (Independent Project)
This project provides a lightweight ML deployment platform applied to FX forecasting.
Features
- Infrastructure: Supabase database, Django web interface
- Automation: Ingestion + forecasting via GitHub Actions
- Model Layer: Registry system, Python/R execution
- Outputs: Prediction storage, visual backtests
Daily Workflow
- Daily FX rates are collected automatically from the Frankfurter API through scheduled GitHub Actions jobs.
- These rates are stored in a cloud Postgres database (Supabase), forming a long-term historical dataset.
- Another scheduled GitHub Actions task sends the latest data to the forecasting models, which return the next-day predictions.
- The forecasts are written back into the database, where they become available to the dashboards.
- The front end (Market and Forecast pages) reads directly from the database and displays both the live FX data and the outputs of the models.
- The system also runs backtests, which recreate past model predictions so they can be visualized on the charts.
You can access the live FX views through the buttons below.
Project Links
Plug-and-Play Model Integration
You can plug in your own forecasting model by following these steps:
Download the template for your language:
Open the template and edit only the section marked: "PART 2 — MODEL LOGIC (THIS IS YOUR AREA)" In "PART 3", you will see where to set your model name (e.g., 'my_model'). Then: Python models ------------- Save the file to: apps/forecasting/models_lib/ Rename it to match your model name (e.g., my_model.py). Open: apps/forecasting/models_lib/registry.py Add at the top: from . import my_model Add this to _REGISTRY: "my_model": my_model.predict, R models -------- Save the file to: apps/forecasting/r_models/ Rename it to match your model name (e.g., my_model.R). Open: apps/forecasting/models_lib/registry.py (You do NOT add an import at the top for R models.) Add this to _REGISTRY: "my_model": make_r_predictor("my_model.R"),