Skip to main content

A timeseries library to make your workflow easier

Project description

Funtime - Funguana's Time-series database library for your trading bot

Funtime is a mongodb based time series library. It was created because we ran into the problem of inputting data that may have its schema change and querying it quickly.

We found arctic to be a good library, yet it lacked straightforward pythonic querying methods. We added a layer on top for our own purposes.

Both funtime and arctic use mongodb as the main database

What makes Funtime better?

The single thing that makes funtime better for timeseries information is that it has more clear querying methods. It should be noted that it still has arctic as the foundation. Meaning the speed of it is extremely fast. This works a lot like tickstore, yet it's easier to get your hands on and use than tickstore

It is a layer on time of arctic. We added the following:

  • An easy way to add and filter data with a given timestamp/datetime
  • Easy conversions to both a pandas and dask dataframe
  • A choice to get information by a filtration type. This allows the user to be highly flexible with how they want to get information
    • Window - A window query is a query that gets information two dates. They must be valid.
    • Before - Gets every record before a certain time
    • After - Gets every record after a certain time

How does it work?

All forms of time data is stored as a epoch timestamp. This is to make querying easier and faster than if we were to use a full datetime object. We do conversions within the library from datetime objects into epoch timestamps.

This increases the insert time, yet reduces the querying time. Numbers are easier to filter than date objects. The biggetst tradeoff is in ease of use.

Example:


from funtime import Store
import mimesis # this is used to seed data for our test
import time

# Create a library and access the store you want
store = Store().create_lib("hello.World").get_store()

# store the data with a timestamp
store['hello.World'].store({
    "type": "price",
    "currency": "ETH_USD",
    "timestamp": time.time(),
    "candlestick": {
        "open": 1234,
        "close": 1234.41,
        "other": "etc"
    }
})


# Query general information. It returns a generator
runs = store['hello.World'].query({
    "type": "price"
})

# Check for results
for r in runs:
    print(r)


# Even get information with complex time queries
runs2 = store['hello.World'].query_time(time_type="before", start=time.time(), query_type="price")


# Check for results
for r in runs:
    print(r)

Key Parts


You

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for funtime, version 0.2.3
Filename, size File type Python version Upload date Hashes
Filename, size funtime-0.2.3-py3-none-any.whl (6.4 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size funtime-0.2.3.tar.gz (5.9 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page