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 · Buy side

Hedge fund PM: 20 ways to use Ora

Long/short books: catalysts, crowding, stops and gross/net decisions every morning. 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 (58)

sma 9offset 8ref 5atr 4avg 3lowest 3swinglow 3days_to_earnings 3roc 3log 2sqrt 2std 2macd 2swinghigh 2abs 2last_earnings_move 2ema 2rsi 2highest 2beat_eps_last 2beat_revenue_last 2percentrank 2days_to_ex_div 2tr 2macdsignal 1three_black_crows 1beat_streak 1eps_surprise_pct 1linreg 1engulfing_bear 1evening_star 1shooting_star 1days_since_earnings 1last_earnings_gap 1pre_earnings_close 1revenue_surprise_pct 1max 1dark_cloud 1next_report_bmo 1atr_pct 1three_white_soldiers 1adx 1highestbars 1div_yield_ttm 1next_div_amount 1hammer 1piercing_line 1stochk 1willr 1obv 1sign 1sum 1crossdown 1zscore 1days_since_split 1days_to_split 1last_split_ratio 1splits_5y 1

Examples 1–10 of 20 · page 1 of 2

Hedge fund PM · example 1

Morning gross/net read from SPY and QQQ

Before the open, decide whether to run the book with more or less net exposure from trend, volatility and drawdown odds.

ora-fin-0.1.12 symbols, one request each6 questions2 actionsworkflow · Mon–Fri at 08:15 ET
  1. ScheduleMon–Fri at 08:15 ET
  2. State2 symbols
  3. Questions6 asked
  4. Answersreal, captured
  5. Actions2 rules · dry run

State

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

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
above_50druleC > sma(C, 50)
Above the 50-day average
hvrulestd(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?
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

Symboltrendruleabove_50drulehvrulevol5ruledrop5forecastvol_upforecastFired
SPY0.94510.11280.05370.88720.2030.69cut_net
QQQ0.79870.06530.05370.90690.4430.523cut_net

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.

drop5 >= 0.5 or (above_50d < 0.4 and vol5 >= 0.6)→Slackpm-desk
else→Slackpm-desk
SPY 1 of 2 fired · dry run, nothing sent
cut_netwould send (dry run)Slack → pm-desk
{
  "text": "SPY (2026-10-30): cut net. Under the 50-day 11%, short-term vol rising 89%, 5% drawdown odds 20%."
}
hold_netrule false: skipped
QQQ 1 of 2 fired · dry run, nothing sent
cut_netwould send (dry run)Slack → pm-desk
{
  "text": "QQQ (2026-10-30): cut net. Under the 50-day 7%, short-term vol rising 91%, 5% drawdown odds 44%."
}
hold_netrule false: skipped

What it means

Session of 2026-10-30, 2 symbols: Is the stock above its 200-day moving average: true for SPY, QQQ of 2. Above the 50-day average: true for none of 2. Annualized 20-day volatility above 40%: true for none of 2. Is 5-day volatility higher than 20-day volatility: true for SPY, QQQ of 2. Highest odds for “A 5% drawdown within a month”: QQQ at 44%. cut_net fired for SPY, QQQ. hold_net fired for none.

The desk gets a cut or keep line per index each morning; the PM still sizes the change, the rule only frames it.

As a scheduled workflow (Mon–Fri at 08:15 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": "Morning gross/net read from SPY and QQQ",
  "symbols": "SPY QQQ",
  "days": [
    1,
    2,
    3,
    4,
    5
  ],
  "at_time": "08:15",
  "model": "ora-fin-0.1.1",
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "above_50d": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "hv": {
      "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?"
    },
    "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?"
    }
  },
  "actions": [
    {
      "id": "cut_net",
      "when": "drop5 >= 0.5 or (above_50d < 0.4 and vol5 >= 0.6)",
      "do": "slack",
      "connection": "pm-desk",
      "message": "{{symbol}} ({{as_of}}): cut net. Under the 50-day {{above_50d|pct}}, short-term vol rising {{vol5|pct}}, 5% drawdown odds {{drop5|pct}}."
    },
    {
      "id": "hold_net",
      "when": "else",
      "do": "slack",
      "connection": "pm-desk",
      "message": "{{symbol}} ({{as_of}}): keep net. Above the 200-day {{trend|pct}}; higher vol next month {{vol_up|pct}}."
    }
  ]
}
Request JSON (SPY; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "SPY"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "above_50d": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "hv": {
      "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?"
    },
    "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?"
    }
  },
  "actions": [
    {
      "id": "cut_net",
      "when": "drop5 >= 0.5 or (above_50d < 0.4 and vol5 >= 0.6)",
      "do": "slack",
      "connection": "pm-desk",
      "message": "{{symbol}} ({{as_of}}): cut net. Under the 50-day {{above_50d|pct}}, short-term vol rising {{vol5|pct}}, 5% drawdown odds {{drop5|pct}}."
    },
    {
      "id": "hold_net",
      "when": "else",
      "do": "slack",
      "connection": "pm-desk",
      "message": "{{symbol}} ({{as_of}}): keep net. Above the 200-day {{trend|pct}}; higher vol next month {{vol_up|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (SPY, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.9451,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "above_50d": {
      "yes_no": 0.1128,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "hv": {
      "yes_no": 0.0537,
      "rule": "std(log(C / C[-1]), 20) * sqrt(252) > 0.4",
      "basis": "rule"
    },
    "vol5": {
      "yes_no": 0.8872,
      "rule": "std(log(C / C[-1]), 5) * sqrt(5 / 4) > std(log(C / C[-1]), 20) * sqrt(20 / 19)",
      "basis": "pattern"
    },
    "drop5": {
      "yes_no": 0.203
    },
    "vol_up": {
      "yes_no": 0.69
    }
  },
  "context": {
    "symbol": "SPY",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "cut_net",
      "fired": true,
      "status": "dry_run",
      "do": "slack",
      "connection": "pm-desk",
      "preview": {
        "text": "SPY (2026-10-30): cut net. Under the 50-day 11%, short-term vol rising 89%, 5% drawdown odds 20%."
      }
    },
    {
      "id": "hold_net",
      "fired": false,
      "status": "skipped"
    }
  ]
}

log offset sma sqrt std

Hedge fund PM · example 2

Short candidate: is INTC breaking down on volume?

Confirm a short thesis with structure: lower swing highs and lows, a breakdown on volume and weak momentum.

ora-fin-0.1.1INTC6 questions1 action
  1. StateINTC
  2. Questions6 asked
  3. Answersreal, captured
  4. Actions1 rule · dry run

State

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

Questions

lh_llEnglish → ruleIs the stock making lower swing highs and lower swing lows?
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
macd_dnrulemacd(C) < macdsignal(C)
MACD under its signal line
crowsrulethree_black_crows()
three black crows candle: Three red bars, each closing lower and opening inside the previous body.
drop10forecastWill it drop at least 10% at some point in the next month?
A 10% drawdown within a month

Answers

QuestionAnswerReading
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.1552false
breakdown
Closed under the 20-day low
0.9122true
down_vol
Down on heavy volume
0.9463true
macd_dn
MACD under its signal line
0.8659true
crows
three black crows candle: Three red bars, each closing lower and opening inside the previous body.
0.0537false
drop10
A 10% drawdown within a month
0.83684% · likely

Actions

Rules on the answers decide what to send.

breakdown >= 0.6 and down_vol >= 0.6→Webhookoms
What each action would send 1 of 1 fired · dry run, nothing sent
short_ticketwould send (dry run)Webhook → oms
{
  "side": "sell_short",
  "symbol": "INTC",
  "size_bps_nav": 25,
  "stop": "above_last_swing_high",
  "thesis": "breakdown_on_volume",
  "p_breakdown": 0.9122,
  "p_drop10": 0.836,
  "as_of": "2026-10-30"
}

What it means

For INTC on the session of 2026-10-30: True now: Closed under the 20-day low; Down on heavy volume; MACD under its signal line. Not true: Is the stock making lower swing highs and lower swing lows; three black crows candle: Three red bars, each closing lower and opening inside the previous body.. Forecasts: A 10% drawdown within a month 84%. Fired: short_ticket (Webhook → oms).

A staged short ticket goes to the OMS only when the breakdown and the volume both confirm; structure and momentum support the thesis but do not trigger it.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "INTC"
  },
  "questions": {
    "lh_ll": {
      "type": "yes_no",
      "instructions": "Is the stock making lower swing highs and lower swing lows?"
    },
    "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)"
    },
    "macd_dn": {
      "type": "yes_no",
      "ask": "macd(C) < macdsignal(C)"
    },
    "crows": {
      "type": "yes_no",
      "ask": "three_black_crows()"
    },
    "drop10": {
      "type": "yes_no",
      "instructions": "Will it drop at least 10% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "short_ticket",
      "when": "breakdown >= 0.6 and down_vol >= 0.6",
      "do": "webhook",
      "connection": "oms",
      "body": {
        "side": "sell_short",
        "symbol": "{{symbol}}",
        "size_bps_nav": 25,
        "stop": "above_last_swing_high",
        "thesis": "breakdown_on_volume",
        "p_breakdown": "{{breakdown}}",
        "p_drop10": "{{drop10}}",
        "as_of": "{{as_of}}"
      }
    }
  ],
  "dry_run": true
}
Response JSON (INTC, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "lh_ll": {
      "yes_no": 0.1552,
      "rule": "(swinghigh(5, 1) < swinghigh(5, 2)) and (swinglow(5, 1) < swinglow(5, 2))",
      "basis": "pattern"
    },
    "breakdown": {
      "yes_no": 0.9122,
      "rule": "C < lowest(L, 20)",
      "basis": "rule"
    },
    "down_vol": {
      "yes_no": 0.9463,
      "rule": "C < C[-1] and V > 1.5 * ref(avg(V, 20), -1)",
      "basis": "rule"
    },
    "macd_dn": {
      "yes_no": 0.8659,
      "rule": "macd(C) < macdsignal(C)",
      "basis": "rule"
    },
    "crows": {
      "yes_no": 0.0537,
      "rule": "three_black_crows()",
      "basis": "rule"
    },
    "drop10": {
      "yes_no": 0.836
    }
  },
  "context": {
    "symbol": "INTC",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "short_ticket",
      "fired": true,
      "status": "dry_run",
      "do": "webhook",
      "connection": "oms",
      "preview": {
        "body": {
          "side": "sell_short",
          "symbol": "INTC",
          "size_bps_nav": 25,
          "stop": "above_last_swing_high",
          "thesis": "breakdown_on_volume",
          "p_breakdown": 0.9122,
          "p_drop10": 0.836,
          "as_of": "2026-10-30"
        }
      }
    }
  ]
}

avg lowest macd macdsignal offset ref swinghigh swinglow three_black_crows

Hedge fund PM · example 3

Earnings catalyst: size NFLX into the print or not?

Decide whether to hold full size through the report using the beat record, the last reaction and the forecast.

ora-fin-0.1.1NFLX6 questions1 action
  1. StateNFLX
  2. Questions6 asked
  3. Answersreal, captured
  4. Actions1 rule · dry run

State

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

Questions

soonruledays_to_earnings <= 10
Reports earnings within 10 days
streakrulebeat_streak >= 4
Beat four quarters in a row
big_moveruleabs(last_earnings_move) > 5
Last earnings move bigger than 5%
surpriseruleeps_surprise_pct > 5
EPS beat by more than 5%
beat_nextforecastWill the stock beat earnings next quarter?
Beating earnings next quarter
big5forecastWill there be a big move in either direction in the next 5 days?
A big move either way in 5 days

Answers

QuestionAnswerReading
soon
Reports earnings within 10 days
0.0537false
streak
Beat four quarters in a row
0.55on the line (true)
big_move
Last earnings move bigger than 5%
0.9463true
surprise
EPS beat by more than 5%
0.6333true
beat_next
Beating earnings next quarter
0.49850% · close to even
big5
A big move either way in 5 days
0.32533% · unlikely

Actions

Rules on the answers decide what to send.

soon >= 0.6 and big_move >= 0.6→Slackpm-desk
What each action would send 0 of 1 fired · dry run, nothing sent
size_downrule false: skipped

What it means

For NFLX on the session of 2026-10-30: True now: Last earnings move bigger than 5%; EPS beat by more than 5%. Not true: Reports earnings within 10 days. On the line: Beat four quarters in a row. Forecasts: Beating earnings next quarter 50%; A big move either way in 5 days 33%. No action fired: every rule was false.

A history of big reactions makes the event a coin flip with fat tails; the beat forecast is odds, so sizing down is a risk choice, not a call.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "NFLX"
  },
  "questions": {
    "soon": {
      "type": "yes_no",
      "ask": "days_to_earnings <= 10"
    },
    "streak": {
      "type": "yes_no",
      "ask": "beat_streak >= 4"
    },
    "big_move": {
      "type": "yes_no",
      "ask": "abs(last_earnings_move) > 5"
    },
    "surprise": {
      "type": "yes_no",
      "ask": "eps_surprise_pct > 5"
    },
    "beat_next": {
      "type": "yes_no",
      "instructions": "Will the stock beat earnings next quarter?"
    },
    "big5": {
      "type": "yes_no",
      "instructions": "Will there be a big move in either direction in the next 5 days?"
    }
  },
  "actions": [
    {
      "id": "size_down",
      "when": "soon >= 0.6 and big_move >= 0.6",
      "do": "slack",
      "connection": "pm-desk",
      "message": "{{symbol}} reports within 10 days and the last reaction was over 5%. Halve size into the print unless the thesis is the print. Beat next {{beat_next|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (NFLX, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "soon": {
      "yes_no": 0.0537,
      "rule": "days_to_earnings <= 10",
      "basis": "rule"
    },
    "streak": {
      "yes_no": 0.55,
      "rule": "beat_streak >= 4",
      "basis": "rule"
    },
    "big_move": {
      "yes_no": 0.9463,
      "rule": "abs(last_earnings_move) > 5",
      "basis": "rule"
    },
    "surprise": {
      "yes_no": 0.6333,
      "rule": "eps_surprise_pct > 5",
      "basis": "rule"
    },
    "beat_next": {
      "yes_no": 0.498
    },
    "big5": {
      "yes_no": 0.325
    }
  },
  "context": {
    "symbol": "NFLX",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "size_down",
      "fired": false,
      "status": "skipped"
    }
  ]
}

abs beat_streak days_to_earnings eps_surprise_pct last_earnings_move

Hedge fund PM · example 4

Pair trade check: XOM vs CVX momentum

Same questions on both legs of an energy pair to see which side has the stronger trend and momentum.

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

State

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

Questions

rocruleroc(C, 20) > 0
Positive 20-day rate of change
rsi50rulersi(C, 14) > 50
RSI above 50
stackedruleC > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)
Stacked averages: close > 20 EMA > 50 > 200
linregrulelinreg(C, 50) > ref(linreg(C, 50), -10)
50-day regression line higher than 10 sessions ago
beat_spyforecastWill it beat SPY over the next month?
Beating SPY over a month

Answers

Symbolrocrulersi50rulestackedrulelinregrulebeat_spyforecast
XOM0.94630.9440.94360.93290.554
CVX0.94510.94380.94020.92760.564

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: Positive 20-day rate of change: true for XOM, CVX of 2. RSI above 50: true for XOM, CVX of 2. Stacked averages: close > 20 EMA > 50 > 200: true for XOM, CVX of 2. 50-day regression line higher than 10 sessions ago: true for XOM, CVX of 2. Highest odds for “Beating SPY over a month”: CVX at 56%.

Long the leg with more trend rules true and short the other; if both legs read the same, the pair has no edge today.

Request JSON (XOM; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "XOM"
  },
  "questions": {
    "roc": {
      "type": "yes_no",
      "ask": "roc(C, 20) > 0"
    },
    "rsi50": {
      "type": "yes_no",
      "ask": "rsi(C, 14) > 50"
    },
    "stacked": {
      "type": "yes_no",
      "ask": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)"
    },
    "linreg": {
      "type": "yes_no",
      "ask": "linreg(C, 50) > ref(linreg(C, 50), -10)"
    },
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it beat SPY over the next month?"
    }
  }
}
Response JSON (XOM, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "roc": {
      "yes_no": 0.9463,
      "rule": "roc(C, 20) > 0",
      "basis": "rule"
    },
    "rsi50": {
      "yes_no": 0.944,
      "rule": "rsi(C, 14) > 50",
      "basis": "rule"
    },
    "stacked": {
      "yes_no": 0.9436,
      "rule": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)",
      "basis": "rule"
    },
    "linreg": {
      "yes_no": 0.9329,
      "rule": "linreg(C, 50) > ref(linreg(C, 50), -10)",
      "basis": "rule"
    },
    "beat_spy": {
      "yes_no": 0.554
    }
  },
  "context": {
    "symbol": "XOM",
    "as_of": "2026-10-30"
  }
}

ema linreg ref roc rsi sma

Hedge fund PM · example 5

Crowded long unwind risk in NVDA, AMD and SMH

When everyone owns the same semis, check for stretch and topping candles that often come before an unwind.

ora-fin-0.1.13 symbols, one request each6 questions1 action
  1. State3 symbols
  2. Questions6 asked
  3. Answersreal, captured
  4. Actions1 rule · dry run

State

{"symbol":"NVDA"} then AMD, SMH, one request each. The server fills in the latest completed session.

Questions

stretchedruleC > sma(C, 20) + 2 * atr(14)
Stretched: more than 2 ATR above the 20-day
ext_200druleC > sma(C, 200) * 1.10
More than 10% above the 200-day
eveningruleevening_star()
evening star candle: A green bar, a small bar that stays above its close, then a red bar closing below the middle of the first.
engulf_bearruleengulfing_bear()
engulfing bear candle: A red body that engulfs yesterday's green body.
shootruleshooting_star() and H > highest(H, 20)
Shooting star at a 20-day high
drop10forecastWill it drop at least 10% at some point in the next month?
A 10% drawdown within a month

Answers

Symbolstretchedruleext_200druleeveningruleengulf_bearruleshootruledrop10forecastFired
NVDA0.05370.060.09750.09320.05370.523none
AMD0.0610.87010.12470.05370.05370.763none
SMH0.05470.09850.180.05530.05370.641none

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.

stretched >= 0.6 and (engulf_bear >= 0.6 or evening >= 0.6 or shoot >= 0.6)→Slackrisk-pm
NVDA 0 of 1 fired · dry run, nothing sent
AMD 0 of 1 fired · dry run, nothing sent
SMH 0 of 1 fired · dry run, nothing sent

What it means

Session of 2026-10-30, 3 symbols: Stretched: more than 2 ATR above the 20-day: true for none of 3. More than 10% above the 200-day: true for AMD of 3. evening star candle: A green bar, a small bar that stays above its close, then a red bar closing below the middle of the first.: true for none of 3. engulfing bear candle: A red body that engulfs yesterday's green body.: true for none of 3. Highest odds for “A 10% drawdown within a month”: AMD at 76%. unwind_watch fired for none.

Stretch alone is common in a bull run; stretch plus a topping candle is the combination that gets the desk's attention.

