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 · Individuals

Long-term passive investor: 20 ways to use Ora

Index funds and a few core holdings: rebalancing triggers, drawdowns and staying the course. Each example is a complete, runnable request with the real answers it returned (43 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 (15)

sma 17offset 12max 11log 4sqrt 4std 4ref 3rsi 3roc 2atr 2bblower 1bbupper 1ema 1highest 1linreg 1

Examples 11–20 of 20 · page 2 of 2

Long-term passive investor · example 11

Small-cap sleeve: IWM, IJR, VB trend and drawdown

Small caps lag and lead in cycles; check them as a group.

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

State

{"symbol":"IWM"} then IJR, VB, one request each. The server fills in the latest completed session.

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
drawdownruleC < 0.8 * max(H, 252)
More than 20% off the 52-week high
goldenrulesma(C, 50) > sma(C, 200)
50-day above the 200-day
rally5forecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month

Answers

Symboltrendruledrawdownrulegoldenrulerally5forecast
IWM0.55640.05370.83180.285
IJR0.78560.05370.86440.248
VB0.74810.05370.89510.262

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: Is the stock above its 200-day moving average: true for IJR, VB of 3. More than 20% off the 52-week high: true for none of 3. 50-day above the 200-day: true for IWM, IJR, VB of 3. Highest odds for “A 5% rally within a month”: IWM at 28%.

Below trend with a drawdown, the sleeve is under target and gets topped up at the rebalance.

Request JSON (IWM; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "IWM"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "drawdown": {
      "type": "yes_no",
      "ask": "C < 0.8 * max(H, 252)"
    },
    "golden": {
      "type": "yes_no",
      "ask": "sma(C, 50) > sma(C, 200)"
    },
    "rally5": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    }
  }
}
Response JSON (IWM, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.5564,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "drawdown": {
      "yes_no": 0.0537,
      "rule": "C < 0.8 * max(H, 252)",
      "basis": "rule"
    },
    "golden": {
      "yes_no": 0.8318,
      "rule": "sma(C, 50) > sma(C, 200)",
      "basis": "rule"
    },
    "rally5": {
      "yes_no": 0.285
    }
  },
  "context": {
    "symbol": "IWM",
    "as_of": "2026-10-30"
  }
}

max sma

Long-term passive investor · example 12

Factor ETFs: QUAL, MTUM, VLUE, USMV

Which factor sleeves are in trend this quarter.

ora-fin-0.1.14 symbols, one request each4 questions
  1. State4 symbols
  2. Questions4 asked
  3. Answersreal, captured
  4. Actionsnone

State

{"symbol":"QUAL"} then MTUM, VLUE, USMV, one request each. The server fills in the latest completed session.

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
rocruleroc(C, 20) > 5
Up more than 5% in 20 sessions
drawdownruleC < 0.8 * max(H, 252)
More than 20% off the 52-week high
beat_spyforecastWill it beat SPY over the next month?
Beating SPY over a month

Answers

Symboltrendrulerocruledrawdownrulebeat_spyforecast
QUAL0.94630.05540.05370.495
MTUM0.26910.05370.16790.486
VLUE0.92910.0580.05370.512
USMV0.94630.45680.05370.427

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

What it means

Session of 2026-10-30, 4 symbols: Is the stock above its 200-day moving average: true for QUAL, VLUE, USMV of 4. Up more than 5% in 20 sessions: true for none of 4. More than 20% off the 52-week high: true for none of 4. Highest odds for “Beating SPY over a month”: VLUE at 51%.

The passive investor keeps fixed factor weights; the read only explains the quarter's performance.

Request JSON (QUAL; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "QUAL"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "roc": {
      "type": "yes_no",
      "ask": "roc(C, 20) > 5"
    },
    "drawdown": {
      "type": "yes_no",
      "ask": "C < 0.8 * max(H, 252)"
    },
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it beat SPY over the next month?"
    }
  }
}
Response JSON (QUAL, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.9463,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "roc": {
      "yes_no": 0.0554,
      "rule": "roc(C, 20) > 5",
      "basis": "rule"
    },
    "drawdown": {
      "yes_no": 0.0537,
      "rule": "C < 0.8 * max(H, 252)",
      "basis": "rule"
    },
    "beat_spy": {
      "yes_no": 0.495
    }
  },
  "context": {
    "symbol": "QUAL",
    "as_of": "2026-10-30"
  }
}

max roc sma

Long-term passive investor · example 13

Gold as a diversifier: GLD trend

Is the gold sleeve doing its job?

ora-fin-0.1.1GLD4 questions1 action
  1. StateGLD
  2. Questions4 asked
  3. Answersreal, captured
  4. Actions1 rule · dry run

State

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

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
new_highEnglish → ruleDid the stock make a new 52-week high today?
extEnglish → ruleIs the stock more than 10% above its 200-day moving average?
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
trend
Is the stock above its 200-day moving average
compiled to C > sma(C, 200)
0.0537false
new_high
Did the stock make a new 52-week high today
compiled to H > highest(H, 252)
0.0537false
ext
Is the stock more than 10% above its 200-day moving average
compiled to C > sma(C, 200) * 1.1
0.0537false
up_week
Higher in a week
0.56657% · close to even

Actions

Rules on the answers decide what to send.

ext >= 0.6→Slackfamily-finance
What each action would send 0 of 1 fired · dry run, nothing sent
trim_goldrule false: skipped

What it means

For GLD on the session of 2026-10-30: Not true: Is the stock above its 200-day moving average; Did the stock make a new 52-week high today; Is the stock more than 10% above its 200-day moving average. Forecasts: Higher in a week 57%. No action fired: every rule was false.

Gold far above its 200-day has grown beyond its target weight; trimming it back is the rebalance.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "GLD"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "new_high": {
      "type": "yes_no",
      "instructions": "Did the stock make a new 52-week high today?"
    },
    "ext": {
      "type": "yes_no",
      "instructions": "Is the stock more than 10% above its 200-day moving average?"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  },
  "actions": [
    {
      "id": "trim_gold",
      "when": "ext >= 0.6",
      "do": "slack",
      "connection": "family-finance",
      "message": "{{symbol}} ({{as_of}}) is more than 10% above its 200-day ({{ext|pct}}); the gold sleeve may be over target."
    }
  ],
  "dry_run": true
}
Response JSON (GLD, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.0537,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "new_high": {
      "yes_no": 0.0537,
      "rule": "H > highest(H, 252)",
      "basis": "pattern"
    },
    "ext": {
      "yes_no": 0.0537,
      "rule": "C > sma(C, 200) * 1.1",
      "basis": "comparison"
    },
    "up_week": {
      "yes_no": 0.566
    }
  },
  "context": {
    "symbol": "GLD",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "trim_gold",
      "fired": false,
      "status": "skipped"
    }
  ]
}

highest sma

Long-term passive investor · example 14

Friday contribution check for a three-fund plan

On contribution days, check each fund and post one note so purchases follow the plan.

ora-fin-0.1.13 symbols, one request each4 questions1 actionworkflow · Fri at 12:00 ET
  1. ScheduleFri at 12:00 ET
  2. State3 symbols
  3. Questions4 asked
  4. Answersreal, captured
  5. Actions1 rule · dry run

State

{"symbol":"VTI"} then VXUS, BND, one request each. The server fills in the latest completed session.

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
drawdownruleC < 0.8 * max(H, 252)
More than 20% off the 52-week high
rsi_obrulersi(C, 14) > 70
RSI above 70
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

Symboltrendruledrawdownrulersi_obruledrop5forecastFired
VTI0.94150.05370.05370.187none
VXUS0.32550.05370.05370.233none
BND0.20130.05370.27260.007none

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 rsi_ob >= 0.6→Slackfamily-finance
VTI 0 of 1 fired · dry run, nothing sent
VXUS 0 of 1 fired · dry run, nothing sent
BND 0 of 1 fired · dry run, nothing sent

What it means

Session of 2026-10-30, 3 symbols: Is the stock above its 200-day moving average: true for VTI of 3. More than 20% off the 52-week high: true for none of 3. RSI above 70: true for none of 3. Highest odds for “A 5% drawdown within a month”: VXUS at 23%. note fired for none.

Every fund gets bought on schedule; the note only says which one is furthest below its high.

