Screen / PRAI Systems
A market view is only as good
as the history behind it.
A private Bybit market archive and research application, built from collection and validation through storage, synchronization, and the interface used to investigate the data.
History needs to stay inspectable.
Screen lets me browse eligible Bybit USDT perpetual contracts, compare daily movers, and investigate the hourly history behind a selected date. Search, turnover filters, CSV export, and historical charts sit on top of a persistent archive.
The engineering problem is deeper than displaying a chart. Collection can be interrupted. Newly listed instruments have shorter histories. Prices can be extremely small. A historical view must remain anchored to the date being investigated.
From collection to research.
A Python collector records resumable per-symbol progress in a local spool before importing into PostgreSQL. The hosted application reads a Cloudflare D1 archive. An authenticated HTTPS bridge connects the two storage environments.
Hosted saves include a durable delivery event in the same transaction as the candle data. The bridge verifies the original source fields before acknowledging a PostgreSQL import. Interrupted work remains queued, and repeated delivery is handled without duplicating records.
Three details that change the result.
Preserve source precision.
Prices, volume, and turnover are stored as decimal strings. Return calculations use integer arithmetic until display, avoiding early floating-point rounding for tiny prices and large values.
Represent gaps honestly.
Validation checks price consistency, conflicting duplicates, and completed UTC periods. Coverage accounts for listing dates, so missing history is not filled with invented zeroes.
Anchor research to the selected day.
The two-week hourly window ends at the chosen historical cutoff, with an option to exclude the selected day itself. Stored candles remain inspectable, and indicator warm-up restarts after gaps.
Check the source, then check the transfer.
Repository tests cover UTC boundaries, decimal calculations beyond JavaScript’s safe-integer range, scientific notation, duplicate conflicts, listing dates, and browser write origins.
Import utilities compare stored source rows or source digests after transfer. The project also contains research-audit tooling that reports inconclusive findings explicitly. Data integrity and reproducible inspection are the goals; profitable trading performance is not a claim of this case study.
Private by design.
Private research application
Screen remains authenticated and private. This public case study explains the engineering without exposing the owner account or private research data.
The work connects my quantitative-systems background with end-to-end product ownership: a data pipeline that can recover, storage that can be checked, and a useful interface on top.
Keep exploring
Hati Tayo
Let’s build something useful
A good problem.
A thoughtful solution.
Exploring software engineering, applied AI, and product engineering opportunities with teams around the world.
Based in Quezon City, Philippines · UTC+8