Ora
All use cases All industries

Individuals

Retail investorActive day traderSwing traderOptions traderDividend investorLong-term passive investorCrypto traderFX traderCommodities traderSocial trading communityStudents and universities

Buy side

Financial advisor / RIAWealth managerFamily officeHedge fund PMQuant researcherPortfolio manager (long-only)Risk managerPrivate equityVC / growth investorFund-of-funds allocator

Sell side

Equity research analystSell-side sales traderExecution trader / deskMarket makerProp trading firmCompliance officer

Corporates

Investor relations teamCorporate treasuryCFO officeBank credit analystFinancial journalist / media

Builders

Quant developerFintech app builderRobo-advisorBroker appAlgo / bot developerData vendor / platformTrading educator / newsletter

Institutions

ETF issuerIndex providerInsurance investment officePension fundEndowmentSovereign wealth fund

Use cases · Corporates

Corporate treasury: 20 ways to use Ora

Cash, hedges and buybacks: rates and dollar ETFs, own-stock levels and counterparty checks. Each example is a complete, runnable request with the real answers it returned (42 requests, captured 2026-10-31), what they mean and, where it fits, the action it would send.

Answers were captured on ora-fin-0.1.1. Another model changes the request JSON and the Playground link; run it there to see its answers.
Rule functions and facts used by this player (51)

sma 13offset 8ref 5atr 4max 4lowest 4log 3sqrt 3std 3rsi 3avg 3swinglow 2ema 2zscore 2adx 2days_to_earnings 2highest 2macd 1swinghigh 1roc 1between 1crossup 1stochd 1stochk 1bblower 1mean 1rma 1abs 1atr_pct 1highestbars 1bbupper 1diminus 1diplus 1marubozu 1three_white_soldiers 1days_since_earnings 1next_report_bmo 1days_to_ex_div 1div_ttm 1last_div_amount 1next_div_amount 1raised_last 1tr 1percentrank 1willr 1cut_last 1miss_eps_last 1three_black_crows 1hl2 1obv 1ohlc4 1

Examples 1–10 of 20 · page 1 of 2

Corporate treasury · example 1

Treasury: is long duration (TLT) in a downtrend before we term out debt?

Before issuing long-dated debt, the treasury team reads the long-bond ETF: trend, momentum and the odds of further weakness.

ora-fin-0.1.1TLT6 questions
  1. StateTLT
  2. Questions6 asked
  3. Answersreal, captured
  4. Actionsnone

State

{"symbol":"TLT"} The server fills in the latest completed session.

Questions

below_200dEnglish → ruleIs the stock below its 200-day moving average?
sma200_uprulesma(C, 200) > ref(sma(C, 200), -20)
The 200-day average is rising
macdEnglish → ruleIs MACD above zero?
lh_llEnglish → ruleIs the stock making lower swing highs and lower swing lows?
down_weekforecastWill the stock be lower in a week?
Lower in a week
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
below_200d
Is the stock below its 200-day moving average
compiled to C < sma(C, 200)
0.8873true
sma200_up
The 200-day average is rising
0.0537false
macd
Is MACD above zero
compiled to macd(C) > 0
0.8818true
lh_ll
Is the stock making lower swing highs and lower swing lows
compiled to (swinghigh(5, 1) < swinghigh(5, 2)) and (swinglow(5, 1) < swinglow(5, 2))
0.662true
down_week
Lower in a week
0.50450% · close to even
drop5
A 5% drawdown within a month
0.16416% · unlikely

What it means

For TLT on the session of 2026-10-30: True now: Is the stock below its 200-day moving average; Is MACD above zero; Is the stock making lower swing highs and lower swing lows. Not true: The 200-day average is rising. Forecasts: Lower in a week 50%; A 5% drawdown within a month 16%.

Long bonds in a downtrend mean rising long rates; the team weighs that against the issuance calendar rather than trying to time the bottom.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "TLT"
  },
  "questions": {
    "below_200d": {
      "type": "yes_no",
      "instructions": "Is the stock below its 200-day moving average?"
    },
    "sma200_up": {
      "type": "yes_no",
      "ask": "sma(C, 200) > ref(sma(C, 200), -20)"
    },
    "macd": {
      "type": "yes_no",
      "instructions": "Is MACD above zero?"
    },
    "lh_ll": {
      "type": "yes_no",
      "instructions": "Is the stock making lower swing highs and lower swing lows?"
    },
    "down_week": {
      "type": "yes_no",
      "instructions": "Will the stock be lower in a week?"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  }
}
Response JSON (TLT, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "below_200d": {
      "yes_no": 0.8873,
      "rule": "C < sma(C, 200)",
      "basis": "comparison"
    },
    "sma200_up": {
      "yes_no": 0.0537,
      "rule": "sma(C, 200) > ref(sma(C, 200), -20)",
      "basis": "rule"
    },
    "macd": {
      "yes_no": 0.8818,
      "rule": "macd(C) > 0",
      "basis": "pattern"
    },
    "lh_ll": {
      "yes_no": 0.662,
      "rule": "(swinghigh(5, 1) < swinghigh(5, 2)) and (swinglow(5, 1) < swinglow(5, 2))",
      "basis": "pattern"
    },
    "down_week": {
      "yes_no": 0.504
    },
    "drop5": {
      "yes_no": 0.164
    }
  },
  "context": {
    "symbol": "TLT",
    "as_of": "2026-10-30"
  }
}

