[ TUTORIAL ]
Arming watches
A watch is the smallest unit of delegation in Oddysey: one symbol, one threshold, one kind of draft. This page covers how to set one well and how to diagnose one that behaves unexpectedly.
File your first watch
- 1
Pick a symbol you would actually act on
Symbols are uppercase tickers up to twelve characters, matching
[A-Z0-9.-]+. The watch tracks the underlying equity’s move; a ticker your quote provider does not recognise resolves to no quote and the watch stays silent forever. - 2
Choose a threshold you would not ignore
Five options: −2%, −3%, −5%, −7%, −10%, measured as the change since the previous close. The watch trips when the move is at or below the threshold, so −5% fires at exactly −5.00%.
Set it where you would genuinely want to be told. A −2% watch on a volatile name will draft something most days and you will start skimming, which defeats the whole design.
- 3
Choose what should be drafted
Three actions, and the choice determines which agent takes it:
alert → CYCLOPS-MONITOR
An escalation. Drafts a note on what moved and whether it warrants attention, and repeats the current allocation unchanged. Use it when you want eyes, not a plan.
dca → ARGUS-INSPECTOR
A staged accumulation plan against the dip.
rebalance → PENELOPE-WEAVER
A target allocation across the tracked symbols, with the notional the shift would move.
- 4
Write the note as an instruction
The optional note (up to 80 characters) is handed to the agent when it drafts. It is the one place you get to shape the output, so make it directive rather than descriptive — “four tranches, weight the last two” beats “NVDA dip”.
curl -X POST https://oddysey.dev/api/watches \
-H "content-type: application/json" \
-H "cookie: oddysey_session=<your session cookie>" \
-d '{
"symbol": "NVDA",
"thresholdPct": -5,
"action": "dca",
"note": "Draft a 4-tranche plan, weight the last two."
}'How the sweep decides
Every 15 minutes in production, and on demand from the deck, the evaluator walks your active watches:
for each active watch:
quote = latest quote for watch.symbol
if no quote → no-quote (nothing drafted)
if quote.change24hPct > threshold → held (nothing drafted)
if fired within the last 30 minutes → cooling (nothing drafted)
else → draft a proposal
stamp lastTriggeredAt
append 2 ledger eventsEach outcome is reported back by name, so a manual evaluation tells you exactly why nothing was drafted rather than leaving you guessing.
| OUTCOME | WHAT IT MEANS | WHAT TO DO |
|---|---|---|
| held | The price has not fallen to the threshold. | Nothing — this is the normal state. |
| cooling | This watch fired within the last 30 minutes. | Wait, or accept the duplicate is being suppressed. |
| no-quote | No price could be resolved for this symbol. | Check the ticker, then check the market status. |
| draft-failed | The threshold tripped but the model call failed or returned something invalid. | Check the ledger for a system event naming the cause. |
| triggered | A proposal was drafted. | Go and read it. |
The cooldown
After a watch fires, it will not fire again for 30 minutes. Without this, a symbol sitting below its threshold would re-draft on every single sweep and bury you in near-identical proposals within the hour.
Tuning a watch that misbehaves
It never fires.
Three usual causes, in order of likelihood. The market is shut, so the change since previous close is not moving — outside trading hours the loop is quiet by design rather than broken. Or the threshold is deeper than the symbol has moved. Or the symbol resolves to no quote at all, which shows up as no-quote in a manual evaluation.
It fires constantly.
Deepen the threshold. −2% is a hair trigger on anything volatile; −7% or −10% reserves your attention for moves that deserve it.
The drafts are vague.
The note is doing the work here. An empty note gives the model nothing but the ticker and the threshold to reason from.
You want it to stop, but not to vanish.
Pause it. A paused watch keeps its history and its cooldown stamp and is skipped by every evaluation until you resume it.
What a watch can and cannot do
- It can draft a proposal, stamp its own cooldown, and append ledger events.
- It cannot approve anything, place an order, move a token, or change another watch.
- The worst outcome of arming a badly-tuned watch is a proposal you did not want to read.