Exiled Markets / Solutions / Dynamic applications

A question can become an application.

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.

INTENT

“Compare QQQ with SPY, then show me what a rate shock does to both.”

COMPARISON+4.3 ppQQQ vs SPY, same dates
RISK16.8% / 13.1%annualized volatility
SCENARIO CONTROL+50 bp · QQQ −4.1% · SPY −2.7%
Illustrative values
AN APPLICATION THAT KEEPS GROWING

“Now add a rolling correlation, and keep it in my workspace.”

Three demonstrations

Start with intent. Watch the application unfold.

Each begins as a sentence and becomes a working application: aligned data, computed results, and the views and controls to keep investigating.

STARTING INTENT

Compare two instruments

APPLICATION THAT UNFOLDS

Aligned performance, risk and comparison views on identical dates, with the baseline, observation count and annualization stated.

performancerealized riskdrawdownactive return
STARTING INTENT

Investigate portfolio vulnerability

APPLICATION THAT UNFOLDS

Factor effects, ranked position contributions and a reconciliation to the portfolio total, with scenario controls for each separate shock.

factor effectscontributions (pp)positive offsetsscenario control
STARTING INTENT

Examine a market relationship

APPLICATION THAT UNFOLDS

Correlation now and over time, a historical comparison of the move, and diagnostics that say how far the relationship can be relied on.

correlationrolling windowhistorical comparisondiagnostics

What makes it an application

More than an answer on a page.

The result is something you operate and come back to, not a reply you scroll past.

01 / COMPUTED

Defined analytics do the math.

Figures come from declared financial and statistical methods on the data in view. The assistant chooses and explains; it does not improvise numbers.

02 / OPERABLE

Controls, not re-prompts.

Change a shock, a window or a benchmark and the linked views recompute in place. Ask again only when you want something new.

03 / EXTENSIBLE

The next question builds on this one.

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

What your team writes. What Exiled supplies.

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.

Your team writes

  • The cost methodology: slippage, spreads, impact
  • Desk constraints: limits, restricted names, lot sizes
  • Named scenarios and their shocks
  • Which actions an agent may take

Exiled supplies

  • Provider access through Sources, with provenance
  • Frame and GraphFrame for the data and its relationships
  • DAG recalculation when prices, weights or assumptions change
  • Tables, charts, controls and streaming to the browser
  • The agent harness: tool selection, limits, receipts
# 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.

Bring us a question that should be an application.

Tell us what you are trying to investigate and where your current workflow gets in the way.