將多個 DataFrame(以 dataframes 傳入)依標的代碼拆分,整理成字典格式,方便後續個股逐筆處理。同時過濾掉停牌日期的資料,並附加調整後的開盤與收盤價格。
轉成符合backtest的數據格式
con1 =api.USMSMP.季財報_財務指標.股價淨值比>2
con2 = api.USMSMP.季營收.QoQ>20
Close = api.USMSMP.日_K.Close
con3 = (Close>10) &(Close<100)
pos = con1 &con2 &con3
qty = np.floor(100/Close)
dic = api.USMSMP.msmp_to_dic(['sig','qty'],pos,qty)
dic['UMC']
| date | id | sig | qty | Close | Open | |
|---|---|---|---|---|---|---|
| 0 | 2021-08-05 | UMC | False | 8 | 11.5500 | 11.4200 |
| 1 | 2021-08-06 | UMC | False | 8 | 11.3300 | 11.2600 |
| 2 | 2021-08-09 | UMC | False | 8 | 11.2000 | 11.2600 |
| 3 | 2021-08-10 | UMC | False | 9 | 10.8300 | 10.9000 |
| 4 | 2021-08-11 | UMC | False | 9 | 10.8400 | 10.9100 |
| ... | ||||||
| 995 | 2025-07-24 | UMC | False | 13 | 7.3200 | 7.4600 |
| 996 | 2025-07-25 | UMC | False | 13 | 7.3000 | 7.2800 |
| 997 | 2025-07-28 | UMC | False | 13 | 7.2000 | 7.3000 |
| 998 | 2025-07-29 | UMC | False | 14 | 7.1200 | 7.1900 |
| 999 | 2025-07-30 | UMC | True | 14 | 7.1000 | 7.0300 |
| 參數 | 資料型態 | 說明 |
|---|---|---|
| names | list | 對應每個dataframe的欄位名稱。例如:['sig', 'qty'] |
| dataframes | kgi.msmp.dataframe.ProboDataFrame | 多檔股票多個時間的資料表,index 是日期,columns 是股票代碼。可以放1個或多個。 |
| startday | object | 起始日,格式為YYYYMMDD |
以證券代碼(symbol)為鍵,對應值為該證券的 pandas.DataFrame
dic{symbol1:dataFrame1, symbol2:dataFrame2,….}
DataFrame 欄位說明:
| 欄位名稱 | 資料型態 | 說明 |
|---|---|---|
| date | datetime64 | 日期 |
| id | object | 股票代號 |
| sig | bool |
是longsig設定的欄位 值為True表示進場信號,False為出場信號 |
| qty | int | 進場時的進場股數 |
| close | float | 收盤價 |
| open | float | 開盤價 |