Feature: Implicit Data Source Descriptors & Tiingo API Support

With Milestone 15, we have made it even easier for you to get started with researching your own trading strategies. First, we made the data source descriptors optional, which removes much of the hassle involved with setting up data sources. And second, we have added support for a fabulous, free data source: Tiingo!

Data Source Descriptors

In order for TuringTrader to identify data sources, we use data source descriptors. These descriptors are simple .inf files, collecting information about the instrument’s name and ticker, the data source class, as well as the data location and format. Here is an example of such a file for $SPX, the S&P 500 Index, loaded from Yahoo! as a CSV file:

$SPX.inf

    name=S&P 500 Index
    dataPath=Data\$SPX
    ticker=$SPX
    date={1:MM/dd/yyyy}
    time=16:00
    open={2:F2}
    high={3:F2}
    low={4:F2}
    close={5:F2}
    volume=0
    symbolYahoo=^GSPC
    dataUpdater=yahoo

These descriptor files allow TuringTrader to save a lot of information, especially the instrument’s name, and symbol mapping. But our experience from the past few months of using TuringTrader in day-to-day operations has shown that most of the time, we simply copy and paste an existing descriptor, and adjust the ticker symbol as required. Seems like a waste of time.

Implicit Data Source Descriptors

Because of the redundancy involved in creating data source descriptors, we have decided to made these files optional. If TuringTrader can’t find a descriptor file, we now implicitly create a descriptor on the fly, populated with meaningful default values. That should get you going in probably 90% of all cases. This works best for a data feed with the following characteristics:

  • provides the instrument’s full name, and other meta information
  • provides data fast enough, to allow us to load the full history
  • allows us to read data through an API, without too much discouragement

This leaves us with only few cases, in which a data source descriptor is still required:

  • the data feed does not provide meta information, but you would really like to have the instrument’s full name
  • the data feed is different from the default data feed
  • you are using a nickname which is not identical to the ticker symbol
  • other information, probably symbol mapping, needs to be stored

As you can see from this list, there is a strong case to use the ticker symbol as an instrument’s nickname. So in the future, instead of ‘$SPX.index’, we will use ‘$SPX’, and instead of ‘SPY.etf’, we will use ‘SPY’. We have updated all demo code and showcase strategies accordingly.

And while this is a significant change, we’d also like to point out that this is a non-breaking change: your existing nicknames and data source descriptors will continue to work, and no code changes are required to your treasured strategies.

TuringTrader supports Tiingo

Tiingo API Support

We are very excited to support the Tiingo API. We feel that Tiingo is a fantastic addition to our available data sources for the following reasons:

  • data fully adjusted for splits and dividends
  • up to 50 years of history available
  • meta data, including the human-readable instrument name

And even better, it’s free. All you need to do, is sign up for a free account, and enter the API Key in TuringTrader’s settings dialog. The free account allows up to:

  • 500 hourly requests
  • 20,000 daily requests
  • 5GB of monthly bandwidth

This should be plenty, even for sophisticated strategies. Also, TuringTrader caches these data to disk, to give you even more wiggle room. But if that’s not enough, they also offer quite competitively priced paid plans.

We hope you are as excited about these new features as we are.

Happy coding!