Request JSON (NVDA; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "NVDA"
  },
  "questions": {
    "stretched": {
      "type": "yes_no",
      "ask": "C > sma(C, 20) + 2 * atr(14)"
    },
    "ext_200d": {
      "type": "yes_no",
      "ask": "C > sma(C, 200) * 1.10"
    },
    "evening": {
      "type": "yes_no",
      "ask": "evening_star()"
    },
    "engulf_bear": {
      "type": "yes_no",
      "ask": "engulfing_bear()"
    },
    "shoot": {
      "type": "yes_no",
      "ask": "shooting_star() and H > highest(H, 20)"
    },
    "drop10": {
      "type": "yes_no",
      "instructions": "Will it drop at least 10% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "unwind_watch",
      "when": "stretched >= 0.6 and (engulf_bear >= 0.6 or evening >= 0.6 or shoot >= 0.6)",
      "do": "slack",
      "connection": "risk-pm",
      "message": "{{symbol}} ({{as_of}}): stretched with a topping candle. 10% drawdown odds {{drop10|pct}}. Review crowded long exposure."
    }
  ],
  "dry_run": true
}
Response JSON (NVDA, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "stretched": {
      "yes_no": 0.0537,
      "rule": "C > sma(C, 20) + 2 * atr(14)",
      "basis": "rule"
    },
    "ext_200d": {
      "yes_no": 0.06,
      "rule": "C > sma(C, 200) * 1.10",
      "basis": "rule"
    },
    "evening": {
      "yes_no": 0.0975,
      "rule": "evening_star()",
      "basis": "rule"
    },
    "engulf_bear": {
      "yes_no": 0.0932,
      "rule": "engulfing_bear()",
      "basis": "rule"
    },
    "shoot": {
      "yes_no": 0.0537,
      "rule": "shooting_star() and H > highest(H, 20)",
      "basis": "rule"
    },
    "drop10": {
      "yes_no": 0.523
    }
  },
  "context": {
    "symbol": "NVDA",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "unwind_watch",
      "fired": false,
      "status": "skipped"
    }
  ]
}

atr engulfing_bear evening_star highest shooting_star sma

Hedge fund PM · example 6

Stop discipline across the long book

After the close, check every long against a chandelier stop and send exits to the OMS for the trader to work.

ora-fin-0.1.16 symbols, one request each4 questions1 actionworkflow · Mon–Fri at 16:20 ET
  1. ScheduleMon–Fri at 16:20 ET
  2. State6 symbols
  3. Questions4 asked
  4. Answersreal, captured
  5. Actions1 rule · dry run

State

{"symbol":"AAPL"} then MSFT, AMZN, LLY, COST, JPM, one request each. The server fills in the latest completed session.

Questions

chandelierruleC < highest(H, 22) - 3 * atr(22)
Chandelier exit: 3 ATR under the 22-day high
swing2ruleC < swinglow(5, 2)
Closed below the second-to-last swing low
low_breakruleC < lowest(L, 20)
Closed under the 20-day low
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

Symbolchandelierruleswing2rulelow_breakruledrop5forecastFired
AAPL0.12920.11830.07440.365none
MSFT0.23320.12130.3650.422none
AMZN0.75940.67740.54180.462exit
LLY0.06440.05370.05370.583none
COST0.08810.06320.05530.319none
JPM0.1210.19920.10050.30none

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.

chandelier >= 0.6 or swing2 >= 0.6→Webhookoms
AAPL 0 of 1 fired · dry run, nothing sent
MSFT 0 of 1 fired · dry run, nothing sent
AMZN 1 of 1 fired · dry run, nothing sent
exitwould send (dry run)Webhook → oms
{
  "side": "sell",
  "symbol": "AMZN",
  "qty": "all",
  "reason": "stop",
  "p_chandelier": 0.7594,
  "p_swing2": 0.6774,
  "as_of": "2026-10-30"
}
LLY 0 of 1 fired · dry run, nothing sent
COST 0 of 1 fired · dry run, nothing sent
JPM 0 of 1 fired · dry run, nothing sent

What it means

Session of 2026-10-30, 6 symbols: Chandelier exit: 3 ATR under the 22-day high: true for AMZN of 6. Closed below the second-to-last swing low: true for AMZN of 6. Closed under the 20-day low: true for none of 6. Highest odds for “A 5% drawdown within a month”: LLY at 58%. exit fired for AMZN.

Stops are exact rules on the close, so exits are mechanical; the drawdown forecast is attached for the trader's context.

As a scheduled workflow (Mon–Fri at 16:20 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": "Stop discipline across the long book",
  "symbols": "AAPL MSFT AMZN LLY COST JPM",
  "days": [
    1,
    2,
    3,
    4,
    5
  ],
  "at_time": "16:20",
  "model": "ora-fin-0.1.1",
  "questions": {
    "chandelier": {
      "type": "yes_no",
      "ask": "C < highest(H, 22) - 3 * atr(22)"
    },
    "swing2": {
      "type": "yes_no",
      "ask": "C < swinglow(5, 2)"
    },
    "low_break": {
      "type": "yes_no",
      "ask": "C < lowest(L, 20)"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "exit",
      "when": "chandelier >= 0.6 or swing2 >= 0.6",
      "do": "webhook",
      "connection": "oms",
      "body": {
        "side": "sell",
        "symbol": "{{symbol}}",
        "qty": "all",
        "reason": "stop",
        "p_chandelier": "{{chandelier}}",
        "p_swing2": "{{swing2}}",
        "as_of": "{{as_of}}"
      }
    }
  ]
}
Request JSON (AAPL; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "AAPL"
  },
  "questions": {
    "chandelier": {
      "type": "yes_no",
      "ask": "C < highest(H, 22) - 3 * atr(22)"
    },
    "swing2": {
      "type": "yes_no",
      "ask": "C < swinglow(5, 2)"
    },
    "low_break": {
      "type": "yes_no",
      "ask": "C < lowest(L, 20)"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "exit",
      "when": "chandelier >= 0.6 or swing2 >= 0.6",
      "do": "webhook",
      "connection": "oms",
      "body": {
        "side": "sell",
        "symbol": "{{symbol}}",
        "qty": "all",
        "reason": "stop",
        "p_chandelier": "{{chandelier}}",
        "p_swing2": "{{swing2}}",
        "as_of": "{{as_of}}"
      }
    }
  ],
  "dry_run": true
}
Response JSON (AAPL, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "chandelier": {
      "yes_no": 0.1292,
      "rule": "C < highest(H, 22) - 3 * atr(22)",
      "basis": "rule"
    },
    "swing2": {
      "yes_no": 0.1183,
      "rule": "C < swinglow(5, 2)",
      "basis": "rule"
    },
    "low_break": {
      "yes_no": 0.0744,
      "rule": "C < lowest(L, 20)",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.365
    }
  },
  "context": {
    "symbol": "AAPL",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "exit",
      "fired": false,
      "status": "skipped"
    }
  ]
}

