(prod: 3217311 ) 2026-01-03 17:42:34 [INFO] make_extend_EG.py:278 tradelist 
(prod: 3217311 ) 2026-01-03 17:42:34 [INFO] make_extend_EG.py:141 [periscope] Found required periscope file for signalDate=2026-01-01: /mnt/signal/simulation/EGProd1/web_status/20260101/eod/create_periscope_position_20260101.3130965.csv 
(prod: 3217311 ) 2026-01-03 17:42:34 [INFO] Simulation.py:473 Simulation.py:loadPositionFile (/mnt/signal/simulation/EGProd1/trading_portfolio_positions_pretrade_20260102.plz4) 
(prod: 3217311 ) 2026-01-03 17:42:34 [INFO] EG.py:513 exportTradeList positions for EG len:1032 tradeDate:2026-01-02 
(prod: 3217311 ) 2026-01-03 17:42:34 [INFO] EG.py:310 HK names (183) 
(prod: 3217311 ) 2026-01-03 17:42:34 [INFO] EG.py:312 Tokyo names (272) 
(prod: 3217311 ) 2026-01-03 17:42:34 [INFO] EG.py:314 Taiwan names (75) 
(prod: 3217311 ) 2026-01-03 17:42:34 [INFO] EG.py:316 IN names (0)  USD(0.0) 
(prod: 3217311 ) 2026-01-03 17:42:34 [INFO] EG.py:318 NS names (0)  USD(0.0) 
(prod: 3217311 ) 2026-01-03 17:42:34 [INFO] EG.py:320 NZ names (outpath4)  USD(172571.48592600002) 
(prod: 3217311 ) 2026-01-03 17:42:34 [INFO] EG.py:322 PH names (0)  USD(0.0) 
(prod: 3217311 ) 2026-01-03 17:42:34 [INFO] EG.py:324 dch::EG.py.exportTradeList  proposed Notional (41722804.572823) 
(prod: 3217311 ) 2026-01-03 17:42:34 [INFO] EG.py:212 dframe has ric nans ct:0 
(prod: 3217311 ) 2026-01-03 17:42:34 [INFO] make_extend_EG.py:266 [periscope][2026-01-02] PRE rows=1032 sum=1222513 | PER rows=126 sum=-2299151 | POST rows=1094 sum=-1076638 | CHECK post==pre+per -> True 
(prod: 3217311 ) 2026-01-03 17:42:34 [INFO] make_extend_EG.py:252 [periscope] writing /mnt/signal/simulation/EGProd1/TradeLists/pre_periscope_tgts_20260102.csv rows=1032 
(prod: 3217311 ) 2026-01-03 17:42:34 [INFO] make_extend_EG.py:255 [periscope] writing /mnt/signal/simulation/EGProd1/TradeLists/periscope_tgts_20260102.csv rows=126 
(prod: 3217311 ) 2026-01-03 17:42:34 [INFO] make_extend_EG.py:258 [periscope] writing /mnt/signal/simulation/EGProd1/TradeLists/post_periscope_tgts_20260102.csv rows=1094 
(prod: 3217311 ) 2026-01-03 17:42:34 [INFO] EG.py:284 EG.py writeTargetsFile wrote(/mnt/signal/simulation/EGProd1/TradeLists/targets_model.20260102.csv) length was 1094 
(prod: 3217311 ) 2026-01-03 17:42:34 [INFO] Simulation.py:473 Simulation.py:loadPositionFile (/mnt/signal/simulation/EGProd1/trading_portfolio_positions_pretrade_20260102.plz4) 
(prod: 3217311 ) 2026-01-03 17:42:35 [INFO] EG.py:445 borrows len 11554 
(prod: 3217311 ) 2026-01-03 17:42:37 [INFO] DbConn.py:36  SELECT MAX(queryDate) AS queryDate FROM ( SELECT MIN(effectiveDate) AS queryDate FROM bloomberg_hk_lot_size        UNION        SELECT MAX(effectiveDate) AS queryDate FROM bloomberg_hk_lot_size WHERE effectiveDate<='2025-12-31') AS x 
(prod: 3217311 ) 2026-01-03 17:42:37 [INFO] DbConn.py:36  SELECT assetKey, bbgLotSize AS lotSize FROM bloomberg_hk_lot_size WHERE effectiveDate='2022-06-18' 
(prod: 3217311 ) 2026-01-03 17:42:37 [INFO] EG.py:496 writing detailed list to /mnt/signal/simulation/EGProd1/details/detailed_tradelist_20260102.csv contains 1032 lines 
(prod: 3217311 ) 2026-01-03 17:42:37 [INFO] WebStatus.py:1252 targets_ran reporting to /mnt/signal/simulation/EGProd1/web_status/20260102 
(prod: 3217311 ) 2026-01-03 17:42:37 [INFO] category.py:234 Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting. 
(prod: 3217311 ) 2026-01-03 17:42:37 [INFO] category.py:234 Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting. 
(prod: 3217311 ) 2026-01-03 17:43:29 [INFO] WebStatus.py:630 Limited  data available for positive_alpha NZ 
(prod: 3217311 ) 2026-01-03 17:43:30 [INFO] DbConn.py:36 select A.name, B.code, B.date_, B.exchcode, C.isoctry  from sdinfo_v A, sddates_v B, sdexchinfo_v C  where A.code = B.code  and B.exchcode = C.exchcode  and C.isoctry = 'MY' and B.date_ = '2026-01-02' 
(prod: 3217311 ) 2026-01-03 17:43:30 [INFO] DbConn.py:36 select A.name, B.code, B.date_, B.exchcode, C.isoctry  from sdinfo_v A, sddates_v B, sdexchinfo_v C  where A.code = B.code  and B.exchcode = C.exchcode  and C.isoctry = 'XH' and B.date_ = '2026-01-02' 
(prod: 3217311 ) 2026-01-03 17:43:31 [INFO] DbConn.py:36 select A.name, B.code, B.date_, B.exchcode, C.isoctry  from sdinfo_v A, sddates_v B, sdexchinfo_v C  where A.code = B.code  and B.exchcode = C.exchcode  and C.isoctry = 'IN' and B.date_ = '2026-01-02' 
(prod: 3217311 ) 2026-01-03 17:43:31 [INFO] DbConn.py:36 select A.name, B.code, B.date_, B.exchcode, C.isoctry  from sdinfo_v A, sddates_v B, sdexchinfo_v C  where A.code = B.code  and B.exchcode = C.exchcode  and C.isoctry = 'TW' and B.date_ = '2026-01-02' 
(prod: 3217311 ) 2026-01-03 17:43:31 [INFO] DbConn.py:36 select A.name, B.code, B.date_, B.exchcode, C.isoctry  from sdinfo_v A, sddates_v B, sdexchinfo_v C  where A.code = B.code  and B.exchcode = C.exchcode  and C.isoctry = 'HK' and B.date_ = '2026-01-02' 
(prod: 3217311 ) 2026-01-03 17:43:31 [INFO] DbConn.py:36 select A.name, B.code, B.date_, B.exchcode, C.isoctry  from sdinfo_v A, sddates_v B, sdexchinfo_v C  where A.code = B.code  and B.exchcode = C.exchcode  and C.isoctry = 'CN' and B.date_ = '2026-01-02' 
(prod: 3217311 ) 2026-01-03 17:43:31 [INFO] DbConn.py:36 select A.name, B.code, B.date_, B.exchcode, C.isoctry  from sdinfo_v A, sddates_v B, sdexchinfo_v C  where A.code = B.code  and B.exchcode = C.exchcode  and C.isoctry = 'JP' and B.date_ = '2026-01-02' 
(prod: 3217311 ) 2026-01-03 17:43:31 [INFO] DbConn.py:36 select A.name, B.code, B.date_, B.exchcode, C.isoctry  from sdinfo_v A, sddates_v B, sdexchinfo_v C  where A.code = B.code  and B.exchcode = C.exchcode  and C.isoctry = 'TH' and B.date_ = '2026-01-02' 
(prod: 3217311 ) 2026-01-03 17:43:31 [INFO] DbConn.py:36 select A.name, B.code, B.date_, B.exchcode, C.isoctry  from sdinfo_v A, sddates_v B, sdexchinfo_v C  where A.code = B.code  and B.exchcode = C.exchcode  and C.isoctry = 'AU' and B.date_ = '2026-01-02' 
(prod: 3217311 ) 2026-01-03 17:43:31 [INFO] DbConn.py:36 select A.name, B.code, B.date_, B.exchcode, C.isoctry  from sdinfo_v A, sddates_v B, sdexchinfo_v C  where A.code = B.code  and B.exchcode = C.exchcode  and C.isoctry = 'PH' and B.date_ = '2026-01-02' 
(prod: 3217311 ) 2026-01-03 17:43:31 [INFO] DbConn.py:36 select A.name, B.code, B.date_, B.exchcode, C.isoctry  from sdinfo_v A, sddates_v B, sdexchinfo_v C  where A.code = B.code  and B.exchcode = C.exchcode  and C.isoctry = 'NZ' and B.date_ = '2026-01-02' 
(prod: 3217311 ) 2026-01-03 17:43:31 [INFO] DbConn.py:36 select A.name, B.code, B.date_, B.exchcode, C.isoctry  from sdinfo_v A, sddates_v B, sdexchinfo_v C  where A.code = B.code  and B.exchcode = C.exchcode  and C.isoctry = 'KR' and B.date_ = '2026-01-02' 
(prod: 3217311 ) 2026-01-03 17:43:31 [INFO] DbConn.py:36 select A.name, B.code, B.date_, B.exchcode, C.isoctry  from sdinfo_v A, sddates_v B, sdexchinfo_v C  where A.code = B.code  and B.exchcode = C.exchcode  and C.isoctry = 'ID' and B.date_ = '2026-01-02' 
(prod: 3217311 ) 2026-01-03 17:43:31 [INFO] DbConn.py:36 select A.name, B.code, B.date_, B.exchcode, C.isoctry  from sdinfo_v A, sddates_v B, sdexchinfo_v C  where A.code = B.code  and B.exchcode = C.exchcode  and C.isoctry = 'SG' and B.date_ = '2026-01-02' 
Running exportTradeList for tradeDate=2026-01-02
Traceback (most recent call last):
  File "/mnt/nfs/home/prod/gqr/model/model/utils/test.py", line 19, in <module>
    main()
  File "/mnt/nfs/home/prod/gqr/model/model/utils/test.py", line 13, in main
    exportTradeList(tradeDate)
  File "/home/prod/gqr/model/model/utils/make_extend_EG.py", line 324, in exportTradeList
    WebStatus.post_targets_web_report(detail_df, simConfig, tradeDate)
  File "/home/prod/gqr/model/model/reporting/WebStatus.py", line 1304, in post_targets_web_report
    cls.raise_error_on_holiday_trades(trade_date, detail_df)
  File "/home/prod/gqr/model/model/reporting/WebStatus.py", line 1234, in raise_error_on_holiday_trades
    raise ValueError(f"Trades found on holiday in countries: {matched_countries.tolist()}")
ValueError: Trades found on holiday in countries: ['CN', 'JP']
