Skip to content
Jan Zika

finance · case study · 2026

TickerScope

A risk and return assistant that compares stocks and ETFs on risk-adjusted terms rather than headline performance.

Problem
A self-directed investor comparing a handful of stocks and ETFs is usually shown returns without the risk taken to earn them. The comparison that matters, which holding offers better compensation per unit of risk, requires assembling several statistics that retail tools present separately or not at all.
Approach
An R Plumber API computes return, volatility, drawdown, and risk-adjusted ratios across a user-selected basket, with a Shiny interface presenting them as one comparison rather than a set of disconnected charts. Separating the API from the interface keeps the statistics testable independently of how they are displayed.
Result
A working application that answers one connected question across an arbitrary basket: which holdings offer better risk-adjusted return, and which statistics currently warrant attention.

Why the API and interface are separate

Statistical code embedded in a reactive interface is difficult to test, because the inputs arrive through UI state rather than function arguments. Splitting the computation into a Plumber API means each statistic can be verified against known inputs directly, and the interface becomes a presentation layer with no analytical logic of its own.

Limits

The statistics are descriptive and backward-looking. Risk-adjusted ratios computed on historical returns describe what a holding did, and carry the usual caveat about what that implies for what it will do.

Analyses on this site are for general information only. They are not investment, financial, legal, or tax advice, and not an offer or solicitation to buy or sell any instrument. Past results do not indicate future outcomes. Views are the author's own.