macd ref sma swinghigh swinglow

Corporate treasury · example 2

Treasury: SHY, IEF and TLT trend side by side

Read the yield curve through three Treasury ETFs at once to see which part of the curve is moving.

ora-fin-0.1.13 symbols, one request each5 questions
  1. State3 symbols
  2. Questions5 asked
  3. Answersreal, captured
  4. Actionsnone

State

{"symbol":"SHY"} then IEF, TLT, one request each. The server fills in the latest completed session.

Questions

trendruleC > sma(C, 50)
Above the 50-day average
ema_upruleema(C, 10) > ema(C, 30)
10-day exponential average above the 30-day
rocruleroc(C, 20) > 0
20-day rate of change positive
vol_lowEnglish → ruleIs 20-day historical volatility below 20%?
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

Symboltrendruleema_uprulerocrulevol_lowruleup_weekforecast
SHY0.89710.8690.9310.94630.594
IEF0.85140.82450.9290.94630.483
TLT0.84820.87620.9340.94630.561

true false not known for rules; forecasts are odds. Hover a column for its question.

What it means

Session of 2026-10-30, 3 symbols: Above the 50-day average: true for SHY, IEF, TLT of 3. 10-day exponential average above the 30-day: true for SHY, IEF, TLT of 3. 20-day rate of change positive: true for SHY, IEF, TLT of 3. Is 20-day historical volatility below 20%: true for SHY, IEF, TLT of 3. Highest odds for “Higher in a week”: SHY at 59%.

When the short end trends up and the long end does not, the curve is steepening; treasury uses that to choose the tenor of new borrowing.

Request JSON (SHY; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "SHY"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "ema_up": {
      "type": "yes_no",
      "ask": "ema(C, 10) > ema(C, 30)"
    },
    "roc": {
      "type": "yes_no",
      "ask": "roc(C, 20) > 0"
    },
    "vol_low": {
      "type": "yes_no",
      "instructions": "Is 20-day historical volatility below 20%?"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}
Response JSON (SHY, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.8971,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "ema_up": {
      "yes_no": 0.869,
      "rule": "ema(C, 10) > ema(C, 30)",
      "basis": "rule"
    },
    "roc": {
      "yes_no": 0.931,
      "rule": "roc(C, 20) > 0",
      "basis": "rule"
    },
    "vol_low": {
      "yes_no": 0.9463,
      "rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2",
      "basis": "pattern"
    },
    "up_week": {
      "yes_no": 0.594
    }
  },
  "context": {
    "symbol": "SHY",
    "as_of": "2026-10-30"
  }
}

ema log offset roc sma sqrt std

Corporate treasury · example 3

Treasury: is our cash parking (SGOV, BIL) behaving like cash?

Check that the T-bill ETFs used for excess cash have tiny volatility and no unusual drawdown.

ora-fin-0.1.12 symbols, one request each5 questions1 action
  1. State2 symbols
  2. Questions5 asked
  3. Answersreal, captured
  4. Actions1 rule · dry run

State

{"symbol":"SGOV"} then BIL, one request each. The server fills in the latest completed session.

Questions

atr_lowEnglish → ruleIs the 14-day ATR less than 2% of the price?
hv_lowEnglish → ruleIs 20-day historical volatility below 20%?
drawdownruleC < 0.99 * max(H, 63)
More than 1% below its three-month high
zshockrulezscore(C / C[-1] - 1, 20) < -2
A two-sigma down day
stablerulebetween(C / sma(C, 20), 0.995, 1.005)
Within half a percent of its 20-day average

Answers

Symbolatr_lowrulehv_lowruledrawdownrulezshockrulestableruleFired
SGOV0.94630.94630.05370.05430.95none
BIL0.94630.94630.05370.05370.95none

true false not known for rules; forecasts are odds. Hover a column for its question.

Actions

Rules on the answers decide what to send. Each symbol runs its own request, so each one can fire.

drawdown >= 0.6 or zshock >= 0.6→Emailtreasury-ops
SGOV 0 of 1 fired · dry run, nothing sent
BIL 0 of 1 fired · dry run, nothing sent

What it means

Session of 2026-10-30, 2 symbols: Is the 14-day ATR less than 2% of the price: true for SGOV, BIL of 2. Is 20-day historical volatility below 20%: true for SGOV, BIL of 2. More than 1% below its three-month high: true for none of 2. A two-sigma down day: true for none of 2. cash_alert fired for none.

