15 July 2024

 def weekly(data):

logic = {'Index'  : 'first',

         'Prev_Close'  : 'first',

         'Open'  : 'first',

         'High'  : 'max',

         'Low'  : 'min',

         'Close'   : 'last',

         'TurnOver_Cr' : 'sum',

         'DMA20' : 'last',

         'DMA50' : 'last',

         'DMA200' : 'last',

         'C20DMADIFF' : 'last',

         'C200DMADIFF' : 'last',

         '3MDRET' : 'last',

         '1YDRET' : 'last',

         'Date': 'first',

         }

data = data.groupby([data['Date'].dt.year, data['Date'].dt.isocalendar().week]).agg(logic)

data = data.replace(["Init"], "0")

data['Week_Ret'] = data.apply(lambda row: DIFF_PERC (row.Close,row.Prev_Close), axis=1)

data.set_index('Date', inplace=True)

return data


COLUMN_NAMES= ['Date','Index','Prev_Close','Open','High','Low','Close','TurnOver_Cr','DMA20','DMA50','DMA200','C20DMADIFF','C200DMADIFF','3MDRET','1YDRET','Week_Ret']



dfd = pd.DataFrame(index=[0])


dfd=pd.DataFrame(columns=COLUMN_NAMES)



dfd.to_csv('idx-weekly.csv', mode='w', index=False, header=True)


print("Looping for Weekly Info")

print()



for Index in symbols['Index']:

    df = ixdf[(ixdf.Index == Index)]

    data = weekly(df)

    data.to_csv('idx-weekly.csv', mode='a', index=True, header=False)


print("Completed")

print()