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

Market holidays clarification? #694

Closed
aJetHorn opened this issue Sep 5, 2022 · 6 comments
Closed

Market holidays clarification? #694

aJetHorn opened this issue Sep 5, 2022 · 6 comments

Comments

@aJetHorn
Copy link

aJetHorn commented Sep 5, 2022

Hi, I'm wondering if someone can clarify how the financial package is intended to be used with a code sample. Code looks simple enough but using NYSE as a country, as the docs suggest, results in an error. I downgraded to the previous release and encountered the same issue.

@arkid15r
Copy link
Collaborator

arkid15r commented Sep 7, 2022

Hi Tim,
it's always a good idea to attach the error message to a bug report and make it as detailed as possible.

As there are no clear steps to reproduce the issue I've just tried these:
virtualenv venv

created virtual environment CPython3.9.13.final.0-64 in 266ms
creator CPython3Posix(dest=/Users/ark/Dev/python-holidays/venv, clear=False, no_vcs_ignore=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/Users/ark/Library/Application Support/virtualenv)
added seed packages: pip==22.2.2, setuptools==63.4.3, wheel==0.37.1
activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator

pip install holidays

Collecting holidays
Downloading holidays-0.15-py3-none-any.whl (181 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 181.3/181.3 kB 802.2 kB/s eta 0:00:00
Collecting convertdate>=2.3.0
Using cached convertdate-2.4.0-py3-none-any.whl (47 kB)
Collecting korean-lunar-calendar
Using cached korean_lunar_calendar-0.2.1-py3-none-any.whl (8.0 kB)
Collecting hijri-converter
Using cached hijri_converter-2.2.4-py3-none-any.whl (14 kB)
Collecting python-dateutil
Using cached python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
Collecting pymeeus<=1,>=0.3.13
Using cached PyMeeus-0.5.11.tar.gz (5.4 MB)
Preparing metadata (setup.py) ... done
Collecting six>=1.5
Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Building wheels for collected packages: pymeeus
Building wheel for pymeeus (setup.py) ... done
Created wheel for pymeeus: filename=PyMeeus-0.5.11-py3-none-any.whl size=730971 sha256=e07715b75457573b8fcbbf2acb68014c7aa3a8a3d7005135e3d5effe54a43acb
Stored in directory: /Users/ark/Library/Caches/pip/wheels/33/3d/82/4579e9cca41ff991140b2e050bc6df3a38292f26e4fa06b15d
Successfully built pymeeus
Installing collected packages: pymeeus, korean-lunar-calendar, six, hijri-converter, convertdate, python-dateutil, holidays
Successfully installed convertdate-2.4.0 hijri-converter-2.2.4 holidays-0.15 korean-lunar-calendar-0.2.1 pymeeus-0.5.11 python-dateutil-2.8.2 six-1.16.0

python

import holidays
print(holidays.financial.ny_stock_exchange.NYSE(years=2022))
{datetime.date(2022, 1, 3): "New Year's Day (Observed)", datetime.date(2022, 1, 17): 'Martin Luther King Jr. Day', datetime.date(2022, 2, 21): "Washington's Birthday", datetime.date(2022, 4, 15): 'Good Friday', datetime.date(2022, 5, 30): 'Memorial Day', datetime.date(2022, 6, 20): 'Juneteenth National Independence Day (Observed)', datetime.date(2022, 7, 4): 'Independence Day', datetime.date(2022, 9, 5): 'Labor Day', datetime.date(2022, 11, 24): 'Thanksgiving Day', datetime.date(2022, 12, 26): 'Christmas Day (Observed)'}

In general you should use NewYorkStockExchange class (or its alias NYSE) of holidays.financial.ny_stock_exchange module. Example:

from holidays.financial import ny_stock_exchange
nyse_holidays_2022 = ny_stock_exchange.NYSE(years=2022)

I hope this'll help you get started. I may be able to assist more if you provide the error you mentioned.

@dr-prodigy
Copy link
Collaborator

hi everyone!
@arkid15r thank you so much for the complete explanation.
Indeed, providing a complete issue report (with an enclosed code sample, whenever possible) is vital to obtain valuable support.

This said, everything explained here above should be more than enough to get things done in the right way.
Willing to get deeper in all the possible ways to use python holidays, there are 2 other main sources to take into account:

While official documentation provides all the required details, unit test code include a near-100% coverage of the whole library, and therefore provides valid examples for all its use cases.

@aJetHorn please let us know if this clarifies your doubts, thx

@aJetHorn
Copy link
Author

aJetHorn commented Sep 8, 2022

The language used in the docs:

"The standard way to refer to a financial market is to use its ISO 10383 MIC (Market Identifier Code) as a “country” code when available."

Was interpreted as this usage being possible:

us_market_holidays = holidays.country_holidays('NYSE')

I guess I understand why usage is different, I just couldn't find it documented and couldn't find any code samples on Github. Thank you for clarifying.

@aJetHorn aJetHorn closed this as completed Sep 8, 2022
@dr-prodigy
Copy link
Collaborator

Hi @aJetHorn , this definitely clarifies your issue report, thank you very much.

Although, as you could notice after, country_holidays('..') method is meant for countries only, a similar method should in fact be available for financial holidays too (which is not yet the case: this went unnoticed since we split financial holidays from country ones). I'm then reopening this, and we will take care of it in the next release.

Thanks again 👍

@dr-prodigy
Copy link
Collaborator

Hi @aJetHorn
I've just pushed in beta an update that should address your issue. This involved a larger refactoring regarding all the financial holidays code, including adding a new BaseHoliday property (market), used for financial holidays instead of the usual country.
Could you please make a check on it and confirm it works as expected?
Thanks!

@dr-prodigy dr-prodigy mentioned this issue Sep 16, 2022
dr-prodigy added a commit that referenced this issue Sep 16, 2022
* add honduras tests

* add honduras tests

* Add tests for many edge cases

* Add tests for many edge cases

* remove duplicate function

* v.0.15 beta init

* Typechecking (#661)

* typechecking HolidayBase, holidays.utils, miscellaneous typechecking
note: coverage to be extended to other parts of the project code

* Update Ukraine holidays.

  - Add Day of Ukrainian Statehood holiday.
  - Edit Victory Day name.
  - Fix formatting.
  - Update tests for Ukraine holidays.
  - Switch to <= and >= for consistency.
  - Rename Orthodox Easter.

* CHANGES sync

* Add Day after Thanksgiving to US - PA holidays (#675)

* CHANGES sync

* CHANGES sync, pre-commit reviews

* test_ukraine pre-commit fix

* Bump actions/setup-python from 3.1.0 to 4.1.0 (#682)

* Bump pre-commit/action from 2.0.3 to 3.0.0 (#672)

* removed py36 from toml target-version array

* Add Cuba (#678)

authored-by: bthompson <bthompson@pinterest.com>

* CHANGES sync

* Make Colombian holidays preserve historical observation (#676)

Authored-by: bthompson <bthompson@pinterest.com>

* Make Venezuela holidays preserve historical observation (#677)

Authored-by: bthompson <bthompson@pinterest.com>

* CHANGES sync

* black fixes

* removed outdated deprecation warnings

* Drop support for PortugalExt

* Ensure Canada Christmas observed falls after 25 and not before - new version #579

* CHANGES sync

* README sync (support for Cuba)

* Drop support for UK subdivisions as countries (England, Scotland..) (dr-p)
Drop support for IsleOfMan as UK subdivision (dr-p)

* Added support for Python 3.11, improved README badges

* Fixed CD/CI setup.cfg typo

* Added py3.11 to toml config

* Removed py3.11 from setup.cfg due to failing pre-commit checks

* Bump pypa/gh-action-pypi-publish from 1.5.0 to 1.5.1 #686

* Doc example fix (#685)

* added pentecost monday for province of bolzano

source: https://it.wikipedia.org/wiki/Pentecoste

* Whitsun Monday - province of Bolzano - IT (#689)

* Bump actions/setup-python to 4.2.0 (#688)

* v.0.15

* v.0.16 beta init

* Add UK Holiday for Queen Elizabeth II Funeral (#702)

* Add Moldova (#695)

* Add Bolivian holidays (#698)

* CHANGES sync

* Fix NYSE New Year observance for Saturdays. (#696)

* CHANGES sync

* Financial market support review, new method financial_holidays(..) #694

* Add Australia National Day of Mourning and confirmed Grand Final Day date (#699)

* CHANGES sync

* Add queen's funeral holidays for canada (#710)

* CHANGES sync

* New Zealand updates for Queen Elizabeth II mourning + King Charles III (#708, #709)

* Australia - new king updates

* Fix typo in comment for Cuba (#712)

* CHANGES sync - v.0.16 release date, dedication

Co-authored-by: Akos <afurton@apple.com>
Co-authored-by: Akos Furton <furton.akos@bcg.com>
Co-authored-by: Maurizio Montel <mmontel@mmontel.mxp.csb>
Co-authored-by: David Hotham <david.hotham@blueyonder.co.uk>
Co-authored-by: Kate <kate@kgthreads.com>
Co-authored-by: Ark <ark@cho.red>
Co-authored-by: Bailey Thompson <bailey.kyle.thompson@gmail.com>
Co-authored-by: g-gg <52978382+g-gg@users.noreply.github.com>
Co-authored-by: Jacob Punter <54587331+JPunter@users.noreply.github.com>
Co-authored-by: Nikita <theedandroid@gmail.com>
Co-authored-by: Ryan McCrory <ryan.mccrory92@gmail.com>
dr-prodigy added a commit that referenced this issue Nov 13, 2022
* add honduras tests

* add honduras tests

* Add tests for many edge cases

* Add tests for many edge cases

* remove duplicate function

* v.0.15 beta init

* Typechecking (#661)

* typechecking HolidayBase, holidays.utils, miscellaneous typechecking
note: coverage to be extended to other parts of the project code

* Update Ukraine holidays.

  - Add Day of Ukrainian Statehood holiday.
  - Edit Victory Day name.
  - Fix formatting.
  - Update tests for Ukraine holidays.
  - Switch to <= and >= for consistency.
  - Rename Orthodox Easter.

* CHANGES sync

* Add Day after Thanksgiving to US - PA holidays (#675)

* CHANGES sync

* CHANGES sync, pre-commit reviews

* test_ukraine pre-commit fix

* Bump actions/setup-python from 3.1.0 to 4.1.0 (#682)

* Bump pre-commit/action from 2.0.3 to 3.0.0 (#672)

* removed py36 from toml target-version array

* Add Cuba (#678)

authored-by: bthompson <bthompson@pinterest.com>

* CHANGES sync

* Make Colombian holidays preserve historical observation (#676)

Authored-by: bthompson <bthompson@pinterest.com>

* Make Venezuela holidays preserve historical observation (#677)

Authored-by: bthompson <bthompson@pinterest.com>

* CHANGES sync

* black fixes

* removed outdated deprecation warnings

* Drop support for PortugalExt

* Ensure Canada Christmas observed falls after 25 and not before - new version #579

* CHANGES sync

* README sync (support for Cuba)

* Drop support for UK subdivisions as countries (England, Scotland..) (dr-p)
Drop support for IsleOfMan as UK subdivision (dr-p)

* Added support for Python 3.11, improved README badges

* Fixed CD/CI setup.cfg typo

* Added py3.11 to toml config

* Removed py3.11 from setup.cfg due to failing pre-commit checks

* Bump pypa/gh-action-pypi-publish from 1.5.0 to 1.5.1 #686

* Doc example fix (#685)

* added pentecost monday for province of bolzano

source: https://it.wikipedia.org/wiki/Pentecoste

* Whitsun Monday - province of Bolzano - IT (#689)

* Bump actions/setup-python to 4.2.0 (#688)

* v.0.15

* v.0.16 beta init

* Add UK Holiday for Queen Elizabeth II Funeral (#702)

* Add Moldova (#695)

* Add Bolivian holidays (#698)

* CHANGES sync

* Fix NYSE New Year observance for Saturdays. (#696)

* CHANGES sync

* Financial market support review, new method financial_holidays(..) #694

* Add Australia National Day of Mourning and confirmed Grand Final Day date (#699)

* CHANGES sync

* Add queen's funeral holidays for canada (#710)

* CHANGES sync

* New Zealand updates for Queen Elizabeth II mourning + King Charles III (#708, #709)

* Australia - new king updates

* Fix typo in comment for Cuba (#712)

* CHANGES sync - v.0.16 release date, dedication

* Fix Honduras

* Add 2014 test honduras

* Rename Eswatini from Swaziland

* Add import

* Add pre-commit isort hook.

* Run `pre-commit run --all-files`.

* Fix black - isort conflict.

* Revert docs conf.py changes.

* Sort

* Sort

* Introduce special holidays support.

Extend `HolidayBase` in order to make special holidays handling simpler.

* Fix documentation and UK special holidays list.

* Add a test.

* Add Bosnia and Herzegovina holidays.

* Edit Eid ul-Adha holiday logic and improve code readability.

* Improve readability.

* Add more tests.

* Update README.rst

* Change `special_holidays` format.

* Add Liechtenstien holidays and tests.

* Refactor tests.

* Remove empty constructors.

Move country holidays sources/descriptions from comments to docstrings.

* v.0.17 beta init

* Sort holiday names. (#713)

* Sort holiday names.
Order holidays by name when there are multiple holidays on the same date.

* CHANGES sync

* CHANGES sync

* Supported countries no. update, mexico.py permissions fix

* Keep context based imports sorting for `holidays.constants`.

* Fix observed holiday for christmas and boxing day canada (#715)

* CHANGES sync

* .pre-commit-config.yaml update

* Get holidays range type fix

* CHANGES sync

* README.rst: Fix documentation about Portugal subdiv param (#742)

* Bump actions/setup-python from 4.2.0 to 4.3.0 (#740)

Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4.2.0 to 4.3.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](actions/setup-python@v4.2.0...v4.3.0)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fixed incorrect subdivision code (#733)

* CHANGES sync

* Run isort.

* Bug fix of substitute holidays in Japan (#723)

* CHANGES sync

* isort commit

* isort commit

* CHANGES sync #650, #728

* Fix Honduras Morazan weekend bug. (#744)

* CHANGES sync

* README fix for Liechtenstein

* Singapore: Revised Date for Vesak Day in 2023 (#726)

* CHANGES sync

* Update malaysia.py (#736)

fix month for deewali 2022

* CHANGES sync

* README fix: pip install --upgrade (#735)

* Update Ukrainian holidays (#743)

* CHANGES sync

* Redesign special holidays population logic.

* Fix `_populate` docstring.

* README.rst: Remove Alpha-3 code for Bosnia and Herzegovina (#755)

Adding an extra entry like the Alpha-3 code in the countries
table causes render failure

* Added observed holidays for Ukraine (#746)

* Implement 100% test coverage (#747)

* Fix a typo: Liechtenstien -> Liechtenstein. (#752)

* Fixed Easter holidays for Bulgaria (#748)

* CHANGES sync

* pyproject.toml fixed, Ukraine reformatting

* CHANGES sync

* Portugal: add district holidays (#753)

Added holidays for the 18 portuguese districts
Added tests
Updated README.rst

* Import isort reformatting

* Fix Diwali date for 2022. (#754)

* CHANGES sync

* Optimizations for Ireland (#756)

* CHANGES sync

* Remove extra spaces from strings (#759)

* CHANGES sync

* Mexico: optimizations (#760)

* CHANGES sync

* Germany: optimizations (#766)

* China: optimizations (#767)

* CHANGES sync

* Fix a couple of `_populate` related issues.

* United Kingdom: optimizations (#780)

* Ukraine: observed holidays calculation more universal and readable (#776)

* Canada: optimizations, Yukon Heritage Day fix (#775)

* CHANGES sync

* Clean up Ireland tests. (#765)

Remove `print` statement.

* add documentation to _populate (see #704) (#763)

* Fix observance logic for laborable holidays in Uruguay (#758)

* Fix `list_supported_countries` and `list_supported_financial` methods. (#764)

Replace `obj.__base__` with `issubclass`.
Add Isle Of Man alpha-3 code.

* brazil.py: Update SC holiday according 2017 law (#761)

From 2017 onwards if the 11th of August falls on a work day the
holiday is moved to the next Sunday.

Issue: 592

* Added special case on 2022 (#779)

Added special case on 2022 Chinese Mid-Autumn Festival

Added test case on test_hongkong.py

* Remove `assert` from Norway and Sweden. (#771)

Rework all Sundays collection logic (use dateutil.rrule).
Extract repetitive test_sundays code to a separate file.

* South Africa: (#773)

- replace while loops with dateutil logic (#768)
- Queen's Birthday day fix
- observed holidays calculation fix
- added tests

* Replace Python built-in asserts with unittest asserts. (#777)

* CHANGES sync

* Replace while loops with dateutil logic (#768) (#770)

* CHANGES sync

* Lithuania: add the 2nd on November as holiday (#781)

* CHANGES sync

* MyPy implicit optional option

* Update Hong Kong holiday, mid-autumn (#782)

* CHANGES sync

* Sweden: fix Midsummer evening (#783)

* CHANGES sync

* v0.17

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Akos <afurton@apple.com>
Co-authored-by: Akos Furton <furton.akos@bcg.com>
Co-authored-by: Maurizio Montel <mmontel@mmontel.mxp.csb>
Co-authored-by: David Hotham <david.hotham@blueyonder.co.uk>
Co-authored-by: Kate <kate@kgthreads.com>
Co-authored-by: Ark <ark@cho.red>
Co-authored-by: Bailey Thompson <bailey.kyle.thompson@gmail.com>
Co-authored-by: g-gg <52978382+g-gg@users.noreply.github.com>
Co-authored-by: Jacob Punter <54587331+JPunter@users.noreply.github.com>
Co-authored-by: Nikita <theedandroid@gmail.com>
Co-authored-by: Ryan McCrory <ryan.mccrory92@gmail.com>
Co-authored-by: Pedro Baptista <32106544+Nalguedo@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Michael Thessel <der.thes@gmail.com>
Co-authored-by: Sho Hirose <sho.hirose@gmail.com>
Co-authored-by: Mike Borsetti <26698111+mborsetti@users.noreply.github.com>
Co-authored-by: shahonseven <shahonseven@gmail.com>
Co-authored-by: ~Jhellico <KJhellico@users.noreply.github.com>
Co-authored-by: poshingchu <59795066+poshingchu@users.noreply.github.com>
@arkid15r
Copy link
Collaborator

arkid15r commented Feb 3, 2023

Closing this out as the required functionality was added.

@arkid15r arkid15r closed this as completed Feb 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants