𝗦𝗰𝗮𝗿𝗮𝗯 𝗗𝗶𝗮𝗴𝗻𝗼𝘀𝘁𝗶𝗰 𝗙𝗶𝗲𝗹𝗱 𝗧𝗲𝘀𝘁 #𝟬𝟯𝟭
Continuous futures rolls-ന്മേൽ കൂടുതൽ നിയന്ത്രണം QuantConnect Lean-ന് ആവശ്യമായിരുന്നു.
ഉപയോക്താക്കൾ പ്രധാനമായും രണ്ട് പ്രശ്നങ്ങൾ നേരിട്ടിരുന്നു:
- എക്സ്പയറിക്ക് (expiry) മുൻപായി റോൾ ടൈമിംഗ് (roll timing) ക്രമീകരിക്കാൻ അവർക്ക് കഴിഞ്ഞില്ല.
- പ്രത്യേക കോൺട്രാക്ട്-മന്ത് സൈക്കിളുകൾ (contract-month cycles) തിരഞ്ഞെടുക്കാൻ അവർക്ക് കഴിഞ്ഞില്ല.
ഇതൊരു ലളിതമായ ബഗ്ഗ് (bug) അല്ല. ഇതൊരു മാപ്പിംഗ് പോളിസി (mapping policy) പ്രശ്നമാണ്.
ഒരു പുതിയ റോൾ കലണ്ടർ (roll calendar) നിർമ്മിച്ചുകൊണ്ട് ഇത് പരിഹരിക്കാൻ ശ്രമിച്ചാൽ, അത് എൻജിനെ (engine) തകരാറിലാക്കും. മാപ്പിംഗ് ഡാറ്റ ഡ്യൂപ്ലിക്കേറ്റ് ചെയ്താൽ പിശകുകൾ ഉണ്ടാകാൻ സാധ്യതയുണ്ട്. ഒരു മോശം പാച്ച് (patch), ഒരു സ്ട്രാറ്റജി ആഗ്രഹിക്കുന്നതും എൻജിൻ പ്രവർത്തിക്കുന്നതും തമ്മിൽ വ്യത്യാസം (drift) ഉണ്ടാക്കാൻ കാരണമായേക്കാം.
കൃത്യതയാർന്ന ഒരു പരിഹാരമാർഗ്ഗം (surgical repair lane) കണ്ടെത്തുക എന്നതായിരുന്നു ലക്ഷ്യം.
നിലവിലുള്ള മാപ്പിംഗ് അതിർവരമ്പുകൾക്കുള്ളിൽ (mapping boundary) നിന്നുകൊണ്ട് തന്നെയാണ് പരിഹാരം നടപ്പിലാക്കിയിരിക്കുന്നത്. ഞങ്ങൾ ഫ്യൂച്ചേഴ്സ് എൻജിൻ (futures engine) വീണ്ടും എഴുതുന്നില്ല. പകരം, continuous futures mapping കൈകാര്യം ചെയ്യുന്ന രീതി Lean-ൽ വിപുലീകരിക്കുന്നു.
What changed in the PR:
- TradingDaysBeforeExpiry എന്ന മാപ്പിംഗ് മോഡ് ചേർത്തു.
- ഇത് ഉപയോക്താക്കൾക്ക് റോൾ ടൈമിംഗ് ഒരു tradeable-day offset ആയി ക്രമീകരിക്കാൻ അനുവദിക്കുന്നു.
- റോൾ ഓഫ്സെറ്റ് (roll offset) ഇപ്പോൾ subscription, history, universe, mapping-event പാത്തുകളിലൂടെ ലഭ്യമാണ്.
- ഓപ്ഷണൽ ആയ contract-month-cycle walking ചേർത്തു.
- ഇത് ഒരു പൊതുവായ ക്രമത്തിന് (generic sequence) പകരം പ്രത്യേക ഹോൾഡിംഗ് സൈക്കിളുകളെ (holding cycles) പിന്തുണയ്ക്കുന്നു.
- ഡാറ്റാ സോഴ്സ് ഏകീകൃതമായി നിലനിർത്തുന്നതിനായി നിലവിലുള്ള LastTradingDay മാപ്പ് റോകൾ (map rows) തന്നെ വീണ്ടും ഉപയോഗിച്ചു.
പരിഹാരം മാപ്പിംഗ് പോളിസിക്ക് ഉള്ളിൽ തന്നെ പരിമിതപ്പെടുത്തിയതിലൂടെ, ഏത് കോൺട്രാക്റ്റാണ് സജീവമെന്ന കാര്യത്തിൽ എൻജിന്റെ എല്ലാ ഭാഗങ്ങളും ഒരേപോലെ പ്രവർത്തിക്കുന്നുണ്ടെന്ന് ഞങ്ങൾ ഉറപ്പാക്കുന്നു.
The result: പുതിയ സിസ്റ്റങ്ങൾ നിർമ്മിക്കാതെ തന്നെ പുതിയ കഴിവുകൾ നൽകുന്ന ഒരു പരിമിതപ്പെട്ട പരിഹാരമാണിത് (bounded repair). ലോക്കൽ ബിൽഡ് വാലിഡേഷൻ (local build validation) യാതൊരു പിശകുകളും കൂടാതെ വിജയകരമായി പൂർത്തിയായി. ഈ PR ഇപ്പോൾ അപ്സ്ട്രീം റിവ്യൂവിനായി (upstream review) തയ്യാറാണ്.
Optional learning community: https://t.me/GyaanSetuAi