Skip to content

Releases: Orbital-Trade/trade-kit

v0.5.0 — alert, journal, options, backtest

Choose a tag to compare

@jpramirez jpramirez released this 06 Jun 01:36

What's new in v0.5.0

4 new tools

alert — Price threshold alert daemon. Watches a symbol list and fires Telegram/Discord notifications when price crosses a configured threshold. One-shot or repeat mode. No API key required.

journal — SQLite trade journal. Records fills with FIFO P&L reporting. Duplicate broker order IDs silently ignored. Pure-Go SQLite (no CGO).

options — Options chain viewer. Displays calls/puts, IV, OI, bid/ask for any US optionable stock via Yahoo Finance. Handles auth internally — no API key required. Near-the-money and ITM highlighted.

backtest — Historical strategy backtesting. Replays daytrader (gap-up) and bounce (RSI oversold) strategies against OHLCV data. Supports Yahoo Finance (default), Alpha Vantage, and Polygon.io as data sources.

Other additions

  • Central watchlist~/.trade-kit/watchlist.json shared across daytrader-bot, bounce-bot, earnings-bot
  • Makefilemake all, make <tool>, make test, make clean
  • Per-tool README.md — All 12 tool directories now have full documentation

Bug fixes

  • DST bug — Hardcoded UTC-4 offset in daytrader, bounce, index replaced with time.LoadLocation("America/New_York")
  • scheduler — TypeExec orders now blocked by default; require --allow-exec flag
  • tiger/ops/quote.gohttp.NewRequest and io.ReadAll errors were silently swallowed
  • index-trader — Quote fetch failure caused P&L to calculate as zero, disabling stop/target checks
  • index-traderlogf() was writing to stdout instead of stderr
  • moomoo — Connection close errors now logged instead of silently dropped
  • journal — Timestamp parse errors now propagated instead of producing zero dates
  • earnings — Session setup errors handled gracefully

Built with Go 1.21. Each tool is a standalone binary — build individually or use make all.

v0.4.0 — notifier: Telegram/Discord signal delivery

Choose a tag to compare

@jpramirez jpramirez released this 27 May 08:26

What's new

notifier — new tool

Delivers trade signals to Telegram and Discord. All scanner bots now call notifier on every signal.

Commands:

notifier send "LUNR gap +8.3% — BUY signal"
notifier send --symbol LUNR --signal BUY --price 35.50 --stop 32.00 --target 43.00 --qty 5 --strategy daytrader
notifier test
notifier status

Setup (notifier/notifier.json):

{
  "telegram_bot_token": "your-bot-token",
  "telegram_chat_id":  "@yourchannel",
  "discord_webhook_url": "https://discord.com/api/webhooks/...",
  "enabled": true
}

Free tier: leave both blank → signals go to stdout only, no crash, no config required.

Paid tier: configure a private Telegram channel token. Subscribers receive signals in real-time.

Bot integration

daytrader-bot, bounce-bot, earnings-bot, and index-trader all call notifier send on signal write and trade execution. The call is non-blocking (goroutine) and silent if notifier is not in PATH.


Full changelog: See CHANGELOG.md

v0.3.1 — Bug fixes: timezone, input validation, error propagation

Choose a tag to compare

@jpramirez jpramirez released this 25 May 10:43

What changed

scheduler — timezone correctness

  • Replaced hardcoded UTC-4 (EDT) offset with time.LoadLocation("America/New_York") for proper EST/EDT transitions across the year. Orders scheduled between December and March were firing 1 hour early due to the fixed EDT offset.
  • nextSessionTime now accepts *time.Location so time arithmetic is done against the real timezone, not a shifted UTC value.
  • Falls back to UTC-5 (EST) if the system timezone database is unavailable.

scheduler — input validation

  • buy/sell: rejects empty symbols, quantity ≤ 0, and non-positive limit prices.
  • stop/target: validates symbol, quantity > 0, and --price > 0.
  • Errors exit with code 1 before anything is written to the queue.

tiger — error propagation in analyze

  • http.NewRequest failure was silently dropped; a nil request would panic in http.Client.Do. Now returns the error.
  • io.ReadAll failure was silently dropped; produced an opaque JSON parse error instead of a network error. Now returns the error with context.

tiger — json.Marshal error in Call

  • json.Marshal(params) error was discarded; now propagated to callers.

tiger — emergency close error in FuturesEntry

  • When stop-order response parsing fails after a live futures entry, the emergency FuturesClose call's error was silently dropped. Both the stop failure and any close failure are now printed to stderr before returning.

Full changelog: See CHANGELOG.md