These should almost always be false; an alert means the cash vehicle is not behaving like cash and treasury reviews the allocation.

Request JSON (SGOV; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "SGOV"
  },
  "questions": {
    "atr_low": {
      "type": "yes_no",
      "instructions": "Is the 14-day ATR less than 2% of the price?"
    },
    "hv_low": {
      "type": "yes_no",
      "instructions": "Is 20-day historical volatility below 20%?"
    },
    "drawdown": {
      "type": "yes_no",
      "ask": "C < 0.99 * max(H, 63)"
    },
    "zshock": {
      "type": "yes_no",
      "ask": "zscore(C / C[-1] - 1, 20) < -2"
    },
    "stable": {
      "type": "yes_no",
      "ask": "between(C / sma(C, 20), 0.995, 1.005)"
    }
  },
  "actions": [
    {
      "id": "cash_alert",
      "when": "drawdown >= 0.6 or zshock >= 0.6",
      "do": "email",
      "connection": "treasury-ops",
      "subject": "{{symbol}}: cash vehicle moved unusually",
      "message": "{{symbol}} ({{as_of}}): 1% off its three-month high {{drawdown|pct}}, return shock {{zshock|pct}}. Review the money-market allocation."
    }
  ],
  "dry_run": true
}
Response JSON (SGOV, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "atr_low": {
      "yes_no": 0.9463,
      "rule": "atr(14) / C < 0.02",
      "basis": "pattern"
    },
    "hv_low": {
      "yes_no": 0.9463,
      "rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2",
      "basis": "pattern"
    },
    "drawdown": {
      "yes_no": 0.0537,
      "rule": "C < 0.99 * max(H, 63)",
      "basis": "rule"
    },
    "zshock": {
      "yes_no": 0.0543,
      "rule": "zscore(C / C[-1] - 1, 20) < -2",
      "basis": "rule"
    },
    "stable": {
      "yes_no": 0.95,
      "rule": "between(C / sma(C, 20), 0.995, 1.005)",
      "basis": "rule"
    }
  },
  "context": {
    "symbol": "SGOV",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "cash_alert",
      "fired": false,
      "status": "skipped"
    }
  ]
}

atr between log max offset sma sqrt std zscore

Corporate treasury · example 4

Treasury: is the dollar (UUP) strengthening before we hedge euro receivables?

A dollar-strength read through the dollar index ETF helps decide whether to layer in hedges now or wait.

ora-fin-0.1.1UUP6 questions2 actions
  1. StateUUP
  2. Questions6 asked
  3. Answersreal, captured
  4. Actions2 rules · dry run

State

{"symbol":"UUP"} The server fills in the latest completed session.

Questions

trendEnglish → ruleIs the stock above its 50-day moving average?
crossrulecrossup(C, sma(C, 50))
Crossed above its 50-day today
adxruleadx(14) > 25
Trending (ADX above 25)
stochrulestochk(14) > stochd(14)
Stochastic %K above %D
up_weekforecastWill the stock be higher in a week?
Higher in a week
rally5forecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month

Answers

QuestionAnswerReading
trend
Is the stock above its 50-day moving average
compiled to C > sma(C, 50)
0.8725true
cross
Crossed above its 50-day today
0.05false
adx
Trending (ADX above 25)
0.7393true
stoch
Stochastic %K above %D
0.1848false
up_week
Higher in a week
0.56156% · close to even
rally5
A 5% rally within a month
0.0141% · unlikely

Actions

Rules on the answers decide what to send.

trend >= 0.6 and up_week >= 0.55→Webhooktms
else→Slacktreasury
What each action would send 1 of 2 fired · dry run, nothing sent
hedge_nowwould send (dry run)Webhook → tms
{
  "event": "fx_hedge_review",
  "instrument": "UUP",
  "as_of": "2026-10-30",
  "dollar_uptrend": 0.8725,
  "p_up_week": 0.561,
  "action": "layer_next_tranche"
}
waitrule false: skipped

What it means

For UUP on the session of 2026-10-30: True now: Is the stock above its 50-day moving average; Trending (ADX above 25). Not true: Crossed above its 50-day today; Stochastic %K above %D. Forecasts: Higher in a week 56%; A 5% rally within a month 1%. Fired: hedge_now (Webhook → tms).

