Skip to content

ValueError: Receieved calendar arguments although twentyFourHourCalendar, not as a calendar factory. #2852

Open
@hosammhmahmoud

Description

@hosammhmahmoud

Dear Zipline Maintainers,

Before I tell you about my issue, let me describe my environment:

  • Operating System: (MacOs`)
  • Python Version: $2.8.0 --version
  • How did you install Zipline: (pip install zipline-loaded)

I am trying to build a custom calendar and all is working except for this error
ValueError: Receieved calendar arguments although twentyFourHourCalendar is registered as a specific instance of class <class 'cutsomCalendar.twentyFourHourCalendar'>, not as a calendar factory.

I am importing a twentyFourHourCalendar class from a customCalendar.py file

from zipline.utils.memoize import lazyval
from pandas.tseries.offsets import CustomBusinessDay
from datetime import time
from pytz import timezone
from zipline.utils.calendar_utils import TradingCalendar

class twentyFourHourCalendar(TradingCalendar):
"""
An exchange calendar for trading assets 24/7.

Open Time: 12AM, UTC
Close Time: 11:59PM, UTC
"""

tz = timezone("UTC")

@property
def name(self):
    """
    The name of the exchange, which Zipline will look for
    when we run our algorithm and pass TFS to
    the --trading-calendar CLI flag.
    """
    return "TwentyFourHourCalendar"

@property
def open_times(self):
    """
    Method to specify the open times for each trading session.
    """
    return ((None, time(0, 0)),)

@property
def close_times(self):
    """
    Method to specify the close times for each trading session.
    """
    return ((None, time(23, 59)),)

@lazyval
def day(self):
    """
    The days on which our exchange will be open.
    """
    return CustomBusinessDay(weekmask="Mon Tue Wed Thu Fri Sat Sun")

And using the same way of registering a calendar and this error is caused by the get_calendar() function

start_date = pd.Timestamp('2018-03-31')
end_date = pd.Timestamp('2023-09-21')

TwentyFourHourCalendar = twentyFourHourCalendar(start_date, end_date, side='both')

register_calendar("twentyFourHourCalendar", TwentyFourHourCalendar, force = True)
twenty_four_hr = get_calendar("twentyFourHourCalendar")

What steps have you taken to resolve this already?

I've searched for the error everywhere and couldn't find a solution and will appreciate your help!

Sincerely,
Hossam

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions