Solutions
Real-time market analytics
Apply custom technical indicators like Bollinger Bands to streaming price data, with no state to manage between events.
// Bollinger Bands — stateless analytic
pipeline:
- analytic:
class: BollingerBandAnalytic
function: compute
window size: 20
window unit: EVENTS
emit:
select: symbol, upper, middle, lower
group by:
- symbolWhy it matters
From raw ticks to trading signals
Market data never stops moving. Custom, stateless analytics let you score every tick against your own indicators the moment it arrives.
Stateless analytics process each event using only its own window, no external store, no rebuild-on-restart headaches.
Implement any indicator. Bollinger Bands, RSI, VWAP and more as a reusable processor and drop it straight into a pipeline.
Applies continuously to streaming price ticks, so bands update the moment new data arrives.
How it works
A custom analytic, built once and applied continuously to every symbol in the stream.
Implement the analytic
Extend Joule's AnalyticsFunction interface with your compute logic. Start from the provided template.
Register the processor
Package it as a plugin so Joule can discover and load it at runtime.
Apply it in a pipeline
Reference the processor from a stream definition, with a rolling window of recent price events.
Stream the results
Upper, middle and lower bands emit continuously as new price ticks arrive.
FAQ
Common questions
Do I need to manage state myself?
No, stateless analytics process each event using only the data in its own window, so there's nothing to persist between runs.
What language do I write the analytic in?
Java, using Joule's AnalyticsFunction interface. Python and JavaScript processors are supported for other parts of a pipeline.
Can I use my own indicators, not just Bollinger Bands?
Yes, the Bollinger Band processor in the tutorial is one example. The same pattern works for any formula you can express in code, such as RSI or VWAP.
Go deeper in the docs
Step-by-step setup, the processor template, and full deployment instructions for the stateless analytics tutorial.