nseeod
ExpiryDay Mismatch
Good it is time add more knowledge in NSEEod
from September 1, 2025 NSE Changed it's Expiry Both weekly and monthly contracted from Thursday to Tuesday
(ie Before September 1, 2025 Last Thursday Was Monthly Expiry there after last Tuesday of month become Monthly Expiry)
in Most cases based pn Monthly Expiries Continues futures Calculated.)
if ExpiryDay is holiday then mostly previous Trading day become ExpiryDay
Some Exception cases When NSE Announces Holiday of a Expiry Day (even though many Contracts Traded based on that Expiry day)
NSE might change expiry to prior day
For Example
2023-06-28 and 2023-06-29 is right Example
on such Cases 2023-06-29 *** MUST Be Holiday*** if these types Expiry found do following things
1.) First check On 2023-06-29 NIFTY SPOT Traded or not(Masid 1 and most actively trade contract)
if not traded Then add 2023-06-29 in holidays list (postgres Table) then proceed to Step 2 if Not Then raise Bug
Step 2 Then merge masid 's contract's Having Expiry Date with 2023-06-29 to 2023-06-28 (ALL FNO Contracts) this affects records in scr_nsefo_eod and parquet basket
Step 3 Once Step2 done then Records with Edate 2023-06-29 would become orphan we can safely remove these records
Pls add this knowledge in both NSEEOD and NSEIEOD folders
Now write a function That Deducts these types of Expiries in scr_master
then fix that
after that we can run build_cfut() to get accurate data
Banknifty Expiry correction
In 2014 All contracts marked as 2014-02-26 so We can convert from 2014-02-27 to 2014-02-26 (both scr_nsefo_eod and parquet basket)
So confirmed Holidays we can remove safely contracts masid(after converting)
Contracts of MIDCPNIFTY and NIFTYNXT50 not actively traded so we can ignore mismatch of this dates
for Bank nifty Pls Implement as per below Table(I have check with NSE web site )
Keep Remove 2024-03-27 2024-03-28 2024-04-24 2024-04-25 2025-01-30 2025-01-29 2025-02-27 2025-02-26 2025-03-27 2025-03-26