Skip to content

Commit

Permalink
Merge pull request #133 from Lercerss/lercerss/scripts_tz_fix
Browse files Browse the repository at this point in the history
[#118] Timezone set to NASDAQ's
  • Loading branch information
Lercerss authored Dec 27, 2019
2 parents 4b2c55c + 8b2c45a commit 07eab0c
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 11 deletions.
3 changes: 2 additions & 1 deletion core/scripts/importer.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import os
from datetime import datetime

from lobster.extender import Extender, weekdays
from lobster.extender import Extender, weekdays, TZ
from lobster.parser import parse_top_of_book
from models.order_book import OrderBook
from mongo_db.db_connector import save_messages, save_order_book
Expand All @@ -27,6 +27,7 @@


def load(message_file, ob_file_path, start_time, instrument, extend, top_of_book):
start_time = start_time.replace(tzinfo=TZ)
start_timestamp = int(start_time.timestamp() * 10**9) # in nanoseconds
interval = 10 * 10**9 # in nanoseconds

Expand Down
7 changes: 4 additions & 3 deletions core/scripts/lobster/extender.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
import csv
import random
from collections import defaultdict, namedtuple
from datetime import datetime, time, timedelta
from datetime import datetime, time, timedelta, timezone

from lobster.parser import LobsterMessageParser
from models.message import Message, MessageType
from models.order_book import OrderBook

Placement = namedtuple('Placement', ['index', 'message'])

TZ = timezone(timedelta(hours=-4)) # EST

class _TopOfBook:
def __init__(self, ask, bid):
Expand Down Expand Up @@ -47,9 +48,9 @@ def _mix_by_index(base, mix):


def weekdays(start: int, n):
current = datetime.fromtimestamp(start / 10 ** 9).date()
current = datetime.fromtimestamp(start / 10 ** 9, tz=TZ).date()
for _ in range(n):
yield int(datetime.combine(current, time()).timestamp() * 10 ** 9)
yield int(datetime.combine(current, time(), tzinfo=TZ).timestamp() * 10 ** 9)
offset = 3 if current.weekday() == 4 else 1
current = current + timedelta(days=offset)

Expand Down
14 changes: 7 additions & 7 deletions core/scripts/tests/test_extender.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
from models.message import Message, MessageType
from models.order_book import OrderBook
from lobster.extender import (
weekdays, Placement, Extender,
weekdays, Placement, Extender, TZ,
_initial_qty_for_messages, _mix_by_index, _unfilled_qty_for_messages
)


def _datetime_ts(*args):
return datetime(*args).timestamp() * 10**9
def _datetime_ts(*args, **kwargs):
return datetime(*args, **kwargs).timestamp() * 10**9


class ExtenderTest(unittest.TestCase):
Expand All @@ -27,15 +27,15 @@ class ExtenderTest(unittest.TestCase):

def test_weekdays(self):

ts = _datetime_ts(2019, 10, 24, 0, 0, 0, 1)
ts = _datetime_ts(2019, 10, 24, 0, 0, 0, 1, tzinfo=TZ)
w = weekdays(ts, 4)

self.assertEqual(ts - 10**3, next(w))
friday = _datetime_ts(2019, 10, 25)
friday = _datetime_ts(2019, 10, 25, tzinfo=TZ)
self.assertEqual(friday, next(w))
monday = _datetime_ts(2019, 10, 28)
monday = _datetime_ts(2019, 10, 28, tzinfo=TZ)
self.assertEqual(monday, next(w))
tuesday = _datetime_ts(2019, 10, 29)
tuesday = _datetime_ts(2019, 10, 29, tzinfo=TZ)
self.assertEqual(tuesday, next(w))
with self.assertRaises(StopIteration):
next(w)
Expand Down

0 comments on commit 07eab0c

Please sign in to comment.