Compare two instruments
Aligned performance, risk and comparison views on identical dates, with the baseline, observation count and annualization stated.
Exiled Markets / Solutions / Dynamic applications
Express what you want to investigate. Exiled brings together the relevant data, analytics and interface—and lets the application develop as you explore.
Start with a comparison. Extend it into a scenario. Add the views and controls the work requires.
“Compare QQQ with SPY, then show me what a rate shock does to both.”
“Now add a rolling correlation, and keep it in my workspace.”
Three demonstrations
Each begins as a sentence and becomes a working application: aligned data, computed results, and the views and controls to keep investigating.
Compare two instruments
Aligned performance, risk and comparison views on identical dates, with the baseline, observation count and annualization stated.
Investigate portfolio vulnerability
Factor effects, ranked position contributions and a reconciliation to the portfolio total, with scenario controls for each separate shock.
Examine a market relationship
Correlation now and over time, a historical comparison of the move, and diagnostics that say how far the relationship can be relied on.
What makes it an application
The result is something you operate and come back to, not a reply you scroll past.
Figures come from declared financial and statistical methods on the data in view. The assistant chooses and explains; it does not improvise numbers.
Change a shock, a window or a benchmark and the linked views recompute in place. Ask again only when you want something new.
A follow-up adds structure to the same application—a scenario, a comparison, a linked view—rather than starting over.
Why it is fast to assemble
The foundation removes repeated engineering. For a transition-cost application, a team defines the cost methodology and the desk’s constraints. Exiled supplies the data access, the analytical structures, the interface components and the agent integration. The code below is from Exiled Markets itself.
# the kind of code your team writes: a cost methodology (domain_portfolio.py) def _trading_cost(trades, prices, bps, observed=None): """Trading cost at an assumed slippage of `bps`, plus any observed half-spread per symbol, in the book's currency.""" observed = dict(observed or {}) return math.fsum(abs(change) * prices[symbol] * (float(bps) + float(observed.get(symbol, 0.0))) / 10_000 for symbol, change in trades.items()) # a named scenario is data the desk declares "global_recession": {"label": "Global recession", "shocks": {"market": -0.20, "liquidity": -0.04}}, # cart/portfolio.py -- an action the agent may call, because it changes # nothing a person holds @app.action(agent=True, kind="read", idempotent=True) def apply_scenario(scenario: str = "global_recession") -> ActionResult: """Show what this book would look like under a named scenario.""" ... return ActionResult(value=f"showing {label}", changed=True, refresh=("scenarios",))
Excerpts, lightly trimmed, from the Exiled Markets source: domain_portfolio.py (the cost methodology and a named scenario) and cart/portfolio.py (an action the agent may call). Everything else the application needs comes from the runtime.
Tell us what you are trying to investigate and where your current workflow gets in the way.