{"repo":"joaquinbejar/OptionChain-Simulator","free":true,"listed":false,"github":"https://github.com/joaquinbejar/OptionChain-Simulator","clone":"git clone https://github.com/joaquinbejar/OptionChain-Simulator.git","description":"A lightweight RESTful simulator for option chains that evolves over time with each API request. Useful for testing trading algorithms, visualizations, and analytics pipelines without relying on real-time market data. NO PRODUCTION READY YET","language":"Rust","stars":12,"topics":["chain","finance","fintech","options","options-trading","trading","clickhouse","derivatives","financial-engineering","quantitative-finance"],"license":"MIT","category":"trading","readme_excerpt":"OptionChain-Simulator API and Architecture System Architecture Two REST surfaces over one set of layers. v1 serves a single expiration per request and stamps it with the wall clock; v2 serves a rolling inventory of absolute expirations on a simulated clock. They share the seeded walk and the error boundary, and nothing else — separate session types, separate stored schemas, separate stores. domain is a private module: the walk, the tape, the planner and the snapshots are implementation, and the REST contract is what is public. The dependency arrows only ever point down — an infrastructure adapter that imported api would invert the layering, which is why the persistence layer carries its own row types instead of naming the domain snapshot. Session State Transitions GET /api/v1/chain is a safe, repeatable peek and does not appear here because it never changes the session state — only POST /api/v1/chain/step advances the cursor. A v2 simulation walks a smaller machine, because it is immutable after creation: there is no PATCH or PUT to reach Modified or Reinitialized , and a stored document in either state is rejected on load rather than served. The state and the cursor are validated together: Initialized only at step zero, Completed only at the horizon, InProgress strictly between them. GET /{id}/snapshot and the export appear nowhere here — neither moves the cursor, and the idle TTL is measured from the last write, so peeking does not keep a simulation alive. API Request Flow ","default_branch":null,"files":null,"tree":[],"storefront":"/r/joaquinbejar","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/joaquinbejar/OptionChain-Simulator/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}