As a scheduled workflow (Fri at 12:00 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": "Friday contribution check for a three-fund plan",
  "symbols": "VTI VXUS BND",
  "days": [
    5
  ],
  "at_time": "12:00",
  "model": "ora-fin-0.1.1",
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "drawdown": {
      "type": "yes_no",
      "ask": "C < 0.8 * max(H, 252)"
    },
    "rsi_ob": {
      "type": "yes_no",
      "ask": "rsi(C, 14) > 70"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "note",
      "when": "drawdown >= 0.6 or rsi_ob >= 0.6",
      "do": "slack",
      "connection": "family-finance",
      "message": "{{symbol}} ({{as_of}}): 20% drawdown {{drawdown|pct}}, overbought {{rsi_ob|pct}}. Contribution goes in as planned."
    }
  ]
}
Request JSON (VTI; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "VTI"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "drawdown": {
      "type": "yes_no",
      "ask": "C < 0.8 * max(H, 252)"
    },
    "rsi_ob": {
      "type": "yes_no",
      "ask": "rsi(C, 14) > 70"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "note",
      "when": "drawdown >= 0.6 or rsi_ob >= 0.6",
      "do": "slack",
      "connection": "family-finance",
      "message": "{{symbol}} ({{as_of}}): 20% drawdown {{drawdown|pct}}, overbought {{rsi_ob|pct}}. Contribution goes in as planned."
    }
  ],
  "dry_run": true
}
Response JSON (VTI, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.9415,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "drawdown": {
      "yes_no": 0.0537,
      "rule": "C < 0.8 * max(H, 252)",
      "basis": "rule"
    },
    "rsi_ob": {
      "yes_no": 0.0537,
      "rule": "rsi(C, 14) > 70",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.187
    }
  },
  "context": {
    "symbol": "VTI",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "note",
      "fired": false,
      "status": "skipped"
    }
  ]
}

max rsi sma

Long-term passive investor · example 15

Cash-like funds: SGOV and BIL steady

The emergency fund sits in Treasury bills; confirm they are behaving like cash.

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

State

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

Questions

calmEnglish → ruleIs 20-day historical volatility below 20%?
up_yearruleC > C[-252]
Higher than a year ago
atr_lowEnglish → ruleIs the 14-day ATR less than 2% of the price?
down_weekforecastWill the stock be lower in a week?
Lower in a week

Answers

Symbolcalmruleup_yearruleatr_lowruledown_weekforecast
SGOV0.94630.94630.94630.513
BIL0.94630.94630.94630.533

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 20-day historical volatility below 20%: true for SGOV, BIL of 2. Higher than a year ago: true for SGOV, BIL of 2. Is the 14-day ATR less than 2% of the price: true for SGOV, BIL of 2. Highest odds for “Lower in a week”: BIL at 53%.

Calm, rising bill funds are cash doing its job; anything else is worth a look at what the fund holds.

Request JSON (SGOV; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "SGOV"
  },
  "questions": {
    "calm": {
      "type": "yes_no",
      "instructions": "Is 20-day historical volatility below 20%?"
    },
    "up_year": {
      "type": "yes_no",
      "ask": "C > C[-252]"
    },
    "atr_low": {
      "type": "yes_no",
      "instructions": "Is the 14-day ATR less than 2% of the price?"
    },
    "down_week": {
      "type": "yes_no",
      "instructions": "Will the stock be lower in a week?"
    }
  }
}
Response JSON (SGOV, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "calm": {
      "yes_no": 0.9463,
      "rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2",
      "basis": "pattern"
    },
    "up_year": {
      "yes_no": 0.9463,
      "rule": "C > C[-252]",
      "basis": "rule"
    },
    "atr_low": {
      "yes_no": 0.9463,
      "rule": "atr(14) / C < 0.02",
      "basis": "pattern"
    },
    "down_week": {
      "yes_no": 0.513
    }
  },
  "context": {
    "symbol": "SGOV",
    "as_of": "2026-10-30"
  }
}

atr log offset sqrt std

Long-term passive investor · example 16

Long-term signal: golden cross on VTI

A slow signal for a slow investor: the 50-day over the 200-day.

ora-fin-0.1.1VTI5 questions
  1. StateVTI
  2. Questions5 asked
  3. Answersreal, captured
  4. Actionsnone

State

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

Questions

goldenrulesma(C, 50) > sma(C, 200)
50-day above the 200-day
crossEnglish → ruleDid a golden cross happen today?
sma200rulesma(C, 200) > ref(sma(C, 200), -20)
The 200-day average is rising
linregrulelinreg(C, 100) > ref(linreg(C, 100), -20)
100-day regression line rising over a month
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
golden
50-day above the 200-day
0.9463true
cross
Did a golden cross happen today
compiled to (sma(C, 50) > sma(C, 200)) and (ref(sma(C, 50), -1) <= ref(sma(C, 200), -1))
0.0537false
sma200
The 200-day average is rising
0.9463true
linreg
100-day regression line rising over a month
0.7637true
drop5
A 5% drawdown within a month
0.18719% · unlikely

What it means

For VTI on the session of 2026-10-30: True now: 50-day above the 200-day; The 200-day average is rising; 100-day regression line rising over a month. Not true: Did a golden cross happen today. Forecasts: A 5% drawdown within a month 19%.

