MSMP.msmp_to_dic 轉成回測用格式

將多個 DataFrame(以 dataframes 傳入)依證券代碼拆分,整理成字典格式,方便後續個股逐筆處理。同時過濾掉停牌日期的資料,並附加調整後的開盤與收盤價格。
轉成符合backtest的數據格式

Example

input
adjclose = api.MSMP.日_K.adj_Close 
con1 = adjclose  >100 
con2 = api.MSMP.月_營收.YoY >10 
con3 = adjclose>adjclose.rolling(5).mean() 
con4 = adjclose.shift(1)<adjclose.shift(1).rolling(5).mean() 
pos = con1&con2&con3&con4 
Open = api.MSMP.日_K.Open 
qty = np.floor(1000000/(Open*1000))*1000
dic = api.MSMP.msmp_to_dic(['sig','qty'] ,pos ,qty)
dic['8054']
output
date id sig qty adjclose adjopen adjhigh adjlow
0 2022-03-21 8054 False 17000 51.1615 52.4521 53.0052 51.1615
1 2022-03-22 8054 False 18000 50.7006 51.0694 51.8990 50.5163
2 2022-03-23 8054 False 17000 55.7707 51.3459 55.7707 51.2537
3 2022-03-24 8054 False 16000 58.8127 54.8489 59.2736 53.8349
4 2022-03-25 8054 False 15000 54.2036 58.2596 58.3518 54.2036
... ... ... ... ... ... ... ... ...
995 2026-04-28 8054 False 9000 109.5000 107.5000 111 107
996 2026-04-29 8054 False 9000 107.5000 107.5000 110.5000 106.5000
997 2026-04-30 8054 False 9000 106 108 111 106
998 2026-05-04 8054 False 9000 106 107.5000 107.5000 103
999 2026-05-05 8054 True 9000 112 106.5000 112 106.5000

Attribute

參數 資料型態 說明
names list 對應每個dataframe的欄位名稱。例如:['sig', 'qty']
dataframes kgi.msmp.dataframe.ProboDataFrame 多檔股票多個時間的資料表,index 是日期,columns 是股票代碼。可以放1個或多個。
startday object 起始日,格式為YYYYMMDD

Return Attribute

以證券代碼(symbol)為鍵,對應值為該證券的 pandas.DataFrame
dic{symbol1:dataFrame1, symbol2:dataFrame2,….}

DataFrame 欄位說明:

欄位名稱 資料型態 說明
date datetime64 日期
id object 股票代號
sig bool 是longsig設定的欄位
值為True表示進場信號,False為出場信號
qty int 進場時的進場股數
adjclose float 調整後收盤價
adjopen float 調整後開盤價
adjhigh float 調整後最高價
adjlow float 調整後最低價
- 其他由 names 參數指定的欄位名稱,對應各資料表中欄位資料