Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
hosammhmahmoud opened this issue Sep 21, 2023 · 0 comments

Comments

@hosammhmahmoud
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant