the FOSS computational trading platform (for non-tinas..) https://github.com/pikers/piker
Go to file
Tyler Goodlet c2d9283db4 Try running daemons on UDS tpt
The root daemon, pikerd, needs to be adjusted to use diff default
registry addrs to also utilize non-TCP, but for now this gets us started
testing; so far so good B)
2025-06-26 11:38:04 -04:00
.github/workflows Drop elastic search container build for now since we're also skipping the test 2023-05-26 16:50:53 -04:00
config Adjust default `[binance]` config to use paper and disable testnets 2023-07-17 14:58:15 -04:00
dockering ib: update ibc.ini from latest upstream template 2023-12-05 16:57:38 -05:00
docs Drop marketstore and tina install from readme, add polars and apache! 2023-06-27 13:41:47 -04:00
examples max_pain-script: bit of multi-line fmting 2025-06-09 10:11:10 -04:00
piker Try running daemons on UDS tpt 2025-06-26 11:38:04 -04:00
scripts Add example mtr prober from `mtrpacket` 2023-08-10 11:49:09 -04:00
snippets Move ib data reset script into a new `scripts/` dir 2022-05-09 11:15:13 -04:00
tests Fix type-check assertion in ems test to use `is` 2025-04-24 12:53:32 -04:00
.gitignore Ignore snippets dir 2022-03-01 12:36:32 -05:00
LICENSE Relicense to AGPLv3 2020-06-16 00:12:19 -04:00
MANIFEST.in Slap in brokers.toml template if none exists 2021-05-22 15:11:39 -04:00
README.rst Fix readme to `uv sync`.. link to astral docs 2025-06-10 14:22:58 -04:00
default.nix uv migration 2025-02-12 11:19:34 -03:00
develop.nix Muck with `develop.nix` to try and hack it with `poetry` venv, go py3.11 2023-09-22 16:39:54 -04:00
flake.lock Factor prefer wheels deps into new `ahot_overrides` 2023-08-17 15:56:28 -04:00
flake.nix Try using `.mkPoetryEnv` instead for devving (dont work yet..) 2023-09-22 16:39:54 -04:00
notes_to_self.rst Start nts 2022-01-25 07:57:01 -05:00
poetry.lock Attempt to generate .uis deps free lock file 2023-09-07 14:17:01 -04:00
pyproject.toml Flip to non-git`msgspec`, update `bidict`, link to "sdof" `tractor` dev branch 2025-06-10 14:25:21 -04:00
pytest.ini Ensure actual pp is sent to ems 2023-02-25 18:59:40 -05:00
ruff.toml Drop variable regex from `ruff.toml` 2025-04-21 21:22:34 -04:00
tags Start a manual `tags` file for internal refs 2025-06-20 16:00:14 -04:00
uv.lock Flip to non-git`msgspec`, update `bidict`, link to "sdof" `tractor` dev branch 2025-06-10 14:25:21 -04:00

README.rst

piker

trading gear for hackers

gh_actions

piker is a broker agnostic, next-gen FOSS toolset and runtime for real-time computational trading targeted at hardcore Linux users .

we use much bleeding edge tech including (but not limited to):

potential projects we might integrate with soon,

  • (already prototyped in ) techtonicdb for L2 book storage

focus and feats:

fitting with these tenets, we're always open to new framework/lib/service interop suggestions and ideas!

  • 100% federated: your code, your hardware, your data feeds, your broker fills.
  • zero web: low latency as a prime objective, native UIs and modern IPC protocols without trying to re-invent the "OS-as-an-app"..
  • maximal privacy: prevent brokers and mms from knowing your planz; smack their spreads with dark volume from a VPN tunnel.
  • zero clutter: modal, context oriented UIs that echew minimalism, reduce thought noise and encourage un-emotion.
  • first class parallelism: built from the ground up on a next-gen structured concurrency supervision sys.
  • traders first: broker/exchange/venue/asset-class/money-sys agnostic
  • systems grounded: real-time financial signal processing (fsp) that will make any queuing or DSP eng juice their shorts.
  • non-tina UX: sleek, powerful keyboard driven interaction with expected use in tiling wms (or maybe even a DDE).
  • data collab at scale: every actor-process and protocol is multi-host aware.
  • fight club ready: zero interest in adoption by suits; no corporate friendly license, ever.

