Request to review the simple query that client wrote & optimize it
ds = dsweb.DataClient(username = auth_info['secrets'][1]['key'], password = auth_info['secrets'][1]['value'])
# Golbal parameters
start_date = '2008-01-01'
# Listing of instruments per dataset
instruments = {
'energy' : 'ETQC.01,LNGASIA,NATGAS1,LLCC.01',
'FX' : 'USAFGHN,TDALLSP,TDDZDSP,TDAOASP,USARGEN,USARMEN,TDAWGSP,MSERAUD,TDAZNSP,BAHRDI$,USBAHDN,BANTAK$,TDBBDSP,TDBYNSP,TDBZDSP,BERMDO$,BOLIPE$,TDBAMSP,BOTSWPI,USBRAZL,BRUNDO$,BLUSDSP,TDBIFSP,TDXPFSP,TDKHRSP,MSERCAD,TDCVESP,CAYIDO$,TDXAFSP,CDIVCF$,USCHILP,USCHINY,USCOLMP,TDKMFSP,TDCDFSP,TDCRCSP,TDCUPSP,USCZECK,MSERDKK,TDDJFSP,TDDOPSP,TDXCDSP,TDEGPSP,TDERNSP,TDETBSP,EUDOLLR,TDFJDSP,TDGMDSP,TDGELSP,TDGHSSP,TDGTQSP,TDGNFSP,USGUYAN,TDHTGSP,TDHNLSP,MSERHKD,HNUSDNB,ICUSDSP,USINDNR,USINDON,TDIRRSP,TDIQDSP,ISUSDSP,TDJMDSP,MSERJPY,USJORDR,TDKZTSP,TDKESSP,USKUWTD,TDKGSSP,TDLAKSP,TDLBPSP,TDLRDSP,TDLYDSP,TDMOPSP,TDMGASP,TDMWKSP,USMALAY,TDMVRSP,TDMRUSP,TDMURSP,USMEXPF,TDMDLSP,TDMNTSP,MOROCD$,TDMZNSP,TDMMKSP,TDNADSP,TDNPRSP,TDANGSP,TDUSESP,MSERNZD,TDNIOSP,NIGNAI$,TDMKDSP,MSERNOK,TDOMRSP,USPAKIS,PAPUAK$,TDPYGSP,USPERUI,PHUSDSP,USPOLZL,TDQARSP,TDRONSP,RSUSD.X,TDRWFSP,WESTSAI,TDSTNSP,USSAUDR,TDRSDSP,TDSCRSP,MSERSGD,SOLOMOI,TDSOSSP,BBZARSP,KOUSDSP,SSPUSSP,SPEDRAW,MSERLKR,TDSDGSP,TDUSRDP,TDSZLSP,MSERSEK,MSERCHF,TDSYPSP,USTAIWD,TAJIKS$,TDTZSSP,USTHAIB,TONGAPI,TDTTDSP,TDTNDSP,TKUSDSP,TDTMMSP,TDUGXSP,TDUAHSP,USUTDAD,UKDOLLR,USURUGP,TDUZSSP,VANUAT$,USVENBS,TDVNDSP,YEMENR$,TDZMKSP,TDZWDSP,USG6WIC',
'stocks' : "XGLFLD$,S&PCOMP,MSWRLD$,MSEMKF$,MSEROP$,MSEAFE$,MSPACF$,S&PCOMP,DAXINDX,FTSE100,FRCAC40,HNGKNGI,KORCOMP,CHSASHR"
}
# Collecting data
data = {}
missing_indicators = {}
for ds_name in instruments.keys():
print(ds_name)
if len(instruments[ds_name].split(",")) <= 50:
data[ds_name] = ds.get_data(tickers=instruments[ds_name], start=start_date, freq='D')
else:
instru_split = [instruments[ds_name].split(",")[i:i + 50] for i in range(0, len(instruments[ds_name].split(",")), 50)]
df_list = []
for instru_chunk in instru_split:
df_list.append(ds.get_data(tickers=",".join(instru_chunk), start=start_date, freq='D'))
data[ds_name] = pd.concat(df_list, axis = 1)
# Checking missing indicators
instrument_requested = instruments[ds_name].split(",")
instruments_covered = data[ds_name].columns.get_level_values('Instrument')
missing_indicators[ds_name] = list(set(instrument_requested) - set(instruments_covered))