OneChronos
OneChronos
    • Expressive Bidding

    • Introduction
    • Getting Started
    • Expressive Bidding Guide
    • Quickstart Examples
    • Runnable Templates
    • Developer Reference
    • Expressive Bidding FAQ

Expressive Bidding FAQ

Answers to common trading, technical, and workflow questions about Expressive Bidding.

Expressive Bidding with OneChronos

What is a "bidding language"?

The OneChronos bidding language is a simple programming language that lets you specify a wide range of preferences for how your orders are filled. Bidding languages provide the expressive power of describing what you want over the phone, with the scalability to do so over an arbitrary number of possible outcomes - all within an auction setting. As an intuition for how this works, you can think of a simple limit order as a computer program. To buy 100 shares of a security for at most $20, the program might look like: if (qty <= 100 AND price <= 20) then Buy. From here, imagine you want to buy one security but only if you can also sell another to fund the purchase: if (qty(a) = 100 AND qty(b) = 50), then Buy(a) AND Sell(b).A few examples of trades you can encode using a bidding language:
  • Atomic executions: control how you are filled in multiple securities at once (like the above)
  • Substitutes: fill for $1,000 of some mix of 'a' and 'b', in any combination of the two: if (price(a) * qty(a) + (price(b) * qty(b) < 1000).
  • Market Impact Control: pay slightly more to fill the entire parent order for 'a', or slightly less to fill a child order: if (qty(a) < 500 AND price(a) < 20) XOR (qty(a) > 10000 AND price(a) < 21)
  • Note: all of the above is pseudocode, not the actual language used for Expressive Bidding. But it's surprisingly close, and most bids involve just a few lines of code. OneChronos bidder logic can be written in OCaml or ReasonML.

    Do I need to be a programmer to use Expressive Bidding?

    Some programming knowledge is required to create bidder logic or to modify one of our existing templates. Once a snippet of bidder logic has been created and registered with OneChronos, it can be activated using a FIX tag applied on Limit Orders sent over FIX.

    What language is used to write bidder logic?

    Bidder logic can be written in ReasonML or OCaml. Don't worry if you're not familiar with these languages. Bidder logic can be created using features of these languages that are common in most programming languages. If you haven't used either language, we recommend using ReasonML since the syntax is more similar to more common languages (esp JavaScript/TypeScript). OneChronos has also included several purpose-built helper functions described in the developer reference guide to make things easier.
  • ReasonML guide
  • OCaml guide
  • To get a feel for ReasonML and OCaml syntax, sketch.sh provides a user-friendly web runtime for both languages.

    I want to try creating an Expressive Bid. Where do I start?

    This site has an abundance of documentation, tutorials, and pre-built examples for learning how to use Expressive Bidding. See the Start Here page for information on where to begin. And you can always reach out to us directly at [email protected] for assistance.

    Is Expressive Bidding only meant for portfolios and baskets?

    No, there are many ways Expressive Bidding can be helpful for trading single securities.
  • Decisions based on market data: OneChronos makes the market data measured at the moment of each auction available to all Expressive Bids. So bidder logic can compute things like custom midpoint prices or percent of spread to pay/receive and make any other decisions that are sensitive to momentary market conditions.
  • Price and volume: bidder logic can express different prices for different quantities to be filled. The indifference curve examples (also known as price/volume curve) show how this works.
  • What types of trading strategies can benefit from Expressive Bidding?

    Most trading and execution strategies can be implemented using simple Expressive Bids. Examples of some common types of constraints and goals include:
  • Portfolios: benchmark tracking, factor exposure, bundle pricing, long/short dollar balance, spreads, pairs, substitutes, complements, hedging
  • Single securities: utility or indifference curves, dynamic peg pricing (e.g., mid +/-), price improvement seeking, market impact management
  • Some of these concepts overlap, and likewise, some are achievable using nearly identical bidder logic using nearly identical bidder logic. If you've familiarized with the basics of how bidder logic works, see the runnable templates for concrete examples of the above.

    Does using Expressive Bidding require changes to my workflow?

    Not necessarily - some Expressive Bids operate entirely on Target Orders. In those cases, simply applying a FIX tag to each Limit Order to reference the relevant bidder logic will create the Expressive Bid. The FIX documentation describes this process in more detail.If you are accessing OneChronos through a broker, ask your broker about how you might take advantage of Expressive Bidding through them with little to no change in your existing workflow. Subscriber Broker Dealers can use Expressive Bidding to complement their algorithm and smart routing strategies, and may also offer OneChronos as a direct market access (DMA) destination to their customers.

    Can I supply market data or proprietary data into my Expressive Orders?

    Yes, you can supply any type of data that can be encoded as JSON. This JSON data is provided over FIX and is made available to Bidder Logic as a bidder_data function argument.

    How do I develop and test new bidder logic code?

    We provide a cloud-based testing and simulation environment for this purpose at no cost. Start with the brief walkthrough of the environment, and access an on-demand instance directly at Try OneChronos.

    How do I submit a bidder logic function that I wrote?

    We provide an API and a website for submitting bidder logic. Stay tuned for more details. In the meantime, you can reach out directly to us at [email protected] for more details.

    After I submit my bidder logic, how do I use it during the trading day?

    To use or "invoke" bidder logic and create an Expressive Bid in production, send standard FIX Limit Orders with a FIX tag referencing the hash name assigned to the bidder logic submission. Bidder logic can also be invoked directly with a single "direct invocation" FIX message. The FIX documentation has a section dedicated to Expressive Bid submission and invocation.