Treasury follows its hedge policy either way; the signal only changes the timing of the next tranche within the policy window.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "UUP"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 50-day moving average?"
    },
    "cross": {
      "type": "yes_no",
      "ask": "crossup(C, sma(C, 50))"
    },
    "adx": {
      "type": "yes_no",
      "ask": "adx(14) > 25"
    },
    "stoch": {
      "type": "yes_no",
      "ask": "stochk(14) > stochd(14)"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    },
    "rally5": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "hedge_now",
      "when": "trend >= 0.6 and up_week >= 0.55",
      "do": "webhook",
      "connection": "tms",
      "body": {
        "event": "fx_hedge_review",
        "instrument": "{{symbol}}",
        "as_of": "{{as_of}}",
        "dollar_uptrend": "{{trend}}",
        "p_up_week": "{{up_week}}",
        "action": "layer_next_tranche"
      }
    },
    {
      "id": "wait",
      "when": "else",
      "do": "slack",
      "connection": "treasury",
      "message": "{{symbol}} ({{as_of}}): no confirmed dollar uptrend (above 50-day {{trend|pct}}, higher in a week {{up_week|pct}}). Keep the hedge schedule."
    }
  ],
  "dry_run": true
}
Response JSON (UUP, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.8725,
      "rule": "C > sma(C, 50)",
      "basis": "comparison"
    },
    "cross": {
      "yes_no": 0.05,
      "rule": "crossup(C, sma(C, 50))",
      "basis": "rule"
    },
    "adx": {
      "yes_no": 0.7393,
      "rule": "adx(14) > 25",
      "basis": "rule"
    },
    "stoch": {
      "yes_no": 0.1848,
      "rule": "stochk(14) > stochd(14)",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.561
    },
    "rally5": {
      "yes_no": 0.014
    }
  },
  "context": {
    "symbol": "UUP",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "hedge_now",
      "fired": true,
      "status": "dry_run",
      "do": "webhook",
      "connection": "tms",
      "preview": {
        "body": {
          "event": "fx_hedge_review",
          "instrument": "UUP",
          "as_of": "2026-10-30",
          "dollar_uptrend": 0.8725,
          "p_up_week": 0.561,
          "action": "layer_next_tranche"
        }
      }
    },
    {
      "id": "wait",
      "fired": false,
      "status": "skipped"
    }
  ]
}

adx crossup sma stochd stochk

Corporate treasury · example 5

Treasury at AAPL: is this a good week for the buyback program?

Treasury teams with discretion in a repurchase plan prefer buying on weakness: pullbacks, oversold readings and support.

ora-fin-0.1.1AAPL6 questions2 actions
  1. StateAAPL
  2. Questions6 asked
  3. Answersreal, captured
  4. Actions2 rules · dry run

State

{"symbol":"AAPL"} The server fills in the latest completed session.

Questions

pullbackEnglish → ruleHas the stock pulled back at least 5% from its 20-day high?
rsi40English → ruleIs RSI below 40?
near_supEnglish → ruleIs the stock within 2% above its last swing low (support)?
below_bandruleC < bblower(C, 20, 2)
Closed under the lower Bollinger band
earn_soonruledays_to_earnings <= 10
Reports earnings within 10 days
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
pullback
Has the stock pulled back at least 5% from its 20-day high
compiled to C <= max(H, 20) * 0.95
0.1693false
rsi40
Is RSI below 40
compiled to rsi(C, 14) < 40
0.0634false
near_sup
Is the stock within 2% above its last swing low (support)
compiled to (C >= swinglow(5, 1)) and (C <= swinglow(5, 1) * 1.02)
0.5691on the line (true)
below_band
Closed under the lower Bollinger band
0.0874false
earn_soon
Reports earnings within 10 days
0.9392true
drop5
A 5% drawdown within a month
0.36537% · unlikely

Actions

Rules on the answers decide what to send.

(pullback >= 0.6 or rsi40 >= 0.6) and earn_soon < 0.4→Webhookbuyback-broker
else→Emailtreasury-ops
What each action would send 1 of 2 fired · dry run, nothing sent
acceleraterule false: skipped
standardwould send (dry run)Email → treasury-ops
{
  "subject": "AAPL buyback: standard pace",
  "text": "AAPL (2026-10-30): no pullback signal (17%) or earnings within 10 days (94%). Standard daily pace."
}

What it means

For AAPL on the session of 2026-10-30: True now: Reports earnings within 10 days. Not true: Has the stock pulled back at least 5% from its 20-day high; Is RSI below 40; Closed under the lower Bollinger band. On the line: Is the stock within 2% above its last swing low (support). Forecasts: A 5% drawdown within a month 37%. Fired: standard (Email → treasury-ops).

Inside a pre-set plan, the signal moves purchases within an agreed grid; the earnings check keeps the desk out of blackout-adjacent windows.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "AAPL"
  },
  "questions": {
    "pullback": {
      "type": "yes_no",
      "instructions": "Has the stock pulled back at least 5% from its 20-day high?"
    },
    "rsi40": {
      "type": "yes_no",
      "instructions": "Is RSI below 40?"
    },
    "near_sup": {
      "type": "yes_no",
      "instructions": "Is the stock within 2% above its last swing low (support)?"
    },
    "below_band": {
      "type": "yes_no",
      "ask": "C < bblower(C, 20, 2)"
    },
    "earn_soon": {
      "type": "yes_no",
      "ask": "days_to_earnings <= 10"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "accelerate",
      "when": "(pullback >= 0.6 or rsi40 >= 0.6) and earn_soon < 0.4",
      "do": "webhook",
      "connection": "buyback-broker",
      "body": {
        "program": "10b5-1",
        "ticker": "{{symbol}}",
        "as_of": "{{as_of}}",
        "instruction": "use_upper_grid",
        "p_pullback": "{{pullback}}",
        "p_rsi_under_40": "{{rsi40}}"
      }
    },
    {
      "id": "standard",
      "when": "else",
      "do": "email",
      "connection": "treasury-ops",
      "subject": "{{symbol}} buyback: standard pace",
      "message": "{{symbol}} ({{as_of}}): no pullback signal ({{pullback|pct}}) or earnings within 10 days ({{earn_soon|pct}}). Standard daily pace."
    }
  ],
  "dry_run": true
}
Response JSON (AAPL, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "pullback": {
      "yes_no": 0.1693,
      "rule": "C <= max(H, 20) * 0.95",
      "basis": "pattern"
    },
    "rsi40": {
      "yes_no": 0.0634,
      "rule": "rsi(C, 14) < 40",
      "basis": "comparison"
    },
    "near_sup": {
      "yes_no": 0.5691,
      "rule": "(C >= swinglow(5, 1)) and (C <= swinglow(5, 1) * 1.02)",
      "basis": "pattern"
    },
    "below_band": {
      "yes_no": 0.0874,
      "rule": "C < bblower(C, 20, 2)",
      "basis": "rule"
    },
    "earn_soon": {
      "yes_no": 0.9392,
      "rule": "days_to_earnings <= 10",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.365
    }
  },
  "context": {
    "symbol": "AAPL",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "accelerate",
      "fired": false,
      "status": "skipped"
    },
    {
      "id": "standard",
      "fired": true,
      "status": "dry_run",
      "do": "email",
      "connection": "treasury-ops",
      "preview": {
        "subject": "AAPL buyback: standard pace",
        "text": "AAPL (2026-10-30): no pullback signal (17%) or earnings within 10 days (94%). Standard daily pace."
      }
    }
  ]
}

bblower days_to_earnings max rsi swinglow

Corporate treasury · example 6

Treasury: are credit markets (HYG, LQD) open for a new bond?

Before going to market with a bond deal, check that high-yield and investment-grade ETFs are calm and trending.

ora-fin-0.1.12 symbols, one request each6 questions
  1. State2 symbols
  2. Questions6 asked
  3. Answersreal, captured
  4. Actionsnone

State

{"symbol":"HYG"} then LQD, one request each. The server fills in the latest completed session.

Questions

trendruleC > sma(C, 50)
Above the 50-day average
breakdownruleC < lowest(L, 20)
Closed under the 20-day low
atrruleatr(14) > 1.2 * ref(atr(14), -10)
ATR up 20% in two weeks
vol_spikeruleV > 2 * ref(avg(V, 20), -1)
Volume more than twice the previous 20-day average
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month
vol_upforecastWill volatility be higher over the next month?
Higher volatility next month

Answers

Symboltrendrulebreakdownruleatrrulevol_spikeruledrop5forecastvol_upforecast
HYG0.19140.08110.07770.09110.0090.476
LQD0.65520.05370.06070.05970.0220.511

true false not known for rules; forecasts are odds. Hover a column for its question.

What it means

Session of 2026-10-30, 2 symbols: Above the 50-day average: true for LQD of 2. Closed under the 20-day low: true for none of 2. ATR up 20% in two weeks: true for none of 2. Volume more than twice the previous 20-day average: true for none of 2. Highest odds for “A 5% drawdown within a month”: LQD at 2%.

Calm, trending credit ETFs describe an open market; a breakdown with expanding ranges is when bankers suggest waiting for a better window.

Request JSON (HYG; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "HYG"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "breakdown": {
      "type": "yes_no",
      "ask": "C < lowest(L, 20)"
    },
    "atr": {
      "type": "yes_no",
      "ask": "atr(14) > 1.2 * ref(atr(14), -10)"
    },
    "vol_spike": {
      "type": "yes_no",
      "ask": "V > 2 * ref(avg(V, 20), -1)"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    },
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will volatility be higher over the next month?"
    }
  }
}
Response JSON (HYG, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.1914,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "breakdown": {
      "yes_no": 0.0811,
      "rule": "C < lowest(L, 20)",
      "basis": "rule"
    },
    "atr": {
      "yes_no": 0.0777,
      "rule": "atr(14) > 1.2 * ref(atr(14), -10)",
      "basis": "rule"
    },
    "vol_spike": {
      "yes_no": 0.0911,
      "rule": "V > 2 * ref(avg(V, 20), -1)",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.009
    },
    "vol_up": {
      "yes_no": 0.476
    }
  },
  "context": {
    "symbol": "HYG",
    "as_of": "2026-10-30"
  }
}

atr avg lowest ref sma

Corporate treasury · example 7

Treasury: is TIP outperforming nominal bonds?

Compare inflation-linked bonds with nominal Treasuries to read inflation expectations before pricing supplier contracts.

ora-fin-0.1.12 symbols, one request each5 questions
  1. State2 symbols
  2. Questions5 asked
  3. Answersreal, captured
  4. Actionsnone

State

{"symbol":"TIP"} then IEF, one request each. The server fills in the latest completed session.

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
momEnglish → ruleIs the stock up over the last month?
mean_upruleC > mean(C, 100)
Above its 100-day average
rma_upruleC > rma(C, 14)
Above its 14-day smoothed average
beat_spyforecastWill it beat SPY over the next month?
Beating SPY over a month

Answers

Symboltrendrulemomrulemean_uprulerma_uprulebeat_spyforecast
TIP0.36820.91320.63310.89780.284
IEF0.15760.92030.40950.90890.281

true false not known for rules; forecasts are odds. Hover a column for its question.

What it means

Session of 2026-10-30, 2 symbols: Is the stock above its 200-day moving average: true for none of 2. Is the stock up over the last month: true for TIP, IEF of 2. Above its 100-day average: true for TIP of 2. Above its 14-day smoothed average: true for TIP, IEF of 2. Highest odds for “Beating SPY over a month”: TIP at 28%.

If TIP trends while IEF does not, the market is pricing more inflation; procurement hears about it before negotiating escalators.

Request JSON (TIP; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "TIP"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "mom": {
      "type": "yes_no",
      "instructions": "Is the stock up over the last month?"
    },
    "mean_up": {
      "type": "yes_no",
      "ask": "C > mean(C, 100)"
    },
    "rma_up": {
      "type": "yes_no",
      "ask": "C > rma(C, 14)"
    },
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it beat SPY over the next month?"
    }
  }
}
Response JSON (TIP, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.3682,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "mom": {
      "yes_no": 0.9132,
      "rule": "C > C[-21]",
      "basis": "pattern"
    },
    "mean_up": {
      "yes_no": 0.6331,
      "rule": "C > mean(C, 100)",
      "basis": "rule"
    },
    "rma_up": {
      "yes_no": 0.8978,
      "rule": "C > rma(C, 14)",
      "basis": "rule"
    },
    "beat_spy": {
      "yes_no": 0.284
    }
  },
  "context": {
    "symbol": "TIP",
    "as_of": "2026-10-30"
  }
}

mean offset rma sma

Corporate treasury · example 8

A pre-open treasury dashboard: rates, credit and the dollar

Every weekday before the open, one line per instrument for the treasury channel.

ora-fin-0.1.15 symbols, one request each3 questions1 actionworkflow · Mon–Fri at 08:30 ET
  1. ScheduleMon–Fri at 08:30 ET
  2. State5 symbols
  3. Questions3 asked
  4. Answersreal, captured
  5. Actions1 rule · dry run

State

{"symbol":"SHY"} then TLT, LQD, HYG, UUP, one request each. The server fills in the latest completed session.

Questions

trendruleC > sma(C, 50)
Above the 50-day average
bigruleabs(C - C[-1]) > 1.5 * atr(14)
Today's move was bigger than 1.5 ATR
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

Symboltrendrulebigruleup_weekforecastFired
SHY0.89710.13310.594none
TLT0.84820.06010.561none
LQD0.65520.05450.547none
HYG0.19140.06130.499none
UUP0.87250.05810.561none

true false not known for rules; forecasts are odds. Hover a column for its question.

Actions

Rules on the answers decide what to send. Each symbol runs its own request, so each one can fire.

big >= 0.6→Slacktreasury
SHY 0 of 1 fired · dry run, nothing sent
TLT 0 of 1 fired · dry run, nothing sent
LQD 0 of 1 fired · dry run, nothing sent
HYG 0 of 1 fired · dry run, nothing sent
UUP 0 of 1 fired · dry run, nothing sent

What it means

Session of 2026-10-30, 5 symbols: Above the 50-day average: true for SHY, TLT, LQD, UUP of 5. Today's move was bigger than 1.5 ATR: true for none of 5. Highest odds for “Higher in a week”: SHY at 59%. line fired for none.

Only outsized moves post, so the channel highlights the instruments that matter that morning.

As a scheduled workflow (Mon–Fri at 08:30 ET)

Create it under Workflows in the console: it runs these questions for every symbol on the schedule and fires the actions per symbol. The answers above are what one run returned.

