Skip to content
zzeiidannPublic

About

Government Auction Yield Analytics: Automated FR & PBS auction analytics dashboard with per-series ML yield forecasts, weekly data pipelines, and continuous Cloudflare deployment.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

44 Commits

Folders and files

Repository files navigation

GAYA — Government Auction Yield Analytics

Live dashboard Coverage FR and PBS Weekly automated update Private engine and public output

GAYA stands for Government Auction Yield Analytics.
An automated analytics system for Indonesia's FR and PBS bond auctions, combining a private per-series machine-learning engine, weekly data orchestration, and a continuously deployed public dashboard.

GAYA dashboard showing actual and predicted auction yields

Dashboard

GAYA turns the next government bond auction into a compact, series-level view. Select an FR or PBS series to compare awarded weighted-average yield (WAY) history against the model path and its published lower and upper bounds.

The dashboard shows:

  • the instruments listed for the upcoming DJPPR auction;
  • one independently fitted model for each eligible bond series;
  • historical actual WAY versus the corresponding backtest prediction;
  • the next prediction with lower and upper bounds;
  • coupon, remaining tenor, maturity date, and auction window.

Official data source

Auction coverage and realized yields are anchored to announcements published by the Directorate General of Budget Financing and Risk Management (DJPPR), Ministry of Finance of the Republic of Indonesia. The source is kept visible so every series, auction date, and realized WAY shown by GAYA can be traced back to an official release.

Official DJPPR auction result announcement for 4 August 2026

Direct screenshot of the official DJPPR auction-result announcement, captured in Mozilla Firefox on 9 August 2026. Click the image to open the source page.

Official publication Role in GAYA
Rencana Lelang Establishes the upcoming auction date, settlement date, eligible series, coupon, and maturity.
Hasil Lelang Supplies realized weighted-average yield, awarded nominal, incoming bids, and bid-to-cover for historical observations.
Public GAYA release Exposes only the auction context, actual history, model projection, and published bounds required by the dashboard.

Reading the chart

Series Meaning
Actual WAY Awarded weighted-average yield published for the historical auction.
Model Backtest estimate for historical dates and projection for the next auction.
Lower Published lower prediction bound.
Upper Published upper prediction bound.

GAYA Engine

The dashboard is the delivery surface; the GAYA Engine is the private machine-learning computation layer behind it. Every auction cycle is rebuilt from source data, evaluated per eligible bond series, and passed through a release gate before any public artifact is produced.

Three stages. One public release.

Cycle Schedule Public-safe outcome
Auction preparation Monday · 08:15 WIB Resolve the next auction and persist the eligible FR/PBS universe.
Engine refresh Tuesday · 09:05 WIB Refresh validated inputs, rebuild eligible series models, and evaluate the release.
Actual-result refresh Tuesday · 16:05, 19:05, 22:05 WIB; Wednesday · 09:05 retry Match official realized WAY by auction date and series, including when the following week's series universe changes.
Continuous delivery Successful release only Publish one sanitized payload and trigger the production dashboard build.

GAYA weekly data and deployment flow

Private/public boundary

Engine stage Responsibility Exposure
Auction intake Resolve the next auction, settlement schedule, and eligible FR/PBS universe from official publications. Private
Data layer Assemble and validate model-ready histories and contextual inputs for each series. Private
Per-series ML forecasting Fit, evaluate, and generate an independent projection for every eligible bond code. Private
Release gate Check observation sufficiency, output validity, and diagnostics; retain the last valid release when a run is not publishable. Private
Prediction contract Serialize only display-ready actuals, projections, bounds, instrument metadata, and timestamps. Public

Model boundary: no training dataset, feature recipe, fitted parameter, diagnostic output, serialized model, or callable inference code is shipped to the browser. The public application receives only the sanitized prediction contract. Client-side C++, WebAssembly, and minification are not treated as model protection because browser-delivered code remains inspectable.

If a scheduled auction is unavailable or a series does not have enough observations, the last valid public release remains in place.

Model coverage

Coverage
Instruments Fixed-rate SUN and Project Based Sukuk series selected from the current auction plan.
Model granularity One independently fitted model per eligible bond code, never a pooled model across every series.
History Four historical backtest observations followed by the next auction projection.

SPN, SPNS, and PBSG instruments are intentionally excluded from the public model board.

System stack

Python

Private ingestion, validation, forecasting, and release pipeline.
pandas

Historical assembly, schema checks, and model-ready series data.
GitHub Actions

Monday intake, Tuesday model refresh, validation, and publication.
React and TypeScript

Typed public contract, model selector, and analytics interface.
Vite and SVG

Production bundle and dependency-free chart rendering.
Cloudflare

Continuous build and global delivery after every public release.

The public application has no login, browser-side model, secret key, or user input form. It reads the current sanitized release from public/data/predictions.json. Dated public-safe snapshots remain under public/data/releases, so realized results are retained even when the next auction contains different series. Model fitting and sensitive inputs remain in the private pipeline.

Operating budget

Expected monthly run rate zero dollars Free tier headroom high Paid infrastructure none

GAYA is designed to operate at $0 per month on the current schedule and traffic profile. The estimate uses successful workflow durations, configured timeout ceilings, and vendor free-tier limits available on 9 August 2026.

Cost center Free allowance GAYA operating estimate Reset
GitHub Actions 2,000 Linux runner minutes/month Approximately 17–20 minutes/month under normal runs; below 200 minutes even if both weekly jobs reach their configured timeouts. Billing cycle
Cloudflare Workers Builds 3,000 build minutes/month Approximately 4–5 production builds/month; at most 100 minutes if every weekly build reaches the 20-minute timeout. Monthly
Cloudflare Static Assets Free and unlimited requests Dashboard HTML, JavaScript, CSS, images, and the public prediction payload are served as static assets. Not applicable
Cloudflare Workers runtime 100,000 requests/day Reserved headroom if a request invokes Worker code instead of matching a static asset. Daily at 00:00 UTC

The zero-cost policy assumes GitHub Free, Cloudflare Workers Free, a $0 GitHub Actions paid-usage budget, and no paid database, API, VM, container, or external scheduler. If a free limit is exhausted, the preferred failure mode is to pause the run or deployment rather than allow paid overage. Vendor pricing and limits may change; the linked official documentation remains authoritative.

Deployment

Production is served by Cloudflare from the main branch:

gaya.mohammad-raffy.workers.dev

Build command : npm run build
Output         : dist

No frontend environment variable is required.


GAYA provides statistical estimates for research and monitoring. It is not an investment recommendation.

About

Government Auction Yield Analytics: Automated FR & PBS auction analytics dashboard with per-series ML yield forecasts, weekly data pipelines, and continuous Cloudflare deployment.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages