Use cases · Individuals
FX trader: 20 ways to use Ora
Reads currencies through the dollar ETF, country funds and ADRs that move with exchange rates. Each example is a complete, runnable request with the real answers it returned (40 requests, captured 2026-10-31), what they mean and, where it fits, the action it would send.
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 (43)
sma 14ref 5rsi 4offset 4ema 3roc 3highest 3max 3atr 3adx 2avg 2log 2sqrt 2std 2beat_eps_last 2macd 1lowest 1stochk 1atr_pct 1swinghigh 1swinglow 1engulfing_bear 1evening_star 1harami_bear 1tweezer_top 1days_to_earnings 1eps_year_ago 1last_eps 1between 1cci 1zscore 1abs 1diminus 1diplus 1obv 1pays_dividend 1revenue_growth_yoy 1crossdown 1linreg 1rec 1wma 1cut_last 1div_yield_ttm 1
Examples 11–20 of 20 · page 2 of 2
FX trader · example 11
Is the dollar stretched far from its average?
Mean reversion in a slow-moving asset: z-score, distance from the 20-day in ATR, and CCI extremes in UUP.
- StateUUP
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"UUP"} The server fills in the latest completed session.
Questions
z_hi | rule | zscore(C, 20) > 2Close more than 2 standard deviations above its 20-day mean |
z_lo | rule | zscore(C, 20) < -2Two deviations under the 20-day mean |
cci_hi | rule | cci(20) > 100CCI above 100 |
stretched | rule | C > sma(C, 20) + 2 * atr(14)Stretched: more than 2 ATR above the 20-day |
vol_calm | forecast | Will volatility calm down over the next 5 days? Volatility calming over 5 days |
Answers
| Question | Answer | Reading |
|---|---|---|
z_hiClose more than 2 standard deviations above its 20-day mean | 0.0791 | false |
z_loTwo deviations under the 20-day mean | 0.0809 | false |
cci_hiCCI above 100 | 0.1506 | false |
stretchedStretched: more than 2 ATR above the 20-day | 0.1464 | false |
vol_calmVolatility calming over 5 days | 0.521 | 52% · close to even |
What it means
For UUP on the session of 2026-10-30: Not true: Close more than 2 standard deviations above its 20-day mean; Two deviations under the 20-day mean; CCI above 100; Stretched: more than 2 ATR above the 20-day. Forecasts: Volatility calming over 5 days 52%.
Extremes are rare in the dollar; when a z-score or CCI rule is true, a fade toward the mean is the trade to consider.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "UUP"
},
"questions": {
"z_hi": {
"type": "yes_no",
"ask": "zscore(C, 20) > 2"
},
"z_lo": {
"type": "yes_no",
"ask": "zscore(C, 20) < -2"
},
"cci_hi": {
"type": "yes_no",
"ask": "cci(20) > 100"
},
"stretched": {
"type": "yes_no",
"ask": "C > sma(C, 20) + 2 * atr(14)"
},
"vol_calm": {
"type": "yes_no",
"instructions": "Will volatility calm down over the next 5 days?"
}
}
}Response JSON (UUP, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"z_hi": {
"yes_no": 0.0791,
"rule": "zscore(C, 20) > 2",
"basis": "rule"
},
"z_lo": {
"yes_no": 0.0809,
"rule": "zscore(C, 20) < -2",
"basis": "rule"
},
"cci_hi": {
"yes_no": 0.1506,
"rule": "cci(20) > 100",
"basis": "rule"
},
"stretched": {
"yes_no": 0.1464,
"rule": "C > sma(C, 20) + 2 * atr(14)",
"basis": "rule"
},
"vol_calm": {
"yes_no": 0.521
}
},
"context": {
"symbol": "UUP",
"as_of": "2026-10-30"
}
}FX trader · example 12
Risk-off signal: strong dollar and weak emerging markets
When UUP is in an uptrend, send a signed webhook to the risk system so it can cut EM exposure; else send an all-clear.
- StateUUP
- Questions4 asked
- Answersreal, captured
- Actions2 rules · dry run
State
{"symbol":"UUP"} The server fills in the latest completed session.
Questions
trend | rule | C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)Stacked averages: close > 20 EMA > 50 > 200 |
momentum | rule | roc(C, 20) > 5Up more than 5% in 20 sessions |
breakout | rule | C > highest(C, 55)55-day closing breakout |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Question | Answer | Reading |
|---|---|---|
trendStacked averages: close > 20 EMA > 50 > 200 | 0.6713 | true |
momentumUp more than 5% in 20 sessions | 0.0556 | false |
breakout55-day closing breakout | 0.2455 | false |
up_weekHigher in a week | 0.561 | 56% · close to even |
Actions
Rules on the answers decide what to send.
trend >= 0.6 and (momentum >= 0.6 or breakout >= 0.6)→Webhookrisk-systemelse→Webhookrisk-system{
"signal": "usd_neutral",
"action": "none",
"p_trend": 0.6713,
"as_of": "2026-10-30"
}What it means
For UUP on the session of 2026-10-30: True now: Stacked averages: close > 20 EMA > 50 > 200. Not true: Up more than 5% in 20 sessions; 55-day closing breakout. Forecasts: Higher in a week 56%. Fired: clear (Webhook → risk-system).
The risk system gets a decision either way, so its log shows the check ran even on quiet days.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "UUP"
},
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)"
},
"momentum": {
"type": "yes_no",
"ask": "roc(C, 20) > 5"
},
"breakout": {
"type": "yes_no",
"ask": "C > highest(C, 55)"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
},
"actions": [
{
"id": "risk_off",
"when": "trend >= 0.6 and (momentum >= 0.6 or breakout >= 0.6)",
"do": "webhook",
"connection": "risk-system",
"body": {
"signal": "usd_strength",
"action": "reduce_em_exposure",
"p_trend": "{{trend}}",
"p_momentum": "{{momentum}}",
"p_breakout": "{{breakout}}",
"as_of": "{{as_of}}"
}
},
{
"id": "clear",
"when": "else",
"do": "webhook",
"connection": "risk-system",
"body": {
"signal": "usd_neutral",
"action": "none",
"p_trend": "{{trend}}",
"as_of": "{{as_of}}"
}
}
],
"dry_run": true
}Response JSON (UUP, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.6713,
"rule": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)",
"basis": "rule"
},
"momentum": {
"yes_no": 0.0556,
"rule": "roc(C, 20) > 5",
"basis": "rule"
},
"breakout": {
"yes_no": 0.2455,
"rule": "C > highest(C, 55)",
"basis": "rule"
},
"up_week": {
"yes_no": 0.561
}
},
"context": {
"symbol": "UUP",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "risk_off",
"fired": false,
"status": "skipped"
},
{
"id": "clear",
"fired": true,
"status": "dry_run",
"do": "webhook",
"connection": "risk-system",
"preview": {
"body": {
"signal": "usd_neutral",
"action": "none",
"p_trend": 0.6713,
"as_of": "2026-10-30"
}
}
}
]
}FX trader · example 13
Monday FX digest: dollar and five regions
Each Monday before the open, the same questions for the dollar ETF and five regional funds, emailed per symbol in an uptrend.
- ScheduleMon at 08:30 ET
- State6 symbols
- Questions3 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"UUP"} then VGK, EWJ, EEM, EWZ, EWC, one request each. The server fills in the latest completed session.
Questions
trend | rule | C > sma(C, 50)Above the 50-day average |
rsi50 | rule | rsi(C, 14) > 50RSI above 50 |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Symbol | trendrule | rsi50rule | up_weekforecast | Fired |
|---|---|---|---|---|
UUP | 0.8725 | 0.7635 | 0.561 | trend_mail |
VGK | 0.3016 | 0.5868 | 0.538 | none |
EWJ | 0.0788 | 0.0681 | 0.636 | none |
EEM | 0.0611 | 0.072 | 0.55 | none |
EWZ | 0.0671 | 0.0834 | 0.41 | none |
EWC | 0.5727 | 0.6144 | 0.545 | none |
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.
trend >= 0.6→Emailfx-team{
"subject": "FX digest: UUP in an uptrend",
"text": "UUP (2026-10-30) is above its 50-day. RSI over 50 76%, higher in a week 56%."
}What it means
Session of 2026-10-30, 6 symbols: Above the 50-day average: true for UUP of 6. RSI above 50: true for UUP, EWC of 6. Highest odds for “Higher in a week”: EWJ at 64%. trend_mail fired for UUP.
One workflow, six symbols; the team only gets mail for the regions in an uptrend that week.
As a scheduled workflow (Mon 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": "Monday FX digest: dollar and five regions",
"symbols": "UUP VGK EWJ EEM EWZ EWC",
"days": [
1
],
"at_time": "08:30",
"model": "ora-fin-0.1.1",
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"rsi50": {
"type": "yes_no",
"ask": "rsi(C, 14) > 50"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
},
"actions": [
{
"id": "trend_mail",
"when": "trend >= 0.6",
"do": "email",
"connection": "fx-team",
"subject": "FX digest: {{symbol}} in an uptrend",
"message": "{{symbol}} ({{as_of}}) is above its 50-day. RSI over 50 {{rsi50|pct}}, higher in a week {{up_week|pct}}."
}
]
}Request JSON (UUP; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "UUP"
},
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"rsi50": {
"type": "yes_no",
"ask": "rsi(C, 14) > 50"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
},
"actions": [
{
"id": "trend_mail",
"when": "trend >= 0.6",
"do": "email",
"connection": "fx-team",
"subject": "FX digest: {{symbol}} in an uptrend",
"message": "{{symbol}} ({{as_of}}) is above its 50-day. RSI over 50 {{rsi50|pct}}, higher in a week {{up_week|pct}}."
}
],
"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": "rule"
},
"rsi50": {
"yes_no": 0.7635,
"rule": "rsi(C, 14) > 50",
"basis": "rule"
},
"up_week": {
"yes_no": 0.561
}
},
"context": {
"symbol": "UUP",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "trend_mail",
"fired": true,
"status": "dry_run",
"do": "email",
"connection": "fx-team",
"preview": {
"subject": "FX digest: UUP in an uptrend",
"text": "UUP (2026-10-30) is above its 50-day. RSI over 50 76%, higher in a week 56%."
}
}
]
}FX trader · example 14
Mexico (EWW): did today's gap hold?
Peso news often gaps EWW at the open. Check whether the gap held, filled, and how big it was against ATR.
- StateEWW
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"EWW"} The server fills in the latest completed session.
Questions
gap_held | rule | (O > C[-1]) and (L > C[-1])Gapped up and never traded back to yesterday's close |
gap_filled | English → rule | Did today's gap up fill? |
gap_atr | rule | abs(O - C[-1]) > 0.5 * ref(atr(14), -1)Gap bigger than half an ATR |
gap_down_reclaim | rule | O < L[-1] and C > C[-1]Opened under yesterday's low, closed up on the day |
big_move | forecast | Will there be a big move in either direction in the next 5 days? A big move either way in 5 days |
Answers
| Question | Answer | Reading |
|---|---|---|
gap_heldGapped up and never traded back to yesterday's close | 0.0745 | false |
gap_filledDid today's gap up fill compiled to (O > C[-1] * 1) and (L <= C[-1]) | 0.0911 | false |
gap_atrGap bigger than half an ATR | 0.764 | true |
gap_down_reclaimOpened under yesterday's low, closed up on the day | 0.45 | on the line (false) |
big_moveA big move either way in 5 days | 0.398 | 40% · unlikely |
What it means
For EWW on the session of 2026-10-30: True now: Gap bigger than half an ATR. Not true: Gapped up and never traded back to yesterday's close; Did today's gap up fill. On the line: Opened under yesterday's low, closed up on the day. Forecasts: A big move either way in 5 days 40%.
A gap that held all day shows conviction; a filled gap says the news was faded by the close.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "EWW"
},
"questions": {
"gap_held": {
"type": "yes_no",
"ask": "(O > C[-1]) and (L > C[-1])"
},
"gap_filled": {
"type": "yes_no",
"instructions": "Did today's gap up fill?"
},
"gap_atr": {
"type": "yes_no",
"ask": "abs(O - C[-1]) > 0.5 * ref(atr(14), -1)"
},
"gap_down_reclaim": {
"type": "yes_no",
"ask": "O < L[-1] and C > C[-1]"
},
"big_move": {
"type": "yes_no",
"instructions": "Will there be a big move in either direction in the next 5 days?"
}
}
}Response JSON (EWW, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"gap_held": {
"yes_no": 0.0745,
"rule": "(O > C[-1]) and (L > C[-1])",
"basis": "rule"
},
"gap_filled": {
"yes_no": 0.0911,
"rule": "(O > C[-1] * 1) and (L <= C[-1])",
"basis": "pattern"
},
"gap_atr": {
"yes_no": 0.764,
"rule": "abs(O - C[-1]) > 0.5 * ref(atr(14), -1)",
"basis": "rule"
},
"gap_down_reclaim": {
"yes_no": 0.45,
"rule": "O < L[-1] and C > C[-1]",
"basis": "rule"
},
"big_move": {
"yes_no": 0.398
}
},
"context": {
"symbol": "EWW",
"as_of": "2026-10-30"
}
}FX trader · example 15
India (INDA): trend strength with ADX and DI
Measure trend strength and direction in INDA before adding to a rupee-exposed position.
- StateINDA
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"INDA"} The server fills in the latest completed session.
Questions
adx | rule | adx(14) > 25ADX(14) above 25 (trending) |
plus | rule | diplus(14) > diminus(14)+DI above -DI |
minus_strong | rule | diminus(14) > 25-DI above 25 (strong selling) |
sma200_up | rule | sma(C, 200) > ref(sma(C, 200), -20)The 200-day average is rising |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Question | Answer | Reading |
|---|---|---|
adxADX(14) above 25 (trending) | 0.1436 | false |
plus+DI above -DI | 0.7523 | true |
minus_strong-DI above 25 (strong selling) | 0.7896 | true |
sma200_upThe 200-day average is rising | 0.0537 | false |
up_weekHigher in a week | 0.455 | 46% · close to even |
What it means
For INDA on the session of 2026-10-30: True now: +DI above -DI; -DI above 25 (strong selling). Not true: ADX(14) above 25 (trending); The 200-day average is rising. Forecasts: Higher in a week 46%.
ADX tells you whether to use trend tools at all; the DI lines say whether the trend favours buyers or sellers.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "INDA"
},
"questions": {
"adx": {
"type": "yes_no",
"ask": "adx(14) > 25"
},
"plus": {
"type": "yes_no",
"ask": "diplus(14) > diminus(14)"
},
"minus_strong": {
"type": "yes_no",
"ask": "diminus(14) > 25"
},
"sma200_up": {
"type": "yes_no",
"ask": "sma(C, 200) > ref(sma(C, 200), -20)"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
}
}Response JSON (INDA, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"adx": {
"yes_no": 0.1436,
"rule": "adx(14) > 25",
"basis": "rule"
},
"plus": {
"yes_no": 0.7523,
"rule": "diplus(14) > diminus(14)",
"basis": "rule"
},
"minus_strong": {
"yes_no": 0.7896,
"rule": "diminus(14) > 25",
"basis": "rule"
},
"sma200_up": {
"yes_no": 0.0537,
"rule": "sma(C, 200) > ref(sma(C, 200), -20)",
"basis": "rule"
},
"up_week": {
"yes_no": 0.455
}
},
"context": {
"symbol": "INDA",
"as_of": "2026-10-30"
}
}FX trader · example 16
Developed vs emerging (EFA vs EEM): which leads?
Allocate between developed and emerging markets abroad using identical momentum and trend questions.
- State2 symbols
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"EFA"} then EEM, one request each. The server fills in the latest completed session.
Questions
momentum | rule | roc(C, 63) > 10 and C >= 0.95 * max(H, 63)Up more than 10% in a quarter, near the high |
trend | English → rule | Is the stock above its 200-day moving average? |
obv | rule | obv() > sma(obv(), 20)On-balance volume above its 20-day average |
beat_spy | forecast | Will it beat SPY over the next month? Beating SPY over a month |
Answers
| Symbol | momentumrule | trendrule | obvrule | beat_spyforecast |
|---|---|---|---|---|
EFA | 0.0537 | 0.6709 | 0.5344 | 0.447 |
EEM | 0.0537 | 0.1449 | 0.1116 | 0.501 |
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: Up more than 10% in a quarter, near the high: true for none of 2. Is the stock above its 200-day moving average: true for EFA of 2. On-balance volume above its 20-day average: true for none of 2. Highest odds for “Beating SPY over a month”: EEM at 50%.
The leader on momentum and volume trend gets the tilt; both weak with a strong dollar is the classic risk-off picture.
Request JSON (EFA; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "EFA"
},
"questions": {
"momentum": {
"type": "yes_no",
"ask": "roc(C, 63) > 10 and C >= 0.95 * max(H, 63)"
},
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"obv": {
"type": "yes_no",
"ask": "obv() > sma(obv(), 20)"
},
"beat_spy": {
"type": "yes_no",
"instructions": "Will it beat SPY over the next month?"
}
}
}Response JSON (EFA, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"momentum": {
"yes_no": 0.0537,
"rule": "roc(C, 63) > 10 and C >= 0.95 * max(H, 63)",
"basis": "rule"
},
"trend": {
"yes_no": 0.6709,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"obv": {
"yes_no": 0.5344,
"rule": "obv() > sma(obv(), 20)",
"basis": "rule"
},
"beat_spy": {
"yes_no": 0.447
}
},
"context": {
"symbol": "EFA",
"as_of": "2026-10-30"
}
}FX trader · example 17
European ADRs NVO and ASML: earnings and trend
Two large European companies listed in the US: last quarter's results, dividend record and trend.
- State2 symbols
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"NVO"} then ASML, one request each. The server fills in the latest completed session.
Questions
beat | English → rule | Did the stock beat EPS estimates last quarter? |
rev_g | English → rule | Did revenue grow more than 5% year over year? |
pays | English → rule | Does the stock pay a dividend? |
trend | rule | C > sma(C, 50)Above the 50-day average |
drop10 | forecast | Will it drop at least 10% at some point in the next month? A 10% drawdown within a month |
Answers
| Symbol | beatrule | rev_grule | paysrule | trendrule | drop10forecast |
|---|---|---|---|---|---|
NVO | 0.8591 | 0.0537 | 0.8591 | 0.2543 | 0.502 |
ASML | 0.8591 | 0.50 | 0.8591 | 0.0764 | 0.624 |
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: Did the stock beat EPS estimates last quarter: true for NVO, ASML of 2. Did revenue grow more than 5% year over year: true for none of 2. Does the stock pay a dividend: true for NVO, ASML of 2. Above the 50-day average: true for none of 2. Highest odds for “A 10% drawdown within a month”: ASML at 62%.
Facts from earnings and dividends sit next to the trend rule; a strong report with a broken trend is worth a closer look.
Request JSON (NVO; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "NVO"
},
"questions": {
"beat": {
"type": "yes_no",
"instructions": "Did the stock beat EPS estimates last quarter?"
},
"rev_g": {
"type": "yes_no",
"instructions": "Did revenue grow more than 5% year over year?"
},
"pays": {
"type": "yes_no",
"instructions": "Does the stock pay a dividend?"
},
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"drop10": {
"type": "yes_no",
"instructions": "Will it drop at least 10% at some point in the next month?"
}
}
}Response JSON (NVO, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"beat": {
"yes_no": 0.8591,
"rule": "beat_eps_last > 0.5",
"basis": "pattern"
},
"rev_g": {
"yes_no": 0.0537,
"rule": "revenue_growth_yoy > 5",
"basis": "pattern"
},
"pays": {
"yes_no": 0.8591,
"rule": "pays_dividend > 0.5",
"basis": "pattern"
},
"trend": {
"yes_no": 0.2543,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"drop10": {
"yes_no": 0.502
}
},
"context": {
"symbol": "NVO",
"as_of": "2026-10-30"
}
}FX trader · example 18
Is the dollar's slope turning?
Use a regression line, a weighted average and an exponential smoothing on UUP to spot a turn before the averages cross.
- StateUUP
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"UUP"} The server fills in the latest completed session.
Questions
slope | rule | linreg(C, 20) > ref(linreg(C, 20), -5)20-day regression line higher than a week ago |
wma | rule | wma(C, 10) > wma(C, 30)10-day WMA above the 30-day WMA |
smooth | rule | C > rec(C, self + 0.2 * (C - self))Close above its own smoothing (alpha 0.2) |
cross | rule | crossdown(ema(C, 10), ema(C, 30))10-day EMA crossed below the 30-day EMA today |
down_week | forecast | Will the stock be lower in a week? Lower in a week |
Answers
| Question | Answer | Reading |
|---|---|---|
slope20-day regression line higher than a week ago | 0.4493 | on the line (false) |
wma10-day WMA above the 30-day WMA | 0.6416 | true |
smoothClose above its own smoothing (alpha 0.2) | 0.4375 | on the line (false) |
cross10-day EMA crossed below the 30-day EMA today | 0.05 | false |
down_weekLower in a week | 0.479 | 48% · close to even |
What it means
For UUP on the session of 2026-10-30: True now: 10-day WMA above the 30-day WMA. Not true: 10-day EMA crossed below the 30-day EMA today. On the line: 20-day regression line higher than a week ago; Close above its own smoothing (alpha 0.2). Forecasts: Lower in a week 48%.
Slope rules turn before slow averages do; a falling regression line with a fresh EMA cross-down is an early sign the dollar trend is fading.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "UUP"
},
"questions": {
"slope": {
"type": "yes_no",
"ask": "linreg(C, 20) > ref(linreg(C, 20), -5)"
},
"wma": {
"type": "yes_no",
"ask": "wma(C, 10) > wma(C, 30)"
},
"smooth": {
"type": "yes_no",
"ask": "C > rec(C, self + 0.2 * (C - self))"
},
"cross": {
"type": "yes_no",
"ask": "crossdown(ema(C, 10), ema(C, 30))"
},
"down_week": {
"type": "yes_no",
"instructions": "Will the stock be lower in a week?"
}
}
}Response JSON (UUP, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"slope": {
"yes_no": 0.4493,
"rule": "linreg(C, 20) > ref(linreg(C, 20), -5)",
"basis": "rule"
},
"wma": {
"yes_no": 0.6416,
"rule": "wma(C, 10) > wma(C, 30)",
"basis": "rule"
},
"smooth": {
"yes_no": 0.4375,
"rule": "C > rec(C, self + 0.2 * (C - self))",
"basis": "rule"
},
"cross": {
"yes_no": 0.05,
"rule": "crossdown(ema(C, 10), ema(C, 30))",
"basis": "rule"
},
"down_week": {
"yes_no": 0.479
}
},
"context": {
"symbol": "UUP",
"as_of": "2026-10-30"
}
}FX trader · example 19
RIO and VALE: miners as a read on AUD and BRL
Australia's and Brazil's currencies track iron ore; so do RIO and VALE. Check trend, dividends and drawdown odds.
- State2 symbols
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"RIO"} then VALE, one request each. The server fills in the latest completed session.
Questions
trend | English → rule | Is the stock above its 200-day moving average? |
yield3 | rule | div_yield_ttm > 3Yield above 3% |
cut | English → rule | Did the stock cut its dividend last time? |
pullback | English → rule | Has the stock pulled back at least 5% from its 20-day high? |
drop5 | forecast | Will it drop at least 5% at some point in the next month? A 5% drawdown within a month |
Answers
| Symbol | trendrule | yield3rule | cutrule | pullbackrule | drop5forecast |
|---|---|---|---|---|---|
RIO | 0.0836 | 0.9463 | 0.8591 | 0.9379 | 0.538 |
VALE | 0.054 | 0.9463 | 0.8591 | 0.9451 | 0.589 |
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. Yield above 3%: true for RIO, VALE of 2. Did the stock cut its dividend last time: true for RIO, VALE of 2. Has the stock pulled back at least 5% from its 20-day high: true for RIO, VALE of 2. Highest odds for “A 5% drawdown within a month”: VALE at 59%.
Miner dividends follow commodity prices, so a cut is also a signal about the cycle behind the currency.
Request JSON (RIO; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "RIO"
},
"questions": {
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"yield3": {
"type": "yes_no",
"ask": "div_yield_ttm > 3"
},
"cut": {
"type": "yes_no",
"instructions": "Did the stock cut its dividend last time?"
},
"pullback": {
"type": "yes_no",
"instructions": "Has the stock pulled back at least 5% from its 20-day high?"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
}
}Response JSON (RIO, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.0836,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"yield3": {
"yes_no": 0.9463,
"rule": "div_yield_ttm > 3",
"basis": "rule"
},
"cut": {
"yes_no": 0.8591,
"rule": "cut_last > 0.5",
"basis": "pattern"
},
"pullback": {
"yes_no": 0.9379,
"rule": "C <= max(H, 20) * 0.95",
"basis": "pattern"
},
"drop5": {
"yes_no": 0.538
}
},
"context": {
"symbol": "RIO",
"as_of": "2026-10-30"
}
}FX trader · example 20
Is volatility rising across currencies?
When volatility rises in the dollar and EM at the same time, carry trades unwind. Check UUP and EEM together.
- State2 symbols
- Questions4 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"UUP"} then EEM, one request each. The server fills in the latest completed session.
Questions
vol5_20 | English → rule | Is 5-day volatility higher than 20-day volatility? |
atr_up | rule | atr(14) > 1.2 * ref(atr(14), -10)ATR up 20% in two weeks |
wide | rule | (H - L) > 2 * avg(H - L, 20)Range more than twice the 20-day average range |
vol_up | forecast | Will volatility be higher over the next month? Higher volatility next month |
Answers
| Symbol | vol5_20rule | atr_uprule | widerule | vol_upforecast | Fired |
|---|---|---|---|---|---|
UUP | 0.2148 | 0.0537 | 0.064 | 0.538 | none |
EEM | 0.8616 | 0.1307 | 0.0899 | 0.527 | none |
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.
vol5_20 >= 0.6 and atr_up >= 0.6→Slackfx-deskWhat it means
Session of 2026-10-30, 2 symbols: Is 5-day volatility higher than 20-day volatility: true for EEM of 2. ATR up 20% in two weeks: true for none of 2. Range more than twice the 20-day average range: true for none of 2. Highest odds for “Higher volatility next month”: UUP at 54%. vol_alert fired for none.
Volatility rules firing in both the dollar and EM at once is the carry-unwind picture; one alone is usually local.
Request JSON (UUP; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "UUP"
},
"questions": {
"vol5_20": {
"type": "yes_no",
"instructions": "Is 5-day volatility higher than 20-day volatility?"
},
"atr_up": {
"type": "yes_no",
"ask": "atr(14) > 1.2 * ref(atr(14), -10)"
},
"wide": {
"type": "yes_no",
"ask": "(H - L) > 2 * avg(H - L, 20)"
},
"vol_up": {
"type": "yes_no",
"instructions": "Will volatility be higher over the next month?"
}
},
"actions": [
{
"id": "vol_alert",
"when": "vol5_20 >= 0.6 and atr_up >= 0.6",
"do": "slack",
"connection": "fx-desk",
"message": "{{symbol}} ({{as_of}}): short-term volatility above 20-day and ATR expanding. Higher volatility next month {{vol_up|pct}}. Review carry positions."
}
],
"dry_run": true
}Response JSON (UUP, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"vol5_20": {
"yes_no": 0.2148,
"rule": "std(log(C / C[-1]), 5) * sqrt(5 / 4) > std(log(C / C[-1]), 20) * sqrt(20 / 19)",
"basis": "pattern"
},
"atr_up": {
"yes_no": 0.0537,
"rule": "atr(14) > 1.2 * ref(atr(14), -10)",
"basis": "rule"
},
"wide": {
"yes_no": 0.064,
"rule": "(H - L) > 2 * avg(H - L, 20)",
"basis": "rule"
},
"vol_up": {
"yes_no": 0.538
}
},
"context": {
"symbol": "UUP",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "vol_alert",
"fired": false,
"status": "skipped"
}
]
}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 Individuals: Retail investor, Active day trader, Swing trader, Options trader, Dividend investor, Long-term passive investor, Crypto trader, Commodities trader, Social trading community, Students and universities.