{
  "name": "A pre-open treasury dashboard: rates, credit and the dollar",
  "symbols": "SHY TLT LQD HYG UUP",
  "days": [
    1,
    2,
    3,
    4,
    5
  ],
  "at_time": "08:30",
  "model": "ora-fin-0.1.1",
  "questions": {
    "trend": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "big": {
      "type": "yes_no",
      "ask": "abs(C - C[-1]) > 1.5 * atr(14)"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  },
  "actions": [
    {
      "id": "line",
      "when": "big >= 0.6",
      "do": "slack",
      "connection": "treasury",
      "message": "{{symbol}} ({{as_of}}): moved over 1.5 ATR yesterday. Above 50-day {{trend|pct}}, higher in a week {{up_week|pct}}."
    }
  ]
}
Request JSON (SHY; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "SHY"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "big": {
      "type": "yes_no",
      "ask": "abs(C - C[-1]) > 1.5 * atr(14)"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  },
  "actions": [
    {
      "id": "line",
      "when": "big >= 0.6",
      "do": "slack",
      "connection": "treasury",
      "message": "{{symbol}} ({{as_of}}): moved over 1.5 ATR yesterday. Above 50-day {{trend|pct}}, higher in a week {{up_week|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (SHY, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.8971,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "big": {
      "yes_no": 0.1331,
      "rule": "abs(C - C[-1]) > 1.5 * atr(14)",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.594
    }
  },
  "context": {
    "symbol": "SHY",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "line",
      "fired": false,
      "status": "skipped"
    }
  ]
}

abs atr offset sma

Corporate treasury · example 9

Treasury at MSFT: equity-comp hedge check

When hedging stock-based compensation exposure, read the stock's volatility regime and trend.

ora-fin-0.1.1MSFT6 questions
  1. StateMSFT
  2. Questions6 asked
  3. Answersreal, captured
  4. Actionsnone

State

{"symbol":"MSFT"} The server fills in the latest completed session.

Questions

hv40rulestd(log(C / C[-1]), 20) * sqrt(252) > 0.4
Annualized 20-day volatility above 40%
vol5English → ruleIs 5-day volatility higher than 20-day volatility?
atrruleatr_pct(14) > 2
ATR above 2% of price
trendrulesma(C, 50) > sma(C, 200)
50-day above the 200-day
vol_upforecastWill volatility be higher over the next month?
Higher volatility next month
big5forecastWill there be a big move in either direction in the next 5 days?
A big move either way in 5 days

Answers

QuestionAnswerReading
hv40
Annualized 20-day volatility above 40%
0.1008false
vol5
Is 5-day volatility higher than 20-day volatility
compiled to std(log(C / C[-1]), 5) * sqrt(5 / 4) > std(log(C / C[-1]), 20) * sqrt(20 / 19)
0.3915false
atr
ATR above 2% of price
0.8399true
trend
50-day above the 200-day
0.9369true
vol_up
Higher volatility next month
0.67367% · likely
big5
A big move either way in 5 days
0.39740% · unlikely

What it means

For MSFT on the session of 2026-10-30: True now: ATR above 2% of price; 50-day above the 200-day. Not true: Annualized 20-day volatility above 40%; Is 5-day volatility higher than 20-day volatility. Forecasts: Higher volatility next month 67%; A big move either way in 5 days 40%.

Rising volatility raises hedge costs; treasury uses the regime read to choose between collars and plain forwards.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "MSFT"
  },
  "questions": {
    "hv40": {
      "type": "yes_no",
      "ask": "std(log(C / C[-1]), 20) * sqrt(252) > 0.4"
    },
    "vol5": {
      "type": "yes_no",
      "instructions": "Is 5-day volatility higher than 20-day volatility?"
    },
    "atr": {
      "type": "yes_no",
      "ask": "atr_pct(14) > 2"
    },
    "trend": {
      "type": "yes_no",
      "ask": "sma(C, 50) > sma(C, 200)"
    },
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will volatility be higher over the next month?"
    },
    "big5": {
      "type": "yes_no",
      "instructions": "Will there be a big move in either direction in the next 5 days?"
    }
  }
}
Response JSON (MSFT, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "hv40": {
      "yes_no": 0.1008,
      "rule": "std(log(C / C[-1]), 20) * sqrt(252) > 0.4",
      "basis": "rule"
    },
    "vol5": {
      "yes_no": 0.3915,
      "rule": "std(log(C / C[-1]), 5) * sqrt(5 / 4) > std(log(C / C[-1]), 20) * sqrt(20 / 19)",
      "basis": "pattern"
    },
    "atr": {
      "yes_no": 0.8399,
      "rule": "atr_pct(14) > 2",
      "basis": "rule"
    },
    "trend": {
      "yes_no": 0.9369,
      "rule": "sma(C, 50) > sma(C, 200)",
      "basis": "rule"
    },
    "vol_up": {
      "yes_no": 0.673
    },
    "big5": {
      "yes_no": 0.397
    }
  },
  "context": {
    "symbol": "MSFT",
    "as_of": "2026-10-30"
  }
}