atr highest lowest swinglow

Hedge fund PM · example 7

Post-earnings drift long: did LLY beat, gap and hold?

Look for the drift setup after a report: beat on both lines, gap up, and still above the pre-report price.

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

State

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

Questions

driftrulebeat_eps_last > 0.5 and last_earnings_gap > 0 and C > pre_earnings_close
Post-earnings drift: beat, gapped up, still above the pre-earnings close
beat_bothrulebeat_eps_last > 0.5 and beat_revenue_last > 0.5
Beat on EPS and revenue last quarter
rev_surpriserulerevenue_surprise_pct > 2
Revenue beat estimates by more than 2%
recentruledays_since_earnings <= 5
Reported in the last 5 days
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
drift
Post-earnings drift: beat, gapped up, still above the pre-earnings close
0.8591true
beat_both
Beat on EPS and revenue last quarter
0.8591true
rev_surprise
Revenue beat estimates by more than 2%
0.9463true
recent
Reported in the last 5 days
0.8967true
up_week
Higher in a week
0.54254% · close to even

What it means

For LLY on the session of 2026-10-30: True now: Post-earnings drift: beat, gapped up, still above the pre-earnings close; Beat on EPS and revenue last quarter; Revenue beat estimates by more than 2%; Reported in the last 5 days. Forecasts: Higher in a week 54%.

The drift rule needs every leg at once; a beat without the hold above the pre-report close is not the setup.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "LLY"
  },
  "questions": {
    "drift": {
      "type": "yes_no",
      "ask": "beat_eps_last > 0.5 and last_earnings_gap > 0 and C > pre_earnings_close"
    },
    "beat_both": {
      "type": "yes_no",
      "ask": "beat_eps_last > 0.5 and beat_revenue_last > 0.5"
    },
    "rev_surprise": {
      "type": "yes_no",
      "ask": "revenue_surprise_pct > 2"
    },
    "recent": {
      "type": "yes_no",
      "ask": "days_since_earnings <= 5"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}
Response JSON (LLY, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "drift": {
      "yes_no": 0.8591,
      "rule": "beat_eps_last > 0.5 and last_earnings_gap > 0 and C > pre_earnings_close",
      "basis": "rule"
    },
    "beat_both": {
      "yes_no": 0.8591,
      "rule": "beat_eps_last > 0.5 and beat_revenue_last > 0.5",
      "basis": "rule"
    },
    "rev_surprise": {
      "yes_no": 0.9463,
      "rule": "revenue_surprise_pct > 2",
      "basis": "rule"
    },
    "recent": {
      "yes_no": 0.8967,
      "rule": "days_since_earnings <= 5",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.542
    }
  },
  "context": {
    "symbol": "LLY",
    "as_of": "2026-10-30"
  }
}

beat_eps_last beat_revenue_last days_since_earnings last_earnings_gap pre_earnings_close revenue_surprise_pct

Hedge fund PM · example 8

Factor tilt check: MTUM, QUAL, VLUE and USMV

See which factor ETFs are trending to understand what the market is paying for before adjusting book tilts.

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

State

{"symbol":"MTUM"} then QUAL, 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
near_highruleC >= 0.98 * max(H, 252)
Within 2% of the 52-week high
pctrankrulepercentrank(C, 252) > 80
Close in the top 20% of the past year
beat_spyforecastWill it beat SPY over the next month?
Beating SPY over a month

Answers

Symboltrendrulerocrulenear_highrulepctrankrulebeat_spyforecast
MTUM0.26910.05370.05370.06040.486
QUAL0.94630.05540.26050.68610.495
VLUE0.92910.0580.05810.10870.512
USMV0.94630.45680.82610.94590.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. Within 2% of the 52-week high: true for USMV of 4. Close in the top 20% of the past year: true for QUAL, USMV of 4. Highest odds for “Beating SPY over a month”: VLUE at 51%.

The factors near their highs with momentum are what the market rewards now; the book's tilts can be checked against that.

