Company Calendar

company_calendar(freq: str = 'FQ/FS', alignment: str = 'afp', *, fill_gaps: bool, extend: bool | int = False)

Return the fiscal period-end dates of a company, for a given calendar frequency, as a time series with values of 1.0 at the end of every fiscal period. The signal uses FactSet data in order to determine the calendar a company uses.

Parameters:
  • freq – The calendar frequency; possible values are FQ/FS (default), FY, FQ, FS, FQ&FS, FQ+ and FS+.

  • alignment – The alignment; possible values are afp (default), fp, pd and rd.

  • fill_gaps – Whether missing data should be filled in, to handle occasional FactSet data issues; defaults to True unless alignment is rd.

  • extend – If True, future periods will be forecast and returned; if an integer, forecasts this number of future periods; defaults to False.

Supported frequencies:

freq

Description

FQ/FS

Quarterly or semi-annual calendar, depending on which calendar the company uses.
If a company switches reporting frequency, returns the company’s current calendar.
Frequency is determined based on FactSet Fundamentals data (see Source data).

FQ

Quarterly calendar. The calendar will only be returned if there are quarterly periods
in either the FactSet Fundamentals or Estimates data set.
If a company switches reporting frequency, the calendar will only include periods in
fiscal years with quarterly reporting.

FS

Semi-annual calendar. The calendar will only be returned if there are semi-annual periods
in either the FactSet Fundamentals or Estimates data set.
If a company switches reporting frequency, the calendar will only include periods in
fiscal years with semi-annual reporting.

FY

Annual calendar.

FQ&FS

Mixed quarterly and semi-annual calendar. Returns quarterly periods in fiscal years
where the company reports quarterly, and semi-annual periods in fiscal years where
the company reports semi-annually.
For companies that switch between quarterly and semi-annual reporting, this will
return all available periods, but they will be of uneven length.

FQ+

Forced quarterly calendar, regardless of whether the company reports quarterly.
For companies that report quarterly, this is the same as FQ.
For companies that report semi-annually, we upsample the semi-annual calendar.
This is useful for working with data sets like Visible Alpha which may provide quarterly
actuals & consensus, even if FactSet only provides semi-annual data.

FS+

Forced semi-annual calendar, regardless of whether the company reports semi-annually.
For companies that report semi-annually, this is the same as FS.
For companies that report quarterly, we downsample the quarterly calendar.

Alignment options:

alignment

Description

afp

Actual fiscal periods: each date is the last date in a fiscal period.

fp

Fiscal periods: each date is the last date in a fiscal period, rounded off to a
calendar month-end. A date is rounded off to the end of the previous month if
it is the 9th or earlier of a month, and it is rounded off to the end of the
same month if it is the 10th or later of a month. This is the same rounding
rule as is used by the FactSet Fundamentals data set.

pd

Publication date: the date on which the fiscal period is reported.
This alignment can only be used with the frequencies FQ/FS, FY, FQ and FS.
Filling in missing values is not supported. Future dates are supported by using
the anticipated publication dates according the FactSet Estimates data set.

rd

Reporting date: the date on which the report impacted trading.
This can be the same date as the publication date, or it can be later.
This alignment can only be used with the frequencies FQ/FS, FY, FQ and FS.
Filling in missing values is not supported. Future dates are supported by using
the anticipated publication dates according to the FactSet Estimates data set.
Note that for future dates the publication dates are report dates are always
the same, as we do not know whether future reports will be published before
or after trading hours.

Source data

The data we use to calculate the company calendars comes from FactSet, and there are two data sets we use for this purpose.

The main data set we use is the FactSet Fundamentals data set. This data set contains data from the companies’ financial statements, and it contains the exact end dates for the fiscal periods.

The other data set is the FactSet Estimates data set. This data set contains comparable actuals and consensus estimates from sell-side brokers, but provides the dates rounded off to month-end.

Due to the difference in how the dates are treated in these two data sets, we only use the Fundamentals data set in order to determine the exact end dates of the fiscal periods, but we supplement the data with data from the Estimates data set in order to determine whether a company reports quarterly. For example, if a company reports its financials semi-annually, such that the Fundamentals data set only contains semi-annual data, there may still be quarterly Estimates data. In this case the company calendar signal will, by default, produce a semi-annual calendar, but can also produce a quarterly calendar when requested.

Calendar types

The main unit in the fiscal calendar is the fiscal year, which is a period that may or may not coincide with a calendar year. The fiscal year is subdivided into shorter periods: most commonly the year is divided into four quarters, each consisting of roughly three months, but some companies report only semi-annually, dividing the year into two semesters of roughly six months. The company calendar signal will by default produce quarterly data for companies that report quarterly and semi-annual data for companies that report semi-annually.

For most companies the fiscal calendar follows the calendar months, so that a fiscal period always ends on the last day of a calendar month. Another common approach is to have a 52/53-week calendar, which is used when a company prefers each fiscal period to end on the same weekday. In such a calendar the end of a fiscal year is typically set to a certain weekday in relation to a specific calendar month, for example, the Saturday closest to the last day of December. When such a fiscal year is divided into quarters, there are two common solutions: each quarter in a 52-week year consists of 13 weeks, or there are three quarters with 12 weeks and one with 16 weeks. In a 53-week year, one of the quarters is lengthened by one week. Similarly, for companies with a semi-annual calendar, a 52-week year can be divided into two 26-week semesters, or two semesters with 24 and 28 weeks each.

Moreover, it happens that companies in the course of their lifetimes switch between calendars. A company may switch between quarterly and semi-annual reporting, and they may switch between using a month-based calendar and a 52/53-week calendar.

The company calendar signal uses the financial data from FactSet in order to identify which of these calendars a company uses. For most companies, this is straightforward, as most companies choose one calendar and stick with it. It is not uncommon, however, to switch calendars as described above, and in such cases we will not always succeed in identifying the calendar. In such cases we may not be able to correctly fill in missing data or forecast future dates. Even when we are able to identify the calendar both before and after a company has changed calendars, the year in which the company transitions from one calendar to another may be irregular, and if there are missing data for that year, we will typically not be able to fill them in.

Filling in gaps

Occasionally, there are missing values in the FactSet data set. If fill_gaps is set to True, the company calendar signal will attempt to fill in these dates. This is only possible in the cases where we are able to identify the calendar the company uses. Thus, if the company uses an uncommon calendar which we do not recognise, we may not be able to fill in gaps. This may also happen in cases where a company changes from one kind of calendar to another. Our algorithm will normally be able to recognise the calendar both before and after the change, but will often fail in the fiscal year in which the change occurs, since this year will typically have non-standard fiscal periods. If there are missing periods within such a fiscal years, the algorithm may not be able to fill them in.

Forecasting future dates

If extend is set to True, we will attempt to forecast the calendar into the future. As for filling in gaps, this will only happen if the algorithm is able to recognise the calendar in use. If we are unable to do so, the signal will not produce any future values, even if extend is True.

If extend is set to an integer, the signal will forecast at most that number of future values.

If extend is set to False, the last date produced by the signal is the last date available in the FactSet source data.

For the pd and rd alignments, future dates are not forecast but are taken from FactSet.