building the hottest looking, fastest, most reliable, keyboard friendly FOSS trading platform is the dream; join the cause.

a sane install with uv

bc why install with python when you can faster with rust :

uv sync

# ^ astral's docs,
# https://docs.astral.sh/uv/concepts/projects/sync/

include all GUIs :

uv sync --extra uis

AND with all our hacking tools:

uv sync --dev --extra uis

Ensure you can run the root-daemon:

uv run pikerd [-l info --pdb]

hacky install on nixos

NixOS is our core devs' distro of choice for which we offer a stringently defined development shell envoirment that can be loaded with:

nix-shell default.nix

start a chart

run a realtime OHLCV chart stand-alone:

[uv run] piker -l info chart btcusdt.spot.binance xmrusdt.spot.kraken

# ^^^ iff you haven't activated the py-env,
# - https://docs.astral.sh/uv/concepts/projects/run/
#
# in order to create an explicit virt-env see,
# - https://docs.astral.sh/uv/concepts/projects/layout/#the-project-environment
# - https://docs.astral.sh/uv/pip/environments/
#
# use $UV_PROJECT_ENVIRONMENT to select any non-`.venv/`
# as the venv sudir in the repo's root.
# - https://docs.astral.sh/uv/reference/environment/#uv_project_environment

this runs a chart UI (with 1m sampled OHLCV) and shows 2 spot markets from 2 diff cexes overlayed on the same graph. Use of piker without first starting a daemon (pikerd - see below) means there is an implicit spawning of the multi-actor-runtime (implemented as a tractor app).

For additional subsystem feats available through our chart UI see the various sub-readmes:

  • order control using a mouse-n-keyboard UX B)
  • cross venue market-pair (what most call "symbol") search, select, overlay Bo
  • financial-signal-processing (piker.fsp) write-n-reload to sub-chart BO
  • src-asset derivatives scan for anal, like the infamous "max pain" XO

spawn a daemon standalone

we call the root actor-process the pikerd. it can be (and is recommended normally to be) started separately from the piker chart program:

pikerd -l info --pdb

the daemon does nothing until a piker-client (like piker chart) connects and requests some particular sub-system. for a connecting chart pikerd will spawn and manage at least,

  • a data-feed daemon: datad which does all the work of comms with the backend provider (in this case the binance cex).
  • a paper-trading engine instance, paperboi.binance, (if no live account has been configured) which allows for auto/manual order control against the live quote stream.

using an actor-service (aka micro-daemon) manager which dynamically supervises various sub-subsystems-as-services throughout the piker runtime-stack.

now you can (implicitly) connect your chart:

piker chart btcusdt.spot.binance

since pikerd was started separately you can now enjoy a persistent real-time data stream tied to the daemon-tree's lifetime. i.e. the next time you spawn a chart it will obviously not only load much faster (since the underlying datad.binance is left running with its in-memory IPC data structures) but also the data-feed and any order mgmt states should be persistent until you finally cancel pikerd.

if anyone asks you what this project is about

you don't talk about it; just use it.

how do i get involved?

enter the matrix.

how come there ain't that many docs

i mean we want/need them but building the core right has been higher prio then marketting (and likely will stay that way Bp).

soo, suck it up bc,

  • no one is trying to sell you on anything
  • learning the code base is prolly way more valuable
  • the UI/UXs are intended to be "intuitive" for any hacker..

we obviously need tonz help so if you want to start somewhere and can't necessarily write "advanced" concurrent python/rust code, this helping document literally anything might be the place for you!