Request JSON (MTUM; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "MTUM"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "roc": {
      "type": "yes_no",
      "ask": "roc(C, 20) > 5"
    },
    "near_high": {
      "type": "yes_no",
      "ask": "C >= 0.98 * max(H, 252)"
    },
    "pctrank": {
      "type": "yes_no",
      "ask": "percentrank(C, 252) > 80"
    },
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it beat SPY over the next month?"
    }
  }
}
Response JSON (MTUM, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.2691,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "roc": {
      "yes_no": 0.0537,
      "rule": "roc(C, 20) > 5",
      "basis": "rule"
    },
    "near_high": {
      "yes_no": 0.0537,
      "rule": "C >= 0.98 * max(H, 252)",
      "basis": "rule"
    },
    "pctrank": {
      "yes_no": 0.0604,
      "rule": "percentrank(C, 252) > 80",
      "basis": "rule"
    },
    "beat_spy": {
      "yes_no": 0.486
    }
  },
  "context": {
    "symbol": "MTUM",
    "as_of": "2026-10-30"
  }
}

max percentrank roc sma

Hedge fund PM · example 9

Gap fade: did TSLA gap up and fail?

Spot a failed gap that traps late buyers, a short-term short setup.

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

State

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

Questions

fadedruleO > C[-1] and C < C[-1]
Gapped up but closed under yesterday's close
gap_fillEnglish → ruleDid today's gap up fill?
darkruledark_cloud()
dark cloud candle: After a green day, opens above its close and closes below the middle of its body (but above its open).
close_lowrule(C - L) / (H - L) < 0.25
Closed in the bottom quarter of the day's range
gap_downforecastWill it gap down tomorrow?
A gap down tomorrow
down_weekforecastWill the stock be lower in a week?
Lower in a week

Answers

QuestionAnswerReading
faded
Gapped up but closed under yesterday's close
0.0708false
gap_fill
Did today's gap up fill
compiled to (O > C[-1] * 1) and (L <= C[-1])
0.0708false
dark
dark cloud candle: After a green day, opens above its close and closes below the middle of its body (but above its open).
0.0708false
close_low
Closed in the bottom quarter of the day's range
0.0788false
gap_down
A gap down tomorrow
0.15716% · unlikely
down_week
Lower in a week
0.45546% · close to even

Actions

Rules on the answers decide what to send.

faded >= 0.6 and close_low >= 0.6→Webhookoms
else→Slackpm-desk
What each action would send 1 of 2 fired · dry run, nothing sent
faderule false: skipped
no_fadewould send (dry run)Slack → pm-desk
{
  "text": "TSLA (2026-10-30): no failed gap today (faded 7%)."
}

What it means

For TSLA on the session of 2026-10-30: Not true: Gapped up but closed under yesterday's close; Did today's gap up fill; dark cloud candle: After a green day, opens above its close and closes below the middle of its body (but above its open).; Closed in the bottom quarter of the day's range. Forecasts: A gap down tomorrow 16%; Lower in a week 46%. Fired: no_fade (Slack → pm-desk).

A gap that fades and closes near the low is the trap; the order only stages when both rules are true.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "TSLA"
  },
  "questions": {
    "faded": {
      "type": "yes_no",
      "ask": "O > C[-1] and C < C[-1]"
    },
    "gap_fill": {
      "type": "yes_no",
      "instructions": "Did today's gap up fill?"
    },
    "dark": {
      "type": "yes_no",
      "ask": "dark_cloud()"
    },
    "close_low": {
      "type": "yes_no",
      "ask": "(C - L) / (H - L) < 0.25"
    },
    "gap_down": {
      "type": "yes_no",
      "instructions": "Will it gap down tomorrow?"
    },
    "down_week": {
      "type": "yes_no",
      "instructions": "Will the stock be lower in a week?"
    }
  },
  "actions": [
    {
      "id": "fade",
      "when": "faded >= 0.6 and close_low >= 0.6",
      "do": "webhook",
      "connection": "oms",
      "body": {
        "side": "sell_short",
        "symbol": "{{symbol}}",
        "size_bps_nav": 10,
        "horizon": "1-3d",
        "p_faded": "{{faded}}",
        "p_close_low": "{{close_low}}",
        "as_of": "{{as_of}}"
      }
    },
    {
      "id": "no_fade",
      "when": "else",
      "do": "slack",
      "connection": "pm-desk",
      "message": "{{symbol}} ({{as_of}}): no failed gap today (faded {{faded|pct}})."
    }
  ],
  "dry_run": true
}
Response JSON (TSLA, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "faded": {
      "yes_no": 0.0708,
      "rule": "O > C[-1] and C < C[-1]",
      "basis": "rule"
    },
    "gap_fill": {
      "yes_no": 0.0708,
      "rule": "(O > C[-1] * 1) and (L <= C[-1])",
      "basis": "pattern"
    },
    "dark": {
      "yes_no": 0.0708,
      "rule": "dark_cloud()",
      "basis": "rule"
    },
    "close_low": {
      "yes_no": 0.0788,
      "rule": "(C - L) / (H - L) < 0.25",
      "basis": "rule"
    },
    "gap_down": {
      "yes_no": 0.157
    },
    "down_week": {
      "yes_no": 0.455
    }
  },
  "context": {
    "symbol": "TSLA",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "fade",
      "fired": false,
      "status": "skipped"
    },
    {
      "id": "no_fade",
      "fired": true,
      "status": "dry_run",
      "do": "slack",
      "connection": "pm-desk",
      "preview": {
        "text": "TSLA (2026-10-30): no failed gap today (faded 7%)."
      }
    }
  ]
}