atr_pct log offset sma sqrt std

Corporate treasury · example 10

Treasury: counterparty bank stocks under stress?

Watch the listed banks the company deposits with or trades derivatives with: drawdowns, breakdowns and big down days.

ora-fin-0.1.15 symbols, one request each4 questions1 action
  1. State5 symbols
  2. Questions4 asked
  3. Answersreal, captured
  4. Actions1 rule · dry run

State

{"symbol":"JPM"} then BAC, C, WFC, GS, one request each. The server fills in the latest completed session.

Questions

drawdownruleC < 0.8 * max(H, 252)
More than 20% off the 52-week high
breakdownruleC < lowest(L, 20)
Closed under the 20-day low
down_volruleC < C[-1] and V > 1.5 * ref(avg(V, 20), -1)
Down on heavy volume
drop10forecastWill it drop at least 10% at some point in the next month?
A 10% drawdown within a month

Answers

Symboldrawdownrulebreakdownruledown_volruledrop10forecastFired
JPM0.05370.10050.19780.30none
BAC0.70680.25110.11840.446stress
C0.15730.18570.50620.461none
WFC0.06510.05640.06380.431none
GS0.7060.08850.07510.515stress

true false not known for rules; forecasts are odds. Hover a column for its question.

Actions

Rules on the answers decide what to send. Each symbol runs its own request, so each one can fire.

drawdown >= 0.6 or (breakdown >= 0.6 and down_vol >= 0.6)→Emailtreasury-risk
JPM 0 of 1 fired · dry run, nothing sent
BAC 1 of 1 fired · dry run, nothing sent
stresswould send (dry run)Email → treasury-risk
{
  "subject": "Counterparty watch: BAC",
  "text": "BAC (2026-10-30): 20% drawdown 71%, 20-day breakdown 25% on volume 12%. 10% drop odds 45%. Review exposure limits."
}
C 0 of 1 fired · dry run, nothing sent
WFC 0 of 1 fired · dry run, nothing sent
GS 1 of 1 fired · dry run, nothing sent
stresswould send (dry run)Email → treasury-risk
{
  "subject": "Counterparty watch: GS",
  "text": "GS (2026-10-30): 20% drawdown 71%, 20-day breakdown 9% on volume 8%. 10% drop odds 52%. Review exposure limits."
}

What it means

Session of 2026-10-30, 5 symbols: More than 20% off the 52-week high: true for BAC, GS of 5. Closed under the 20-day low: true for none of 5. Down on heavy volume: true for none of 5. Highest odds for “A 10% drawdown within a month”: GS at 52%. stress fired for BAC, GS.

Equity stress is an early, imperfect signal for bank counterparties; an alert prompts a review of deposit and derivative limits, not an automatic move.

Request JSON (JPM; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "JPM"
  },
  "questions": {
    "drawdown": {
      "type": "yes_no",
      "ask": "C < 0.8 * max(H, 252)"
    },
    "breakdown": {
      "type": "yes_no",
      "ask": "C < lowest(L, 20)"
    },
    "down_vol": {
      "type": "yes_no",
      "ask": "C < C[-1] and V > 1.5 * ref(avg(V, 20), -1)"
    },
    "drop10": {
      "type": "yes_no",
      "instructions": "Will it drop at least 10% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "stress",
      "when": "drawdown >= 0.6 or (breakdown >= 0.6 and down_vol >= 0.6)",
      "do": "email",
      "connection": "treasury-risk",
      "subject": "Counterparty watch: {{symbol}}",
      "message": "{{symbol}} ({{as_of}}): 20% drawdown {{drawdown|pct}}, 20-day breakdown {{breakdown|pct}} on volume {{down_vol|pct}}. 10% drop odds {{drop10|pct}}. Review exposure limits."
    }
  ],
  "dry_run": true
}
Response JSON (JPM, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "drawdown": {
      "yes_no": 0.0537,
      "rule": "C < 0.8 * max(H, 252)",
      "basis": "rule"
    },
    "breakdown": {
      "yes_no": 0.1005,
      "rule": "C < lowest(L, 20)",
      "basis": "rule"
    },
    "down_vol": {
      "yes_no": 0.1978,
      "rule": "C < C[-1] and V > 1.5 * ref(avg(V, 20), -1)",
      "basis": "rule"
    },
    "drop10": {
      "yes_no": 0.3
    }
  },
  "context": {
    "symbol": "JPM",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "stress",
      "fired": false,
      "status": "skipped"
    }
  ]
}

avg lowest max offset ref

Information, not investment advice. Rules answer from the latest completed daily session; forecasts are probabilities. Actions ran as dry runs: nothing was sent. More in Corporates: Investor relations team, CFO office, Bank credit analyst, Financial journalist / media.

Create an account Open the Playground Everything here also lives in the console, next to your keys and usage.