A golden alignment with a rising 200-day confirms the long trend; it changes nothing in a fixed plan.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "VTI"
  },
  "questions": {
    "golden": {
      "type": "yes_no",
      "ask": "sma(C, 50) > sma(C, 200)"
    },
    "cross": {
      "type": "yes_no",
      "instructions": "Did a golden cross happen today?"
    },
    "sma200": {
      "type": "yes_no",
      "ask": "sma(C, 200) > ref(sma(C, 200), -20)"
    },
    "linreg": {
      "type": "yes_no",
      "ask": "linreg(C, 100) > ref(linreg(C, 100), -20)"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  }
}
Response JSON (VTI, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "golden": {
      "yes_no": 0.9463,
      "rule": "sma(C, 50) > sma(C, 200)",
      "basis": "rule"
    },
    "cross": {
      "yes_no": 0.0537,
      "rule": "(sma(C, 50) > sma(C, 200)) and (ref(sma(C, 50), -1) <= ref(sma(C, 200), -1))",
      "basis": "pattern"
    },
    "sma200": {
      "yes_no": 0.9463,
      "rule": "sma(C, 200) > ref(sma(C, 200), -20)",
      "basis": "rule"
    },
    "linreg": {
      "yes_no": 0.7637,
      "rule": "linreg(C, 100) > ref(linreg(C, 100), -20)",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.187
    }
  },
  "context": {
    "symbol": "VTI",
    "as_of": "2026-10-30"
  }
}

linreg ref sma

Long-term passive investor · example 17

Dollar strength and international funds: UUP and VXUS

A rising dollar weighs on unhedged international returns; check both.

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

State

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

Questions

trendruleC > sma(C, 50)
Above the 50-day average
three_mruleC > C[-63]
Higher than three months ago
rsi50rulersi(C, 14) > 50
RSI above 50
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

Symboltrendrulethree_mrulersi50ruleup_weekforecast
UUP0.87250.94630.76350.561
VXUS0.08510.09580.09260.587

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 UUP of 2. Higher than three months ago: true for UUP of 2. RSI above 50: true for UUP of 2. Highest odds for “Higher in a week”: VXUS at 59%.

A strong dollar explains weak international returns; the investor keeps the allocation and rebalances.

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)"
    },
    "three_m": {
      "type": "yes_no",
      "ask": "C > C[-63]"
    },
    "rsi50": {
      "type": "yes_no",
      "ask": "rsi(C, 14) > 50"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}
Response JSON (UUP, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.8725,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "three_m": {
      "yes_no": 0.9463,
      "rule": "C > C[-63]",
      "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"
  }
}

offset rsi sma

Long-term passive investor · example 18

Municipal bond sleeve: MUB and VTEB

Tax-free bond funds: calm, trending and not in a drawdown.

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

State

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

Questions

trendruleC > sma(C, 50)
Above the 50-day average
hvEnglish → ruleIs 20-day historical volatility below 20%?
drawdownruleC < 0.95 * max(H, 252)
More than 5% below its 52-week high
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

Symboltrendrulehvruledrawdownruleup_weekforecast
MUB0.86660.94630.08850.588
VTEB0.87830.94630.10030.561

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 MUB, VTEB of 2. Is 20-day historical volatility below 20%: true for MUB, VTEB of 2. More than 5% below its 52-week high: true for none of 2. Highest odds for “Higher in a week”: MUB at 59%.

Calm munis need nothing; a five percent drawdown is unusual for this sleeve and worth understanding.

Request JSON (MUB; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "MUB"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "hv": {
      "type": "yes_no",
      "instructions": "Is 20-day historical volatility below 20%?"
    },
    "drawdown": {
      "type": "yes_no",
      "ask": "C < 0.95 * max(H, 252)"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}
Response JSON (MUB, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.8666,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "hv": {
      "yes_no": 0.9463,
      "rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2",
      "basis": "pattern"
    },
    "drawdown": {
      "yes_no": 0.0885,
      "rule": "C < 0.95 * max(H, 252)",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.588
    }
  },
  "context": {
    "symbol": "MUB",
    "as_of": "2026-10-30"
  }
}

log max offset sma sqrt std

Long-term passive investor · example 19

Annual portfolio review note to the family (Teams)

Once a year, post a one-line state of each core fund to the family channel.

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

State

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

Questions

yearruleC > C[-252]
Higher than a year ago
trendEnglish → ruleIs the stock above its 200-day moving average?
drawdownruleC < 0.8 * max(H, 252)
More than 20% off the 52-week high
beat_spyforecastWill it beat SPY over the next month?
Beating SPY over a month

Answers

Symbolyearruletrendruledrawdownrulebeat_spyforecastFired
VOO0.94630.94630.05370.512teams
BND0.29860.20130.05370.279teams

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.

year >= 0→Webhookfamily-teams
VOO 1 of 1 fired · dry run, nothing sent
teamswould send (dry run)Webhook → family-teams
{
  "text": "VOO (2026-10-30): higher than a year ago 95%, above the 200-day 95%, in a 20% drawdown 5%."
}
BND 1 of 1 fired · dry run, nothing sent
teamswould send (dry run)Webhook → family-teams
{
  "text": "BND (2026-10-30): higher than a year ago 30%, above the 200-day 20%, in a 20% drawdown 5%."
}

What it means

Session of 2026-10-30, 2 symbols: Higher than a year ago: true for VOO of 2. Is the stock above its 200-day moving average: true for VOO of 2. More than 20% off the 52-week high: true for none of 2. Highest odds for “Beating SPY over a month”: VOO at 51%. teams fired for VOO, BND.

The note is a record, not a trade signal.

Request JSON (VOO; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "VOO"
  },
  "questions": {
    "year": {
      "type": "yes_no",
      "ask": "C > C[-252]"
    },
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "drawdown": {
      "type": "yes_no",
      "ask": "C < 0.8 * max(H, 252)"
    },
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it beat SPY over the next month?"
    }
  },
  "actions": [
    {
      "id": "teams",
      "when": "year >= 0",
      "do": "webhook",
      "connection": "family-teams",
      "body": {
        "text": "{{symbol}} ({{as_of}}): higher than a year ago {{year|pct}}, above the 200-day {{trend|pct}}, in a 20% drawdown {{drawdown|pct}}."
      }
    }
  ],
  "dry_run": true
}
Response JSON (VOO, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "year": {
      "yes_no": 0.9463,
      "rule": "C > C[-252]",
      "basis": "rule"
    },
    "trend": {
      "yes_no": 0.9463,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "drawdown": {
      "yes_no": 0.0537,
      "rule": "C < 0.8 * max(H, 252)",
      "basis": "rule"
    },
    "beat_spy": {
      "yes_no": 0.512
    }
  },
  "context": {
    "symbol": "VOO",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "teams",
      "fired": true,
      "status": "dry_run",
      "do": "webhook",
      "connection": "family-teams",
      "preview": {
        "body": {
          "text": "VOO (2026-10-30): higher than a year ago 95%, above the 200-day 95%, in a 20% drawdown 5%."
        }
      }
    }
  ]
}

max offset sma

Long-term passive investor · example 20

Is the index too concentrated in tech: XLK vs SPY

When technology runs far ahead, a cap-weighted index concentrates; check it.

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

State

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

Questions

extEnglish → ruleIs the stock more than 10% above its 200-day moving average?
three_mruleC > C[-63]
Higher than three months ago
near_highruleC >= 0.98 * max(H, 252)
Within 2% of the 52-week high
beat_spyforecastWill it beat SPY over the next month?
Beating SPY over a month

Answers

Symbolextrulethree_mrulenear_highrulebeat_spyforecast
XLK0.12610.61050.05370.498
SPY0.05370.38090.08340.514

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 more than 10% above its 200-day moving average: true for none of 2. Higher than three months ago: true for XLK of 2. Within 2% of the 52-week high: true for none of 2. Highest odds for “Beating SPY over a month”: SPY at 51%.

Tech far above its average shows concentration risk; a passive investor may add an equal-weight sleeve rather than trade.

Request JSON (XLK; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "XLK"
  },
  "questions": {
    "ext": {
      "type": "yes_no",
      "instructions": "Is the stock more than 10% above its 200-day moving average?"
    },
    "three_m": {
      "type": "yes_no",
      "ask": "C > C[-63]"
    },
    "near_high": {
      "type": "yes_no",
      "ask": "C >= 0.98 * max(H, 252)"
    },
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it beat SPY over the next month?"
    }
  }
}
Response JSON (XLK, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "ext": {
      "yes_no": 0.1261,
      "rule": "C > sma(C, 200) * 1.1",
      "basis": "comparison"
    },
    "three_m": {
      "yes_no": 0.6105,
      "rule": "C > C[-63]",
      "basis": "rule"
    },
    "near_high": {
      "yes_no": 0.0537,
      "rule": "C >= 0.98 * max(H, 252)",
      "basis": "rule"
    },
    "beat_spy": {
      "yes_no": 0.498
    }
  },
  "context": {
    "symbol": "XLK",
    "as_of": "2026-10-30"
  }
}

max offset sma

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, Crypto trader, FX trader, Commodities trader, Social trading community, Students and universities.

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