dark_cloud offset

Hedge fund PM · example 10

Event calendar for the book: who reports or goes ex soon?

List the names with earnings or ex-dividend dates in the next two weeks so position sizes can be checked in advance.

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":"AAPL"} then JNJ, PG, NKE, ORCL, one request each. The server fills in the latest completed session.

Questions

earn14English → ruleIs earnings in the next 14 days?
ex30English → ruleIs the ex-dividend date within 30 days?
bmoEnglish → ruleDoes the stock report before the market opens next time?
big_moveruleabs(last_earnings_move) > 5
Last earnings move bigger than 5%

Answers

Symbolearn14ruleex30rulebmorulebig_moveruleFired
AAPL0.94630.05370.14090.9463calendar
JNJ0.05370.91870.85910.9463calendar
PG0.05370.05370.85910.9463none
NKE0.05370.05370.14090.2018none
ORCL0.05370.05370.14090.0537none

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.

earn14 >= 0.6 or ex30 >= 0.6→Emailpm-team
AAPL 1 of 1 fired · dry run, nothing sent
calendarwould send (dry run)Email → pm-team
{
  "subject": "Event soon: AAPL",
  "text": "AAPL (2026-10-30): earnings within 14 days 95% (before the open 14%), ex-dividend within 30 days 5%. Last reaction over 5%: 95%."
}
JNJ 1 of 1 fired · dry run, nothing sent
calendarwould send (dry run)Email → pm-team
{
  "subject": "Event soon: JNJ",
  "text": "JNJ (2026-10-30): earnings within 14 days 5% (before the open 86%), ex-dividend within 30 days 92%. Last reaction over 5%: 95%."
}
PG 0 of 1 fired · dry run, nothing sent
NKE 0 of 1 fired · dry run, nothing sent
ORCL 0 of 1 fired · dry run, nothing sent

What it means

Session of 2026-10-30, 5 symbols: Is earnings in the next 14 days: true for AAPL of 5. Is the ex-dividend date within 30 days: true for JNJ of 5. Does the stock report before the market opens next time: true for JNJ, PG of 5. Last earnings move bigger than 5%: true for AAPL, JNJ, PG of 5. calendar fired for AAPL, JNJ.

Only names with an event soon produce an email; the others need no sizing change this cycle.

Request JSON (AAPL; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "AAPL"
  },
  "questions": {
    "earn14": {
      "type": "yes_no",
      "instructions": "Is earnings in the next 14 days?"
    },
    "ex30": {
      "type": "yes_no",
      "instructions": "Is the ex-dividend date within 30 days?"
    },
    "bmo": {
      "type": "yes_no",
      "instructions": "Does the stock report before the market opens next time?"
    },
    "big_move": {
      "type": "yes_no",
      "ask": "abs(last_earnings_move) > 5"
    }
  },
  "actions": [
    {
      "id": "calendar",
      "when": "earn14 >= 0.6 or ex30 >= 0.6",
      "do": "email",
      "connection": "pm-team",
      "subject": "Event soon: {{symbol}}",
      "message": "{{symbol}} ({{as_of}}): earnings within 14 days {{earn14|pct}} (before the open {{bmo|pct}}), ex-dividend within 30 days {{ex30|pct}}. Last reaction over 5%: {{big_move|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (AAPL, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "earn14": {
      "yes_no": 0.9463,
      "rule": "days_to_earnings <= 14",
      "basis": "pattern"
    },
    "ex30": {
      "yes_no": 0.0537,
      "rule": "days_to_ex_div <= 30",
      "basis": "pattern"
    },
    "bmo": {
      "yes_no": 0.1409,
      "rule": "next_report_bmo > 0.5",
      "basis": "pattern"
    },
    "big_move": {
      "yes_no": 0.9463,
      "rule": "abs(last_earnings_move) > 5",
      "basis": "rule"
    }
  },
  "context": {
    "symbol": "AAPL",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "calendar",
      "fired": true,
      "status": "dry_run",
      "do": "email",
      "connection": "pm-team",
      "preview": {
        "subject": "Event soon: AAPL",
        "text": "AAPL (2026-10-30): earnings within 14 days 95% (before the open 14%), ex-dividend within 30 days 5%. Last reaction over 5%: 95%."
      }
    }
  ]
}

abs days_to_earnings days_to_ex_div last_earnings_move next_report_bmo

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 Buy side: Financial advisor / RIA, Wealth manager, Family office, Quant researcher, Portfolio manager (long-only), Risk manager, Private equity, VC / growth investor, Fund-of-funds allocator.

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