Docs / Get started
Get started
How ora-fin1 decides
One model name, three ways of answering. Which one answers a question depends on what you ask and what you send, and every answer tells you which it was.
- Forecasts ("Will it drop 5% next month?") are answered by the forecast model: a probability that the outcome happens.
- Facts about now ("Is it above its 200-day?", or a rule such as
C > sma(C, 200)) are evaluated exactly by the rule engine: a belief in how clearly it holds. - Text and records go to the text engine, which also answers choice and score.
Who answers what
| You send | Question | Answered by | The answer has |
|---|---|---|---|
{"symbol": "MSFT"} | A forecast in English | Forecast model, on the latest completed session | yes_no (a probability) |
{"symbol": "MSFT"} | "ask": "C > sma(C, 200)" | Rule engine, exactly as written | yes_no (a belief), rule, basis: "rule" |
{"symbol": "MSFT"} | A "what is true now" question in English | Compiled to a rule, then the rule engine | yes_no, rule, basis: "comparison" or "pattern", sometimes explain |
Your own numbers in state.context | A forecast | Forecast model, on your numbers | yes_no |
| Text or any other record | yes_no, choice or score | Text engine | See Question types |
All three on one symbol
One request on MSFT mixes two rules, an English "now" question and three forecasts:
{
"model": "ora-fin1",
"state": {
"symbol": "MSFT"
},
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 200)"
},
"pullback": {
"type": "yes_no",
"ask": "C < sma(C, 20)"
},
"oversold_en": {
"type": "yes_no",
"instructions": "Is RSI below 30?"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
},
"rally5": {
"type": "yes_no",
"instructions": "Will it rally at least 5% at some point in the next month?"
}
}
}
The real answer (session of 2026-10-30):
{
"model": "ora-fin1",
"answers": {
"trend": {
"type": "yes_no",
"yes_no": 0.9463,
"rule": "C > sma(C, 200)",
"basis": "rule"
},
"pullback": {
"type": "yes_no",
"yes_no": 0.7427,
"rule": "C < sma(C, 20)",
"basis": "rule"
},
"oversold_en": {
"type": "yes_no",
"yes_no": 0.0557,
"rule": "rsi(C, 14) < 30",
"basis": "comparison",
"explain": "rsi < 30"
},
"up_week": {
"type": "yes_no",
"yes_no": 0.574
},
"drop5": {
"type": "yes_no",
"yes_no": 0.422
},
"rally5": {
"type": "yes_no",
"yes_no": 0.495
}
},
"usage": {
"input_tokens": 445,
"output_tokens": 24
},
"context": {
"source": "server",
"symbol": "MSFT",
"as_of": "2026-10-30"
},
"version": "ora-fin-0.1.1"
}
trend and pullback carry the rules they ran. oversold_en was compiled to rsi(C, 14) < 30. up_week, drop5 and rally5 have no rule: they are forecasts.
Probabilities and beliefs
| A forecast probability | The model's estimate that the outcome will happen, learned from history. drop5 at 0.422 says a 5% drawdown within a month is less likely than not, for this session's numbers. Compare it with how often that outcome usually happens (Choosing thresholds). |
|---|---|
| A rule belief | Not a chance of anything: the fact is already settled. It says how far past the line the reading is, on this symbol's own scale. trend at 0.9463 reads as "clearly above the 200-day". See Operators and beliefs. |
Both are numbers from 0 to 1 under the names you chose, so a decision can use both: trend >= 0.6 and drop5 < 0.5.
Ask by symbol
With only {"symbol": …}, the server fills in the latest completed session for about 2,000 liquid US stocks and ETFs: returns, volatility, distance from highs and moving averages, volume and earnings timing for the forecast model, and the daily price history for the rule engine. context.as_of in the response names the session. See Ask by symbol.
What it is not
- Not a chat model: it does not write text.
- Not advice: answers are model output for information, not recommendations.
- Not a broker: actions deliver to your systems; you decide what happens next.
Information, not investment advice. Beliefs and probabilities on this page are real responses for the session shown and change with every session.