Coverage for src/ifunnel/financial_data_preprocessing/gams_transfer.py: 100%

0 statements  

« prev     ^ index     » next       coverage.py v7.9.2, created at 2025-07-12 09:14 +0000

1# import os 

2# 

3# import gams.transfer as gt 

4# import pandas as pd 

5# from tqdm import tqdm 

6# 

7# 

8# def save_into_gdx(monthly_returns_df): 

9# # Initialize GAMS connection 

10# working_dir = os.getcwd() 

11# 

12# # *** CREATE GDX FILE *** 

13# # Initialization for GAMS version v47 

14# # Documentation: https://www.gams.com/latest/docs/API_PY_GAMSTRANSFER.html#PY_GAMSTRANSFER_INSTALLATION 

15# m = gt.Container(system_directory="/Library/Frameworks/GAMS.framework/Versions/47/Resources/") 

16# 

17# # Sets 

18# asset_set = m.addSet( 

19# "Asset", 

20# records=[a[0] for a in monthly_returns_df.columns], 

21# description="Asset ISIN", 

22# ) 

23# asset_name_set = m.addSet( 

24# "AssetName", 

25# records=[a[1] for a in monthly_returns_df.columns], 

26# description="Asset Name", 

27# ) 

28# date_set = m.addSet( 

29# "Date", 

30# records=[str(date.date()) for date in monthly_returns_df.index], 

31# description="Date", 

32# ) 

33# 

34# # Parameter 

35# # Save weekly returns in a gams needed format 

36# returns_gams = pd.DataFrame(columns=["Date", "Asset", "AssetName", "Return"]) 

37# for date in tqdm(monthly_returns_df.index): 

38# for asset in monthly_returns_df.columns: 

39# return_value = monthly_returns_df.loc[date, asset] 

40# returns_gams.loc[len(returns_gams)] = [ 

41# str(date.date()), 

42# asset[0], 

43# asset[1], 

44# float(return_value), 

45# ] 

46# 

47# m.addParameter( 

48# "AssetReturn", 

49# domain=[date_set, asset_set, asset_name_set], 

50# records=returns_gams, 

51# description="Weekly adjusted returns", 

52# ) 

53# 

54# m.write(os.path.join(os.path.dirname(working_dir), "financial_data/input_data.gdx")) 

55# 

56# 

57# if __name__ == "__main__": 

58# monthly_returns = pd.read_parquet( 

59# os.path.join( 

60# os.path.dirname(os.getcwd()), 

61# "financial_data/all_etfs_rets_2024.parquet.gzip", 

62# ) 

63# ) 

64# 

65# save_into_gdx(monthly_returns)