SHL github project: uat_shl

  • training module: shl_tm

  • prediction module: shl_pm

  • simulation module: shl_sm

  • misc module: shl_mm

data feeds:

  • historical bidding price, per second, time series

  • live bidding price, per second, time series

parameter lookup table: python dictionary

  • parm_si (seasonality index per second)

  • parm_month (parameter like alpha, beta, gamma, etc. per month)


In [1]:
%matplotlib inline
import matplotlib.pyplot as plt

In [2]:
import pandas as pd

Read raw data


In [3]:
df_history_ts_process = pd.read_csv('data/history_ts.csv') 
df_history_ts_process.tail()


Out[3]:
ccyy-mm time bid-price ref-price
1886 2017-07 11:29:56 92100 89800
1887 2017-07 11:29:57 92100 89800
1888 2017-07 11:29:58 92100 89800
1889 2017-07 11:29:59 92200 89800
1890 2017-07 11:30:00 92200 89800

In [4]:
df_history_table_process = pd.read_csv('data/history_table.csv') 
df_history_table_process.tail()


Out[4]:
ccyy-mm volume-plate deal-price-low deal-price-avg deal-early-second volume-bidder
26 2017-03 10356 87800 87916 55 262010
27 2017-04 12196 89800 89850 59 252273
28 2017-05 10316 90100 90209 55 270197
29 2017-06 10312 89400 89532 45 244349
30 2017-07 10325 92200 92250 57 269189

In [5]:
df_parm_si = pd.read_csv('data/parm_si.csv') 
# print(df_parm_si[(df_parm_si['ccyy-mm'] == '2017-07') & (df_parm_si['time'] == '11:29:00')].iloc[0]['si'])
df_parm_si.tail()


Out[5]:
ccyy-mm time si
2191 2017-12 11:29:56 1.0
2192 2017-12 11:29:57 1.0
2193 2017-12 11:29:58 1.0
2194 2017-12 11:29:59 1.0
2195 2017-12 11:30:00 1.0

In [6]:
df_parm_month = pd.read_csv('data/parm_month.csv') 
# print(df_parm_month[(df_parm_month['ccyy-mm'] == '2017-07') & (df_parm_month['time'] == '11:29:00')].iloc[0]['di'])
df_parm_month.tail()


Out[6]:
ccyy-mm time alpha beta gamma sec57-weight month-weight short-weight direction di
67 2020-08 11:29:00 0.5 0.5 0.5 0.5 0.9 0.125 -1 300
68 2020-09 11:29:00 0.5 0.5 0.5 0.5 0.9 0.125 -1 300
69 2020-10 11:29:00 0.5 0.5 0.5 0.5 0.9 0.125 -1 300
70 2020-11 11:29:00 0.5 0.5 0.5 0.5 0.9 0.125 -1 300
71 2020-12 11:29:00 0.5 0.5 0.5 0.5 0.9 0.125 -1 300

Initialization


In [7]:
# function to fetch Seasonality-Index
def fetech_si(ccyy_mm, time, df_parm_si):
#     return df_parm_si[(df_parm_si['ccyy-mm'] == '2017-09') & (df_parm_si['time'] == '11:29:00')]
    return df_parm_si[(df_parm_si['ccyy-mm'] == ccyy_mm) & (df_parm_si['time'] == time)].iloc[0]['si']

In [8]:
# function to fetch Dynamic-Increment
def fetech_di(ccyy_mm, df_parm_month):
#     print(df_parm_month[df_parm_month['ccyy-mm'] == '2017-07'].iloc[0]['di'])
    return df_parm_month[df_parm_month['ccyy-mm'] == ccyy_mm].iloc[0]['di']

In [9]:
def get_previous_n_sec_time_as_str(df_time_field, n):
    return str((pd.to_datetime(df_time_field, format='%H:%M:%S') - pd.Timedelta(seconds=n)).time())
# print(get_previous_n_sec_time_as_str('11:29:57',3))

def get_future_n_sec_time_as_str(df_time_field, n):
    return str((pd.to_datetime(df_time_field, format='%H:%M:%S') - pd.Timedelta(seconds=-n)).time())
# print(get_future_n_sec_time_as_str('11:29:57',3))

In [ ]:


In [19]:
# which month to predict?
global_parm_ccyy_mm = '2017-07' 

# create global base price
global_parm_base_price = 10000000

# create predictino results dataframe: shl_pm
# df_shl_pm = pd.DataFrame()

global_parm_dynamic_increment = fetech_di(global_parm_ccyy_mm, df_parm_month)

global_parm_alpha = df_parm_month[df_parm_month['ccyy-mm'] == global_parm_ccyy_mm].iloc[0]['alpha']
global_parm_beta  = df_parm_month[df_parm_month['ccyy-mm'] == global_parm_ccyy_mm].iloc[0]['beta']
global_parm_gamma = df_parm_month[df_parm_month['ccyy-mm'] == global_parm_ccyy_mm].iloc[0]['gamma']
global_parm_sec57_weight = df_parm_month[df_parm_month['ccyy-mm'] == global_parm_ccyy_mm].iloc[0]['sec57-weight']
global_parm_month_weight = df_parm_month[df_parm_month['ccyy-mm'] == global_parm_ccyy_mm].iloc[0]['month-weight']
global_parm_short_weight = df_parm_month[df_parm_month['ccyy-mm'] == global_parm_ccyy_mm].iloc[0]['short-weight']

global_parm_short_weight_misc = 0

print('=================================================')
print('  Global Parameters for Month : %s' % global_parm_ccyy_mm)
print('-------------------------------------------------')

print('global_parm_dynamic_increment : %d' % global_parm_dynamic_increment)

print('global_parm_alpha             : %0.15f' % global_parm_alpha) # used in forecasting
print('global_parm_beta              : %0.15f' % global_parm_beta)  # used in forecasting
print('global_parm_gamma             : %0.15f' % global_parm_gamma) # used in forecasting
print('global_parm_sec57_weight      : %f' % global_parm_sec57_weight) # used in training a model
print('global_parm_month_weight      : %f' % global_parm_month_weight) # used in training a model
print('global_parm_short_weight      : %f' % global_parm_short_weight) # used in training a model
print('=================================================')

# plot seasonality index
# print(df_parm_si[(df_parm_si['ccyy-mm'] == '2017-07')]['si'])
plt.figure(figsize=(6,3))
plt.plot(df_parm_si[(df_parm_si['ccyy-mm'] == '2017-07')]['si'])


=================================================
  Global Parameters for Month : 2017-07
-------------------------------------------------
global_parm_dynamic_increment : 300
global_parm_alpha             : 0.642332134767631
global_parm_beta              : 0.230274892614982
global_parm_gamma             : 0.218044289515065
global_parm_sec57_weight      : 0.500000
global_parm_month_weight      : 0.900000
global_parm_short_weight      : 0.125000
=================================================
Out[19]:
[<matplotlib.lines.Line2D at 0x7fe8b6d98080>]

In [ ]:

Start of shl_sm


In [25]:
# 11:29:00~11:29:50

global_parm_short_weight_misc = 0

for i in range(1830, 1830+51): # use July 2015 data as simulatino
    print('\n<<<< Record No.: %5d >>>>' % i)
    print(df_history_ts_process['ccyy-mm'][i]) # format: ccyy-mm
    print(df_history_ts_process['time'][i]) # format: hh:mm:ss
    print(df_history_ts_process['bid-price'][i]) # format: integer
#     print(df_history_ts_process['ref-price'][i])
    
    # capture & calculate 11:29:00 bid price - 1 = base price
    if df_history_ts_process['time'][i] == '11:29:00':
        global_parm_base_price = df_history_ts_process['bid-price'][i] -1 
        print('#### global_parm_base_price : %d ####' % global_parm_base_price)

        
    print('---- Pre-Process ---')
    # pre-process: ccyy-mm-hh:mm:ss
    f_actual_datetime = df_history_ts_process['ccyy-mm'][i] + ' ' + df_history_ts_process['time'][i]
    f_actual_price4pm = df_history_ts_process['bid-price'][i] -  global_parm_base_price
    print('#### f_actual_datetime   : %s ####' %  f_actual_datetime)
    print('#### f_actual_price4pm   : %d ####' % f_actual_price4pm)
    
    # get Seasonality-Index
    f_actual_si = fetech_si(df_history_ts_process['ccyy-mm'][i]
                                         ,df_history_ts_process['time'][i]
                                         ,df_parm_si)
    print('#### f_actual_si         : %0.10f ####' %  f_actual_si)
    f_1_step_si = fetech_si(df_history_ts_process['ccyy-mm'][i]
                                         ,df_history_ts_process['time'][i+1]
                                         ,df_parm_si)
    print('#### f_1_step_si         : %0.10f ####' %  f_1_step_si)
    # get de-seasoned price: price4pmsi
    f_actual_price4pmsi = f_actual_price4pm / f_actual_si
    print('#### f_actual_price4pmsi : %0.10f ####' % f_actual_price4pmsi)
    


    if df_history_ts_process['time'][i] == '11:29:00':
        df_shl_pm = pd.DataFrame() # initialize prediction dataframe at 11:29:00
        print('---- call predicitno function shl_pm ---- %s' % df_history_ts_process['time'][i])
        f_1_step_pred_les_level = f_actual_price4pmsi
        f_1_step_pred_les_trend = 0
        f_1_step_pred_les = f_1_step_pred_les_level + f_1_step_pred_les_trend
        f_1_step_pred_les_misc = 0
#         f_1_step_pred_price_inc = (f_1_step_pred_les + f_1_step_pred_les_misc) * f_actual_si
        f_1_step_pred_price_inc = (f_1_step_pred_les + f_1_step_pred_les_misc) * f_1_step_si
        f_1_step_pred_price = f_1_step_pred_price_inc + global_parm_base_price
        f_1_step_pred_price_rounded = round(f_1_step_pred_price/100, 0) * 100
        f_1_step_pred_dynamic_increment = global_parm_dynamic_increment
        f_1_step_pred_set_price_rounded = f_1_step_pred_price_rounded + f_1_step_pred_dynamic_increment
        f_current_step_pred_les = f_1_step_pred_les
        f_current_step_pred_les_misc = f_1_step_pred_les_misc
        f_current_step_pred_price_inc = f_1_step_pred_price_inc
        f_current_step_pred_price = f_1_step_pred_price
        f_current_step_pred_price_rounded = f_1_step_pred_price_rounded
        f_current_step_pred_dynamic_increment = f_1_step_pred_dynamic_increment # +200 or + 300
        f_current_step_pred_set_price_rounded = f_1_step_pred_set_price_rounded
        f_current_step_error = f_current_step_pred_price_inc - f_actual_price4pm # current second forecast error
    else:
        previous_time = get_previous_n_sec_time_as_str(df_history_ts_process['time'][i], 1)
        previous_pred_les_level = df_shl_pm[(df_shl_pm['ccyy-mm'] == df_history_ts_process['ccyy-mm'][i]) \
                                            & (df_shl_pm['time'] ==previous_time)].iloc[0]['f_1_step_pred_les_level']
        print('     previous_pred_les_level : %f' % previous_pred_les_level)
        
        previous_pred_les_trend = df_shl_pm[(df_shl_pm['ccyy-mm'] == df_history_ts_process['ccyy-mm'][i]) \
                                            & (df_shl_pm['time'] ==previous_time)].iloc[0]['f_1_step_pred_les_trend']
        print('     previous_pred_les_trend : %f' % previous_pred_les_trend)
        
        f_current_step_pred_les = df_shl_pm[(df_shl_pm['ccyy-mm'] == df_history_ts_process['ccyy-mm'][i]) \
                                                    & (df_shl_pm['time'] ==previous_time)].iloc[0]['f_1_step_pred_les']
        f_current_step_pred_les_misc = df_shl_pm[(df_shl_pm['ccyy-mm'] == df_history_ts_process['ccyy-mm'][i]) \
                                                    & (df_shl_pm['time'] ==previous_time)].iloc[0]['f_1_step_pred_les_misc']
        f_current_step_pred_price_inc = df_shl_pm[(df_shl_pm['ccyy-mm'] == df_history_ts_process['ccyy-mm'][i]) \
                                                    & (df_shl_pm['time'] ==previous_time)].iloc[0]['f_1_step_pred_price_inc']
        f_current_step_pred_price = df_shl_pm[(df_shl_pm['ccyy-mm'] == df_history_ts_process['ccyy-mm'][i]) \
                                                    & (df_shl_pm['time'] ==previous_time)].iloc[0]['f_1_step_pred_price']
        f_current_step_pred_price_rounded = df_shl_pm[(df_shl_pm['ccyy-mm'] == df_history_ts_process['ccyy-mm'][i]) \
                                                    & (df_shl_pm['time'] ==previous_time)].iloc[0]['f_1_step_pred_price_rounded']
        f_current_step_pred_dynamic_increment = df_shl_pm[(df_shl_pm['ccyy-mm'] == df_history_ts_process['ccyy-mm'][i]) \
                                                    & (df_shl_pm['time'] ==previous_time)].iloc[0]['f_1_step_pred_dynamic_increment']
        f_current_step_pred_set_price_rounded = df_shl_pm[(df_shl_pm['ccyy-mm'] == df_history_ts_process['ccyy-mm'][i]) \
                                                    & (df_shl_pm['time'] ==previous_time)].iloc[0]['f_1_step_pred_set_price_rounded']

        f_current_step_error = f_current_step_pred_price_inc - f_actual_price4pm # current second forecast error
            
        if df_history_ts_process['time'][i] == '11:29:50':
            # function to get average forecast error between 46~50 seconds: mean(f_current_step_error)
            global_parm_short_weight_misc = (df_shl_pm.iloc[46:50]['f_current_step_error'].sum() \
                                             + f_current_step_error) / 5
            print('     global_parm_short_weight_misc : %f' % global_parm_short_weight_misc)
            
#         call predicitno functino shl_pm, forcaste next k=1 step
        print('---- call predicitno function shl_pm ---- %s' % df_history_ts_process['time'][i])
        
        f_1_step_pred_les_level = global_parm_alpha * f_actual_price4pmsi \
                                    + (1 - global_parm_alpha) * (previous_pred_les_level + previous_pred_les_trend)
        print('     f_1_step_pred_les_level  : %f' % f_1_step_pred_les_level)
        f_1_step_pred_les_trend = global_parm_beta * (f_1_step_pred_les_level - previous_pred_les_level) \
                                    + (1 - global_parm_beta) * previous_pred_les_trend
        print('     f_1_step_pred_les_trend  : %f' % f_1_step_pred_les_trend)
        f_1_step_pred_les = f_1_step_pred_les_level + f_1_step_pred_les_trend
        
        f_1_step_pred_les_misc = global_parm_short_weight_misc * global_parm_short_weight * global_parm_gamma
        
#         f_1_step_pred_price_inc = (f_1_step_pred_les + f_1_step_pred_les_misc) * f_actual_si
        f_1_step_pred_price_inc = (f_1_step_pred_les + f_1_step_pred_les_misc) * f_1_step_si
        f_1_step_pred_price = f_1_step_pred_price_inc + global_parm_base_price
        f_1_step_pred_price_rounded = round(f_1_step_pred_price/100, 0) * 100
        f_1_step_pred_dynamic_increment = global_parm_dynamic_increment
        f_1_step_pred_set_price_rounded = f_1_step_pred_price_rounded + f_1_step_pred_dynamic_increment
   
        
    # write results to shl_pm dataframe
            
    df_shl_pm_current = {
                         'ccyy-mm' : df_history_ts_process['ccyy-mm'][i]
                        ,'time' : df_history_ts_process['time'][i]
                        ,'bid' : df_history_ts_process['bid-price'][i]
                        ,'datetime' : f_actual_datetime
                        ,'f_actual_price4pm' : f_actual_price4pm
                        ,'f_actual_si' : f_actual_si
                        ,'f_1_step_si' : f_1_step_si
                        ,'f_actual_price4pmsi' :  f_actual_price4pmsi
                        ,'f_1_step_pred_les_level' : f_1_step_pred_les_level
                        ,'f_1_step_pred_les_trend' : f_1_step_pred_les_trend
                        ,'f_1_step_pred_les' : f_1_step_pred_les
                        ,'f_1_step_pred_les_misc' : f_1_step_pred_les_misc
                        ,'f_1_step_pred_price_inc' : f_1_step_pred_price_inc
                        ,'f_1_step_pred_price' : f_1_step_pred_price
                        ,'f_1_step_pred_price_rounded' : f_1_step_pred_price_rounded
                        ,'f_1_step_pred_dynamic_increment' : f_1_step_pred_dynamic_increment # +200 or + 300
                        ,'f_1_step_pred_set_price_rounded' : f_1_step_pred_set_price_rounded
                        ,'f_current_step_pred_les' : f_current_step_pred_les
                        ,'f_current_step_pred_les_misc' : f_current_step_pred_les_misc
                        ,'f_current_step_pred_price_inc' : f_current_step_pred_price_inc
                        ,'f_current_step_pred_price' : f_current_step_pred_price
                        ,'f_current_step_pred_price_rounded' : f_current_step_pred_price_rounded
                        ,'f_current_step_pred_dynamic_increment' : f_current_step_pred_dynamic_increment # +200 or + 300
                        ,'f_current_step_pred_set_price_rounded' : f_current_step_pred_set_price_rounded
                        ,'f_current_step_error' : f_current_step_error
                        }
    df_shl_pm =  df_shl_pm.append(df_shl_pm_current, ignore_index=True)


<<<< Record No.:  1830 >>>>
2017-07
11:29:00
90400
#### global_parm_base_price : 90399 ####
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:00 ####
#### f_actual_price4pm   : 1 ####
#### f_actual_si         : 0.0023669570 ####
#### f_1_step_si         : 0.0223882810 ####
#### f_actual_price4pmsi : 422.4833826724 ####
---- call predicitno function shl_pm ---- 11:29:00

<<<< Record No.:  1831 >>>>
2017-07
11:29:01
90400
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:01 ####
#### f_actual_price4pm   : 1 ####
#### f_actual_si         : 0.0223882810 ####
#### f_1_step_si         : 0.0309107700 ####
#### f_actual_price4pmsi : 44.6662251559 ####
     previous_pred_les_level : 422.483383
     previous_pred_les_trend : 0.000000
---- call predicitno function shl_pm ---- 11:29:01
     f_1_step_pred_les_level  : 179.799281
     f_1_step_pred_les_trend  : -55.884055

<<<< Record No.:  1832 >>>>
2017-07
11:29:02
90400
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:02 ####
#### f_actual_price4pm   : 1 ####
#### f_actual_si         : 0.0309107700 ####
#### f_1_step_si         : 0.0377696020 ####
#### f_actual_price4pmsi : 32.3511837460 ####
     previous_pred_les_level : 179.799281
     previous_pred_les_trend : -55.884055
---- call predicitno function shl_pm ---- 11:29:02
     f_1_step_pred_les_level  : 65.100699
     f_1_step_pred_les_trend  : -69.427564

<<<< Record No.:  1833 >>>>
2017-07
11:29:03
90400
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:03 ####
#### f_actual_price4pm   : 1 ####
#### f_actual_si         : 0.0377696020 ####
#### f_1_step_si         : 0.0457052300 ####
#### f_actual_price4pmsi : 26.4763181778 ####
     previous_pred_les_level : 65.100699
     previous_pred_les_trend : -69.427564
---- call predicitno function shl_pm ---- 11:29:03
     f_1_step_pred_les_level  : 15.459009
     f_1_step_pred_les_trend  : -64.871374

<<<< Record No.:  1834 >>>>
2017-07
11:29:04
90400
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:04 ####
#### f_actual_price4pm   : 1 ####
#### f_actual_si         : 0.0457052300 ####
#### f_1_step_si         : 0.0452799070 ####
#### f_actual_price4pmsi : 21.8793341594 ####
     previous_pred_les_level : 15.459009
     previous_pred_les_trend : -64.871374
---- call predicitno function shl_pm ---- 11:29:04
     f_1_step_pred_les_level  : -3.619416
     f_1_step_pred_les_trend  : -54.326408

<<<< Record No.:  1835 >>>>
2017-07
11:29:05
90400
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:05 ####
#### f_actual_price4pm   : 1 ####
#### f_actual_si         : 0.0452799070 ####
#### f_1_step_si         : 0.0807556680 ####
#### f_actual_price4pmsi : 22.0848510135 ####
     previous_pred_les_level : -3.619416
     previous_pred_les_trend : -54.326408
---- call predicitno function shl_pm ---- 11:29:05
     f_1_step_pred_les_level  : -6.539549
     f_1_step_pred_les_trend  : -42.488833

<<<< Record No.:  1836 >>>>
2017-07
11:29:06
90400
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:06 ####
#### f_actual_price4pm   : 1 ####
#### f_actual_si         : 0.0807556680 ####
#### f_1_step_si         : 0.0985017130 ####
#### f_actual_price4pmsi : 12.3830317396 ####
     previous_pred_les_level : -6.539549
     previous_pred_les_trend : -42.488833
---- call predicitno function shl_pm ---- 11:29:06
     f_1_step_pred_les_level  : -9.581858
     f_1_step_pred_les_trend  : -33.405289

<<<< Record No.:  1837 >>>>
2017-07
11:29:07
90400
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:07 ####
#### f_actual_price4pm   : 1 ####
#### f_actual_si         : 0.0985017130 ####
#### f_1_step_si         : 0.1361543100 ####
#### f_actual_price4pmsi : 10.1521077100 ####
     previous_pred_les_level : -9.581858
     previous_pred_les_trend : -33.405289
---- call predicitno function shl_pm ---- 11:29:07
     f_1_step_pred_les_level  : -8.854096
     f_1_step_pred_les_trend  : -25.545305

<<<< Record No.:  1838 >>>>
2017-07
11:29:08
90400
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:08 ####
#### f_actual_price4pm   : 1 ####
#### f_actual_si         : 0.1361543100 ####
#### f_1_step_si         : 0.2041642360 ####
#### f_actual_price4pmsi : 7.3446077469 ####
     previous_pred_les_level : -8.854096
     previous_pred_les_trend : -25.545305
---- call predicitno function shl_pm ---- 11:29:08
     f_1_step_pred_les_level  : -7.585883
     f_1_step_pred_les_trend  : -19.370825

<<<< Record No.:  1839 >>>>
2017-07
11:29:09
90400
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:09 ####
#### f_actual_price4pm   : 1 ####
#### f_actual_si         : 0.2041642360 ####
#### f_1_step_si         : 0.2310771670 ####
#### f_actual_price4pmsi : 4.8980174961 ####
     previous_pred_les_level : -7.585883
     previous_pred_les_trend : -19.370825
---- call predicitno function shl_pm ---- 11:29:09
     f_1_step_pred_les_level  : -6.495394
     f_1_step_pred_les_trend  : -14.659098

<<<< Record No.:  1840 >>>>
2017-07
11:29:10
90500
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:10 ####
#### f_actual_price4pm   : 101 ####
#### f_actual_si         : 0.2310771670 ####
#### f_1_step_si         : 0.2910254840 ####
#### f_actual_price4pmsi : 437.0834267671 ####
     previous_pred_les_level : -6.495394
     previous_pred_les_trend : -14.659098
---- call predicitno function shl_pm ---- 11:29:10
     f_1_step_pred_les_level  : 273.186449
     f_1_step_pred_les_trend  : 53.120231

<<<< Record No.:  1841 >>>>
2017-07
11:29:11
90500
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:11 ####
#### f_actual_price4pm   : 101 ####
#### f_actual_si         : 0.2910254840 ####
#### f_1_step_si         : 0.3431273480 ####
#### f_actual_price4pmsi : 347.0486454032 ####
     previous_pred_les_level : 273.186449
     previous_pred_les_trend : 53.120231
---- call predicitno function shl_pm ---- 11:29:11
     f_1_step_pred_les_level  : 339.629911
     f_1_step_pred_les_trend  : 56.188236

<<<< Record No.:  1842 >>>>
2017-07
11:29:12
90500
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:12 ####
#### f_actual_price4pm   : 101 ####
#### f_actual_si         : 0.3431273480 ####
#### f_1_step_si         : 0.3510740950 ####
#### f_actual_price4pmsi : 294.3513555206 ####
     previous_pred_les_level : 339.629911
     previous_pred_les_trend : 56.188236
---- call predicitno function shl_pm ---- 11:29:12
     f_1_step_pred_les_level  : 330.642766
     f_1_step_pred_les_trend  : 41.179982

<<<< Record No.:  1843 >>>>
2017-07
11:29:13
90600
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:13 ####
#### f_actual_price4pm   : 201 ####
#### f_actual_si         : 0.3510740950 ####
#### f_1_step_si         : 0.3706555480 ####
#### f_actual_price4pmsi : 572.5287136324 ####
     previous_pred_les_level : 330.642766
     previous_pred_les_trend : 41.179982
---- call predicitno function shl_pm ---- 11:29:13
     f_1_step_pred_les_level  : 500.742640
     f_1_step_pred_les_trend  : 70.866997

<<<< Record No.:  1844 >>>>
2017-07
11:29:14
90600
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:14 ####
#### f_actual_price4pm   : 201 ####
#### f_actual_si         : 0.3706555480 ####
#### f_1_step_si         : 0.4011467510 ####
#### f_actual_price4pmsi : 542.2824535733 ####
     previous_pred_les_level : 500.742640
     previous_pred_les_trend : 70.866997
---- call predicitno function shl_pm ---- 11:29:14
     f_1_step_pred_les_level  : 552.771844
     f_1_step_pred_les_trend  : 66.529126

<<<< Record No.:  1845 >>>>
2017-07
11:29:15
90600
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:15 ####
#### f_actual_price4pm   : 201 ####
#### f_actual_si         : 0.4011467510 ####
#### f_1_step_si         : 0.4120902590 ####
#### f_actual_price4pmsi : 501.0635122905 ####
     previous_pred_les_level : 552.771844
     previous_pred_les_trend : 66.529126
---- call predicitno function shl_pm ---- 11:29:15
     f_1_step_pred_les_level  : 543.353252
     f_1_step_pred_les_trend  : 49.040273

<<<< Record No.:  1846 >>>>
2017-07
11:29:16
90700
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:16 ####
#### f_actual_price4pm   : 301 ####
#### f_actual_si         : 0.4120902590 ####
#### f_1_step_si         : 0.4535685080 ####
#### f_actual_price4pmsi : 730.4225067839 ####
     previous_pred_les_level : 543.353252
     previous_pred_les_trend : 49.040273
---- call predicitno function shl_pm ---- 11:29:16
     f_1_step_pred_les_level  : 681.053975
     f_1_step_pred_les_trend  : 69.456549

<<<< Record No.:  1847 >>>>
2017-07
11:29:17
90700
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:17 ####
#### f_actual_price4pm   : 301 ####
#### f_actual_si         : 0.4535685080 ####
#### f_1_step_si         : 0.4836754840 ####
#### f_actual_price4pmsi : 663.6263203705 ####
     previous_pred_les_level : 681.053975
     previous_pred_les_trend : 69.456549
---- call predicitno function shl_pm ---- 11:29:17
     f_1_step_pred_les_level  : 694.702008
     f_1_step_pred_les_trend  : 56.605249

<<<< Record No.:  1848 >>>>
2017-07
11:29:18
90700
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:18 ####
#### f_actual_price4pm   : 301 ####
#### f_actual_si         : 0.4836754840 ####
#### f_1_step_si         : 0.5045423610 ####
#### f_actual_price4pmsi : 622.3180830062 ####
     previous_pred_les_level : 694.702008
     previous_pred_les_trend : 56.605249
---- call predicitno function shl_pm ---- 11:29:18
     f_1_step_pred_les_level  : 668.453366
     f_1_step_pred_les_trend  : 37.526078

<<<< Record No.:  1849 >>>>
2017-07
11:29:19
90700
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:19 ####
#### f_actual_price4pm   : 301 ####
#### f_actual_si         : 0.5045423610 ####
#### f_1_step_si         : 0.5273150370 ####
#### f_actual_price4pmsi : 596.5802344196 ####
     previous_pred_les_level : 668.453366
     previous_pred_les_trend : 37.526078
---- call predicitno function shl_pm ---- 11:29:19
     f_1_step_pred_les_level  : 635.708816
     f_1_step_pred_les_trend  : 21.344517

<<<< Record No.:  1850 >>>>
2017-07
11:29:20
90700
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:20 ####
#### f_actual_price4pm   : 301 ####
#### f_actual_si         : 0.5273150370 ####
#### f_1_step_si         : 0.5666965740 ####
#### f_actual_price4pmsi : 570.8162651921 ####
     previous_pred_les_level : 635.708816
     previous_pred_les_trend : 21.344517
---- call predicitno function shl_pm ---- 11:29:20
     f_1_step_pred_les_level  : 601.660493
     f_1_step_pred_les_trend  : 8.588937

<<<< Record No.:  1851 >>>>
2017-07
11:29:21
90700
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:21 ####
#### f_actual_price4pm   : 301 ####
#### f_actual_si         : 0.5666965740 ####
#### f_1_step_si         : 0.5783832890 ####
#### f_actual_price4pmsi : 531.1484378234 ####
     previous_pred_les_level : 601.660493
     previous_pred_les_trend : 8.588937
---- call predicitno function shl_pm ---- 11:29:21
     f_1_step_pred_les_level  : 559.440321
     f_1_step_pred_les_trend  : -3.111126

<<<< Record No.:  1852 >>>>
2017-07
11:29:22
90700
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:22 ####
#### f_actual_price4pm   : 301 ####
#### f_actual_si         : 0.5783832890 ####
#### f_1_step_si         : 0.5903581650 ####
#### f_actual_price4pmsi : 520.4161422444 ####
     previous_pred_les_level : 559.440321
     previous_pred_les_trend : -3.111126
---- call predicitno function shl_pm ---- 11:29:22
     f_1_step_pred_les_level  : 533.261087
     f_1_step_pred_les_trend  : -8.423132

<<<< Record No.:  1853 >>>>
2017-07
11:29:23
90700
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:23 ####
#### f_actual_price4pm   : 301 ####
#### f_actual_si         : 0.5903581650 ####
#### f_1_step_si         : 0.6203383340 ####
#### f_actual_price4pmsi : 509.8599762739 ####
     previous_pred_les_level : 533.261087
     previous_pred_les_trend : -8.423132
---- call predicitno function shl_pm ---- 11:29:23
     f_1_step_pred_les_level  : 515.217118
     f_1_step_pred_les_trend  : -10.638569

<<<< Record No.:  1854 >>>>
2017-07
11:29:24
90700
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:24 ####
#### f_actual_price4pm   : 301 ####
#### f_actual_si         : 0.6203383340 ####
#### f_1_step_si         : 0.6624022500 ####
#### f_actual_price4pmsi : 485.2190869120 ####
     previous_pred_les_level : 515.217118
     previous_pred_les_trend : -10.638569
---- call predicitno function shl_pm ---- 11:29:24
     f_1_step_pred_les_level  : 492.143344
     f_1_step_pred_les_trend  : -13.502084

<<<< Record No.:  1855 >>>>
2017-07
11:29:25
90700
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:25 ####
#### f_actual_price4pm   : 301 ####
#### f_actual_si         : 0.6624022500 ####
#### f_1_step_si         : 0.6803182270 ####
#### f_actual_price4pmsi : 454.4066690595 ####
     previous_pred_les_level : 492.143344
     previous_pred_les_trend : -13.502084
---- call predicitno function shl_pm ---- 11:29:25
     f_1_step_pred_les_level  : 463.074603
     f_1_step_pred_les_trend  : -17.086695

<<<< Record No.:  1856 >>>>
2017-07
11:29:26
90700
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:26 ####
#### f_actual_price4pm   : 301 ####
#### f_actual_si         : 0.6803182270 ####
#### f_1_step_si         : 0.7013944910 ####
#### f_actual_price4pmsi : 442.4400053594 ####
     previous_pred_les_level : 463.074603
     previous_pred_les_trend : -17.086695
---- call predicitno function shl_pm ---- 11:29:26
     f_1_step_pred_les_level  : 443.708976
     f_1_step_pred_les_trend  : -17.611475

<<<< Record No.:  1857 >>>>
2017-07
11:29:27
90700
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:27 ####
#### f_actual_price4pm   : 301 ####
#### f_actual_si         : 0.7013944910 ####
#### f_1_step_si         : 0.7261122680 ####
#### f_actual_price4pmsi : 429.1450871974 ####
     previous_pred_les_level : 443.708976
     previous_pred_les_trend : -17.611475
---- call predicitno function shl_pm ---- 11:29:27
     f_1_step_pred_les_level  : 428.055064
     f_1_step_pred_les_trend  : -17.160698

<<<< Record No.:  1858 >>>>
2017-07
11:29:28
90700
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:28 ####
#### f_actual_price4pm   : 301 ####
#### f_actual_si         : 0.7261122680 ####
#### f_1_step_si         : 0.7412284280 ####
#### f_actual_price4pmsi : 414.5364474134 ####
     previous_pred_les_level : 428.055064
     previous_pred_les_trend : -17.160698
---- call predicitno function shl_pm ---- 11:29:28
     f_1_step_pred_les_level  : 413.233792
     f_1_step_pred_les_trend  : -16.621987

<<<< Record No.:  1859 >>>>
2017-07
11:29:29
90700
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:29 ####
#### f_actual_price4pm   : 301 ####
#### f_actual_si         : 0.7412284280 ####
#### f_1_step_si         : 0.7848751150 ####
#### f_actual_price4pmsi : 406.0826442021 ####
     previous_pred_les_level : 413.233792
     previous_pred_les_trend : -16.621987
---- call predicitno function shl_pm ---- 11:29:29
     f_1_step_pred_les_level  : 402.695229
     f_1_step_pred_les_trend  : -15.221127

<<<< Record No.:  1860 >>>>
2017-07
11:29:30
90700
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:30 ####
#### f_actual_price4pm   : 301 ####
#### f_actual_si         : 0.7848751150 ####
#### f_1_step_si         : 0.7883406290 ####
#### f_actual_price4pmsi : 383.5005012231 ####
     previous_pred_les_level : 402.695229
     previous_pred_les_trend : -15.221127
---- call predicitno function shl_pm ---- 11:29:30
     f_1_step_pred_les_level  : 384.921731
     f_1_step_pred_les_trend  : -15.808874

<<<< Record No.:  1861 >>>>
2017-07
11:29:31
90700
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:31 ####
#### f_actual_price4pm   : 301 ####
#### f_actual_si         : 0.7883406290 ####
#### f_1_step_si         : 0.8143918490 ####
#### f_actual_price4pmsi : 381.8146482972 ####
     previous_pred_les_level : 384.921731
     previous_pred_les_trend : -15.808874
---- call predicitno function shl_pm ---- 11:29:31
     f_1_step_pred_les_level  : 377.271626
     f_1_step_pred_les_trend  : -13.930114

<<<< Record No.:  1862 >>>>
2017-07
11:29:32
90700
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:32 ####
#### f_actual_price4pm   : 301 ####
#### f_actual_si         : 0.8143918490 ####
#### f_1_step_si         : 0.8351005610 ####
#### f_actual_price4pmsi : 369.6009486952 ####
     previous_pred_les_level : 377.271626
     previous_pred_les_trend : -13.930114
---- call predicitno function shl_pm ---- 11:29:32
     f_1_step_pred_les_level  : 367.362149
     f_1_step_pred_les_trend  : -13.004262

<<<< Record No.:  1863 >>>>
2017-07
11:29:33
90700
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:33 ####
#### f_actual_price4pm   : 301 ####
#### f_actual_si         : 0.8351005610 ####
#### f_1_step_si         : 0.8670445380 ####
#### f_actual_price4pmsi : 360.4356338111 ####
     previous_pred_les_level : 367.362149
     previous_pred_les_trend : -13.004262
---- call predicitno function shl_pm ---- 11:29:33
     f_1_step_pred_les_level  : 358.261819
     f_1_step_pred_les_trend  : -12.105285

<<<< Record No.:  1864 >>>>
2017-07
11:29:34
90700
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:34 ####
#### f_actual_price4pm   : 301 ####
#### f_actual_si         : 0.8670445380 ####
#### f_1_step_si         : 0.9216129500 ####
#### f_actual_price4pmsi : 347.1563302784 ####
     previous_pred_les_level : 358.261819
     previous_pred_les_trend : -12.105285
---- call predicitno function shl_pm ---- 11:29:34
     f_1_step_pred_les_level  : 346.798735
     f_1_step_pred_les_trend  : -11.957402

<<<< Record No.:  1865 >>>>
2017-07
11:29:35
90800
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:35 ####
#### f_actual_price4pm   : 401 ####
#### f_actual_si         : 0.9216129500 ####
#### f_1_step_si         : 0.9539289700 ####
#### f_actual_price4pmsi : 435.1067332550 ####
     previous_pred_les_level : 346.798735
     previous_pred_les_trend : -11.957402
---- call predicitno function shl_pm ---- 11:29:35
     f_1_step_pred_les_level  : 399.245022
     f_1_step_pred_les_trend  : 2.873150

<<<< Record No.:  1866 >>>>
2017-07
11:29:36
90800
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:36 ####
#### f_actual_price4pm   : 401 ####
#### f_actual_si         : 0.9539289700 ####
#### f_1_step_si         : 0.9779660700 ####
#### f_actual_price4pmsi : 420.3667281433 ####
     previous_pred_les_level : 399.245022
     previous_pred_les_trend : 2.873150
---- call predicitno function shl_pm ---- 11:29:36
     f_1_step_pred_les_level  : 413.839806
     f_1_step_pred_les_trend  : 5.572348

<<<< Record No.:  1867 >>>>
2017-07
11:29:37
90900
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:37 ####
#### f_actual_price4pm   : 501 ####
#### f_actual_si         : 0.9779660700 ####
#### f_1_step_si         : 0.9935136330 ####
#### f_actual_price4pmsi : 512.2877115767 ####
     previous_pred_les_level : 413.839806
     previous_pred_les_trend : 5.572348
---- call predicitno function shl_pm ---- 11:29:37
     f_1_step_pred_les_level  : 479.069109
     f_1_step_pred_les_trend  : 19.309847

<<<< Record No.:  1868 >>>>
2017-07
11:29:38
91000
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:38 ####
#### f_actual_price4pm   : 601 ####
#### f_actual_si         : 0.9935136330 ####
#### f_1_step_si         : 1.0325517050 ####
#### f_actual_price4pmsi : 604.9237574982 ####
     previous_pred_les_level : 479.069109
     previous_pred_les_trend : 19.309847
---- call predicitno function shl_pm ---- 11:29:38
     f_1_step_pred_les_level  : 566.816106
     f_1_step_pred_les_trend  : 35.069205

<<<< Record No.:  1869 >>>>
2017-07
11:29:39
91000
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:39 ####
#### f_actual_price4pm   : 601 ####
#### f_actual_si         : 1.0325517050 ####
#### f_1_step_si         : 1.0762695320 ####
#### f_actual_price4pmsi : 582.0531766978 ####
     previous_pred_les_level : 566.816106
     previous_pred_les_trend : 35.069205
---- call predicitno function shl_pm ---- 11:29:39
     f_1_step_pred_les_level  : 589.146494
     f_1_step_pred_les_trend  : 32.135775

<<<< Record No.:  1870 >>>>
2017-07
11:29:40
91000
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:40 ####
#### f_actual_price4pm   : 601 ####
#### f_actual_si         : 1.0762695320 ####
#### f_1_step_si         : 1.1032848210 ####
#### f_actual_price4pmsi : 558.4103072055 ####
     previous_pred_les_level : 589.146494
     previous_pred_les_trend : 32.135775
---- call predicitno function shl_pm ---- 11:29:40
     f_1_step_pred_les_level  : 580.897587
     f_1_step_pred_les_trend  : 22.836197

<<<< Record No.:  1871 >>>>
2017-07
11:29:41
91000
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:41 ####
#### f_actual_price4pm   : 601 ####
#### f_actual_si         : 1.1032848210 ####
#### f_1_step_si         : 1.1629896100 ####
#### f_actual_price4pmsi : 544.7369424110 ####
     previous_pred_les_level : 580.897587
     previous_pred_les_trend : 22.836197
---- call predicitno function shl_pm ---- 11:29:41
     f_1_step_pred_les_level  : 565.838217
     f_1_step_pred_les_trend  : 14.109799

<<<< Record No.:  1872 >>>>
2017-07
11:29:42
91000
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:42 ####
#### f_actual_price4pm   : 601 ####
#### f_actual_si         : 1.1629896100 ####
#### f_1_step_si         : 1.2717913130 ####
#### f_actual_price4pmsi : 516.7715986732 ####
     previous_pred_les_level : 565.838217
     previous_pred_les_trend : 14.109799
---- call predicitno function shl_pm ---- 11:29:42
     f_1_step_pred_les_level  : 539.367773
     f_1_step_pred_les_trend  : 4.765188

<<<< Record No.:  1873 >>>>
2017-07
11:29:43
91000
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:43 ####
#### f_actual_price4pm   : 601 ####
#### f_actual_si         : 1.2717913130 ####
#### f_1_step_si         : 1.3866613510 ####
#### f_actual_price4pmsi : 472.5618062151 ####
     previous_pred_les_level : 539.367773
     previous_pred_les_trend : 4.765188
---- call predicitno function shl_pm ---- 11:29:43
     f_1_step_pred_les_level  : 498.160508
     f_1_step_pred_les_trend  : -5.821114

<<<< Record No.:  1874 >>>>
2017-07
11:29:44
91100
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:44 ####
#### f_actual_price4pm   : 701 ####
#### f_actual_si         : 1.3866613510 ####
#### f_1_step_si         : 1.4370894140 ####
#### f_actual_price4pmsi : 505.5307840624 ####
     previous_pred_les_level : 498.160508
     previous_pred_les_trend : -5.821114
---- call predicitno function shl_pm ---- 11:29:44
     f_1_step_pred_les_level  : 500.812648
     f_1_step_pred_les_trend  : -3.869936

<<<< Record No.:  1875 >>>>
2017-07
11:29:45
91100
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:45 ####
#### f_actual_price4pm   : 701 ####
#### f_actual_si         : 1.4370894140 ####
#### f_1_step_si         : 1.5686206330 ####
#### f_actual_price4pmsi : 487.7914993813 ####
     previous_pred_les_level : 500.812648
     previous_pred_les_trend : -3.869936
---- call predicitno function shl_pm ---- 11:29:45
     f_1_step_pred_les_level  : 491.064594
     f_1_step_pred_les_trend  : -5.223519

<<<< Record No.:  1876 >>>>
2017-07
11:29:46
91200
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:46 ####
#### f_actual_price4pm   : 801 ####
#### f_actual_si         : 1.5686206330 ####
#### f_1_step_si         : 1.6413910300 ####
#### f_actual_price4pmsi : 510.6397194764 ####
     previous_pred_les_level : 491.064594
     previous_pred_les_trend : -5.223519
---- call predicitno function shl_pm ---- 11:29:46
     f_1_step_pred_les_level  : 501.770041
     f_1_step_pred_les_trend  : -1.555478

<<<< Record No.:  1877 >>>>
2017-07
11:29:47
91300
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:47 ####
#### f_actual_price4pm   : 901 ####
#### f_actual_si         : 1.6413910300 ####
#### f_1_step_si         : 1.7490712830 ####
#### f_actual_price4pmsi : 548.9246520374 ####
     previous_pred_les_level : 501.770041
     previous_pred_les_trend : -1.555478
---- call predicitno function shl_pm ---- 11:29:47
     f_1_step_pred_les_level  : 531.502619
     f_1_step_pred_les_trend  : 5.649376

<<<< Record No.:  1878 >>>>
2017-07
11:29:48
91400
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:48 ####
#### f_actual_price4pm   : 1001 ####
#### f_actual_si         : 1.7490712830 ####
#### f_1_step_si         : 1.7897347710 ####
#### f_actual_price4pmsi : 572.3037189674 ####
     previous_pred_les_level : 531.502619
     previous_pred_les_trend : 5.649376
---- call predicitno function shl_pm ---- 11:29:48
     f_1_step_pred_les_level  : 559.731077
     f_1_step_pred_les_trend  : 10.848771

<<<< Record No.:  1879 >>>>
2017-07
11:29:49
91400
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:49 ####
#### f_actual_price4pm   : 1001 ####
#### f_actual_si         : 1.7897347710 ####
#### f_1_step_si         : 1.9329318490 ####
#### f_actual_price4pmsi : 559.3007501557 ####
     previous_pred_les_level : 559.731077
     previous_pred_les_trend : 10.848771
---- call predicitno function shl_pm ---- 11:29:49
     f_1_step_pred_les_level  : 563.334921
     f_1_step_pred_les_trend  : 9.180447

<<<< Record No.:  1880 >>>>
2017-07
11:29:50
91500
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:50 ####
#### f_actual_price4pm   : 1101 ####
#### f_actual_si         : 1.9329318490 ####
#### f_1_step_si         : 2.0011852710 ####
#### f_actual_price4pmsi : 569.6010444288 ####
     previous_pred_les_level : 563.334921
     previous_pred_les_trend : 9.180447
     global_parm_short_weight_misc : -30.903012
---- call predicitno function shl_pm ---- 11:29:50
     f_1_step_pred_les_level  : 570.643404
     f_1_step_pred_les_trend  : 8.749380

In [26]:
# df_shl_pm.iloc[2]
df_shl_pm.head()


Out[26]:
bid ccyy-mm datetime f_1_step_pred_dynamic_increment f_1_step_pred_les f_1_step_pred_les_level f_1_step_pred_les_misc f_1_step_pred_les_trend f_1_step_pred_price f_1_step_pred_price_inc ... f_actual_si f_current_step_error f_current_step_pred_dynamic_increment f_current_step_pred_les f_current_step_pred_les_misc f_current_step_pred_price f_current_step_pred_price_inc f_current_step_pred_price_rounded f_current_step_pred_set_price_rounded time
0 90400.0 2017-07 2017-07 11:29:00 300.0 422.483383 422.483383 0.0 0.000000 90408.458677 9.458677 ... 0.002367 8.458677 300.0 422.483383 0.0 90408.458677 9.458677 90400.0 90700.0 11:29:00
1 90400.0 2017-07 2017-07 11:29:01 300.0 123.915226 179.799281 0.0 -55.884055 90402.830315 3.830315 ... 0.022388 8.458677 300.0 422.483383 0.0 90408.458677 9.458677 90400.0 90700.0 11:29:01
2 90400.0 2017-07 2017-07 11:29:02 300.0 -4.326865 65.100699 0.0 -69.427564 90398.836576 -0.163424 ... 0.030911 2.830315 300.0 123.915226 0.0 90402.830315 3.830315 90400.0 90700.0 11:29:02
3 90400.0 2017-07 2017-07 11:29:03 300.0 -49.412365 15.459009 0.0 -64.871374 90396.741597 -2.258403 ... 0.037770 -1.163424 300.0 -4.326865 0.0 90398.836576 -0.163424 90400.0 90700.0 11:29:03
4 90400.0 2017-07 2017-07 11:29:04 300.0 -57.945823 -3.619416 0.0 -54.326408 90396.376219 -2.623781 ... 0.045705 -3.258403 300.0 -49.412365 0.0 90396.741597 -2.258403 90400.0 90700.0 11:29:04

5 rows × 25 columns


In [28]:
df_shl_pm.tail()


Out[28]:
bid ccyy-mm datetime f_1_step_pred_dynamic_increment f_1_step_pred_les f_1_step_pred_les_level f_1_step_pred_les_misc f_1_step_pred_les_trend f_1_step_pred_price f_1_step_pred_price_inc ... f_actual_si f_current_step_error f_current_step_pred_dynamic_increment f_current_step_pred_les f_current_step_pred_les_misc f_current_step_pred_price f_current_step_pred_price_inc f_current_step_pred_price_rounded f_current_step_pred_set_price_rounded time
46 91200.0 2017-07 2017-07 11:29:46 300.0 500.214563 501.770041 0.000000 -1.555478 91220.047697 821.047697 ... 1.568621 -38.899666 300.0 485.841075 0.0 91161.100334 762.100334 91200.0 91500.0 11:29:46
47 91300.0 2017-07 2017-07 11:29:47 300.0 537.151994 531.502619 0.000000 5.649376 91338.517127 939.517127 ... 1.641391 -79.952303 300.0 500.214563 0.0 91220.047697 821.047697 91200.0 91500.0 11:29:47
48 91400.0 2017-07 2017-07 11:29:48 300.0 570.579848 559.731077 0.000000 10.848771 91420.186593 1021.186593 ... 1.749071 -61.482873 300.0 537.151994 0.0 91338.517127 939.517127 91300.0 91600.0 11:29:48
49 91400.0 2017-07 2017-07 11:29:49 300.0 572.515368 563.334921 0.000000 9.180447 91505.633188 1106.633188 ... 1.789735 20.186593 300.0 570.579848 0.0 91420.186593 1021.186593 91400.0 91700.0 11:29:49
50 91500.0 2017-07 2017-07 11:29:50 300.0 579.392785 570.643404 -0.842278 8.749380 91556.786752 1157.786752 ... 1.932932 5.633188 300.0 572.515368 0.0 91505.633188 1106.633188 91500.0 91800.0 11:29:50

5 rows × 25 columns


In [29]:
plt.figure(figsize=(12,6))
plt.plot(df_shl_pm['bid'])
# plt.plot(df_shl_pm['pred_price'])
plt.plot(df_shl_pm['f_1_step_pred_price'].shift(1))
# plt.plot(df_shl_pm['pred_price'].shift(-1))

plt.figure(figsize=(12,6))
plt.plot(df_shl_pm['bid'])
# plt.plot(df_shl_pm['pred_price'])
plt.plot(df_shl_pm['f_current_step_pred_price'])
# plt.plot(df_shl_pm['pred_price'].shift(-1))


Out[29]:
[<matplotlib.lines.Line2D at 0x7fe8b6d1a0f0>]

In [30]:
plt.figure(figsize=(12,6))
plt.plot(df_shl_pm['bid'])
plt.plot(df_shl_pm['f_1_step_pred_price'])
plt.plot(df_shl_pm['f_current_step_pred_price'])


Out[30]:
[<matplotlib.lines.Line2D at 0x7fe8b6c678d0>]

In [ ]:


In [ ]:

Start of prediction module: shl_pm


In [ ]:


In [31]:
# 11:29:51~
def predict_k_step_price(df_shl_pm, ccyy_mm, time, k):
    print('month & time  : ', ccyy_mm, time)
    print()
    
#     df_shl_pm_k = pd.DataFrame() # initialize prediction dataframe
    for sec in range(0, k):
        
        
        print('delta second(s) : ', sec)
        current_time  = get_future_n_sec_time_as_str(time, sec)
        print('current_time  : %s' % current_time)
        f_1_step_time  = get_future_n_sec_time_as_str(current_time, 1)
        print('f_1_step_time  : %s' % f_1_step_time)
        previous_time = get_previous_n_sec_time_as_str(current_time, 1)
        print('previous_time : %s' % previous_time)

        previous_pred_les_level = df_shl_pm[(df_shl_pm['ccyy-mm'] == global_parm_ccyy_mm) \
                                            & (df_shl_pm['time'] ==previous_time)].iloc[0]['f_1_step_pred_les_level']
        print('     previous_pred_les_level : %f' % previous_pred_les_level)
        
        previous_pred_les_trend = df_shl_pm[(df_shl_pm['ccyy-mm'] == global_parm_ccyy_mm) \
                                            & (df_shl_pm['time'] ==previous_time)].iloc[0]['f_1_step_pred_les_trend']
        print('     previous_pred_les_trend : %f' % previous_pred_les_trend)


        print('---- Pre-Process ---')
        ############ use predicted value for boost-trap
        previous_pred_price = df_shl_pm[(df_shl_pm['ccyy-mm'] == global_parm_ccyy_mm) \
                                            & (df_shl_pm['time'] == previous_time)].iloc[0]['f_1_step_pred_price']
        # pre-process: ccyy-mm-hh:mm:ss
        f_actual_datetime = global_parm_ccyy_mm + ' ' + current_time
#         f_actual_price4pm = df_history_ts_process['bid-price'][i] -  global_parm_base_price
        f_actual_price4pm = previous_pred_price -  global_parm_base_price
        print('#### f_actual_datetime   : %s ####' %  f_actual_datetime)
        print('#### previous_pred_price: %s ####' %  previous_pred_price)
        print('#### f_actual_price4pm   : %d ####' % f_actual_price4pm)

        # get Seasonality-Index
        f_actual_si = fetech_si(global_parm_ccyy_mm
                                             ,current_time
                                             ,df_parm_si)
        try:
            f_1_step_si = fetech_si(global_parm_ccyy_mm
                                                 ,f_1_step_time
                                                 ,df_parm_si)
        except:
            f_1_step_si = fetech_si(global_parm_ccyy_mm
                                                 ,current_time
                                                 ,df_parm_si)            

        print('#### f_actual_si         : %0.10f ####' %  f_actual_si)
        # get de-seasoned price: price4pmsi
        f_actual_price4pmsi = f_actual_price4pm / f_actual_si
        print('#### f_actual_price4pmsi : %0.10f ####' % f_actual_price4pmsi)

        f_current_step_pred_les = df_shl_pm[(df_shl_pm['ccyy-mm'] == df_history_ts_process['ccyy-mm'][i]) \
                                                    & (df_shl_pm['time'] ==previous_time)].iloc[0]['f_1_step_pred_les']
        f_current_step_pred_les_misc = df_shl_pm[(df_shl_pm['ccyy-mm'] == df_history_ts_process['ccyy-mm'][i]) \
                                                    & (df_shl_pm['time'] ==previous_time)].iloc[0]['f_1_step_pred_les_misc']
        f_current_step_pred_price_inc = df_shl_pm[(df_shl_pm['ccyy-mm'] == df_history_ts_process['ccyy-mm'][i]) \
                                                    & (df_shl_pm['time'] ==previous_time)].iloc[0]['f_1_step_pred_price_inc']
        f_current_step_pred_price = df_shl_pm[(df_shl_pm['ccyy-mm'] == df_history_ts_process['ccyy-mm'][i]) \
                                                    & (df_shl_pm['time'] ==previous_time)].iloc[0]['f_1_step_pred_price']
        f_current_step_pred_price_rounded = df_shl_pm[(df_shl_pm['ccyy-mm'] == df_history_ts_process['ccyy-mm'][i]) \
                                                    & (df_shl_pm['time'] ==previous_time)].iloc[0]['f_1_step_pred_price_rounded']
        f_current_step_pred_dynamic_increment = df_shl_pm[(df_shl_pm['ccyy-mm'] == df_history_ts_process['ccyy-mm'][i]) \
                                                    & (df_shl_pm['time'] ==previous_time)].iloc[0]['f_1_step_pred_dynamic_increment']
        f_current_step_pred_set_price_rounded = df_shl_pm[(df_shl_pm['ccyy-mm'] == df_history_ts_process['ccyy-mm'][i]) \
                                                    & (df_shl_pm['time'] ==previous_time)].iloc[0]['f_1_step_pred_set_price_rounded']
        
        f_current_step_error = f_current_step_pred_price_inc - f_actual_price4pm # current second forecast error
        

        f_1_step_pred_les_level = global_parm_alpha * f_actual_price4pmsi \
                                    + (1 - global_parm_alpha) * (previous_pred_les_level + previous_pred_les_trend)
        print('     f_1_step_pred_les_level  : %f' % f_1_step_pred_les_level)
        f_1_step_pred_les_trend = global_parm_beta * (f_1_step_pred_les_level - previous_pred_les_level) \
                                    + (1 - global_parm_beta) * previous_pred_les_trend
        print('     f_1_step_pred_les_trend  : %f' % f_1_step_pred_les_trend)
        f_1_step_pred_les = f_1_step_pred_les_level + f_1_step_pred_les_trend
        
#         f_1_step_pred_les_misc = 0
        f_1_step_pred_les_misc = global_parm_short_weight_misc * global_parm_short_weight * (sec+2) * global_parm_gamma
        
#         f_1_step_pred_price_inc = (f_1_step_pred_les + f_1_step_pred_les_misc) * f_actual_si
        f_1_step_pred_price_inc = (f_1_step_pred_les + f_1_step_pred_les_misc) * f_1_step_si
        f_1_step_pred_price = f_1_step_pred_price_inc + global_parm_base_price
        f_1_step_pred_price_rounded = round(f_1_step_pred_price/100, 0) * 100
        f_1_step_pred_dynamic_increment = global_parm_dynamic_increment
        f_1_step_pred_set_price_rounded = f_1_step_pred_price_rounded + f_1_step_pred_dynamic_increment 

#         write results to shl_pm dataframe
        df_shl_pm_current = {
                             'ccyy-mm' : global_parm_ccyy_mm
                            ,'time' : current_time
                            ,'bid' : previous_pred_price
                            ,'datetime' : f_actual_datetime
                            ,'f_actual_price4pm' : f_actual_price4pm
                            ,'f_actual_si' : f_actual_si
                            ,'f_1_step_si' : f_1_step_si
                            ,'f_actual_price4pmsi' :  f_actual_price4pmsi
                            ,'f_1_step_pred_les_level' : f_1_step_pred_les_level
                            ,'f_1_step_pred_les_trend' : f_1_step_pred_les_trend
                            ,'f_1_step_pred_les' : f_1_step_pred_les
                            ,'f_1_step_pred_les_misc' : f_1_step_pred_les_misc
                            ,'f_1_step_pred_price_inc' : f_1_step_pred_price_inc
                            ,'f_1_step_pred_price' : f_1_step_pred_price
                            ,'f_1_step_pred_price_rounded' : f_1_step_pred_price_rounded
                            ,'f_1_step_pred_dynamic_increment' : f_1_step_pred_dynamic_increment # +200 or + 300
                            ,'f_1_step_pred_set_price_rounded' : f_1_step_pred_set_price_rounded
                            ,'f_current_step_pred_les' : f_current_step_pred_les
                            ,'f_current_step_pred_les_misc' : f_current_step_pred_les_misc
                            ,'f_current_step_pred_price_inc' : f_current_step_pred_price_inc
                            ,'f_current_step_pred_price' : f_current_step_pred_price
                            ,'f_current_step_pred_price_rounded' : f_current_step_pred_price_rounded
                            ,'f_current_step_pred_dynamic_increment' : f_current_step_pred_dynamic_increment # +200 or + 300
                            ,'f_current_step_pred_set_price_rounded' : f_current_step_pred_set_price_rounded
                            ,'f_current_step_error' : f_current_step_error
                            }
        print('---------------------------')
        df_shl_pm =  df_shl_pm.append(df_shl_pm_current, ignore_index=True)
        
    return df_shl_pm

In [32]:
df_shl_pm_k_step = predict_k_step_price(df_shl_pm, global_parm_ccyy_mm, '11:29:51', 10)


month & time  :  2017-07 11:29:51

delta second(s) :  0
current_time  : 11:29:51
f_1_step_time  : 11:29:52
previous_time : 11:29:50
     previous_pred_les_level : 570.643404
     previous_pred_les_trend : 8.749380
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:51 ####
#### previous_pred_price: 91556.7867519 ####
#### f_actual_price4pm   : 1157 ####
#### f_actual_si         : 2.0011852710 ####
#### f_actual_price4pmsi : 578.5505063630 ####
     f_1_step_pred_les_level  : 578.851762
     f_1_step_pred_les_trend  : 8.624797
---------------------------
delta second(s) :  1
current_time  : 11:29:52
f_1_step_time  : 11:29:53
previous_time : 11:29:51
     previous_pred_les_level : 578.851762
     previous_pred_les_trend : 8.624797
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:52 ####
#### previous_pred_price: 91609.3069691 ####
#### f_actual_price4pm   : 1210 ####
#### f_actual_si         : 2.0661036070 ####
#### f_actual_price4pmsi : 585.7920023973 ####
     f_1_step_pred_les_level  : 586.394514
     f_1_step_pred_les_trend  : 8.375629
---------------------------
delta second(s) :  2
current_time  : 11:29:53
f_1_step_time  : 11:29:54
previous_time : 11:29:52
     previous_pred_les_level : 586.394514
     previous_pred_les_trend : 8.375629
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:53 ####
#### previous_pred_price: 91683.1076066 ####
#### f_actual_price4pm   : 1284 ####
#### f_actual_si         : 2.1682095660 ####
#### f_actual_price4pmsi : 592.2433083845 ####
     f_1_step_pred_les_level  : 593.147076
     f_1_step_pred_les_trend  : 8.001877
---------------------------
delta second(s) :  3
current_time  : 11:29:54
f_1_step_time  : 11:29:55
previous_time : 11:29:53
     previous_pred_les_level : 593.147076
     previous_pred_les_trend : 8.001877
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:54 ####
#### previous_pred_price: 91768.1244036 ####
#### f_actual_price4pm   : 1369 ####
#### f_actual_si         : 2.2903489060 ####
#### f_actual_price4pmsi : 597.7798404656 ####
     f_1_step_pred_les_level  : 598.984864
     f_1_step_pred_les_trend  : 7.503542
---------------------------
delta second(s) :  4
current_time  : 11:29:55
f_1_step_time  : 11:29:56
previous_time : 11:29:54
     previous_pred_les_level : 598.984864
     previous_pred_les_trend : 7.503542
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:55 ####
#### previous_pred_price: 91852.6570719 ####
#### f_actual_price4pm   : 1453 ####
#### f_actual_si         : 2.4136021070 ####
#### f_actual_price4pmsi : 602.2770147819 ####
     f_1_step_pred_les_level  : 603.783294
     f_1_step_pred_les_trend  : 6.880623
---------------------------
delta second(s) :  5
current_time  : 11:29:56
f_1_step_time  : 11:29:57
previous_time : 11:29:55
     previous_pred_les_level : 603.783294
     previous_pred_les_trend : 6.880623
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:56 ####
#### previous_pred_price: 91943.7282747 ####
#### f_actual_price4pm   : 1544 ####
#### f_actual_si         : 2.5506970550 ####
#### f_actual_price4pmsi : 605.6102474744 ####
     f_1_step_pred_les_level  : 607.417782
     f_1_step_pred_les_trend  : 6.133119
---------------------------
delta second(s) :  6
current_time  : 11:29:57
f_1_step_time  : 11:29:58
previous_time : 11:29:56
     previous_pred_les_level : 607.417782
     previous_pred_les_trend : 6.133119
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:57 ####
#### previous_pred_price: 92042.9441775 ####
#### f_actual_price4pm   : 1643 ####
#### f_actual_si         : 2.7053908880 ####
#### f_actual_price4pmsi : 607.6549546845 ####
     f_1_step_pred_les_level  : 609.763746
     f_1_step_pred_les_trend  : 5.261032
---------------------------
delta second(s) :  7
current_time  : 11:29:58
f_1_step_time  : 11:29:59
previous_time : 11:29:57
     previous_pred_les_level : 609.763746
     previous_pred_les_trend : 5.261032
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:58 ####
#### previous_pred_price: 92086.7206995 ####
#### f_actual_price4pm   : 1687 ####
#### f_actual_si         : 2.7745487590 ####
#### f_actual_price4pmsi : 608.2865525532 ####
     f_1_step_pred_les_level  : 610.696599
     f_1_step_pred_les_trend  : 4.264361
---------------------------
delta second(s) :  8
current_time  : 11:29:59
f_1_step_time  : 11:30:00
previous_time : 11:29:58
     previous_pred_les_level : 610.696599
     previous_pred_les_trend : 4.264361
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:29:59 ####
#### previous_pred_price: 92178.1285226 ####
#### f_actual_price4pm   : 1779 ####
#### f_actual_si         : 2.9291830210 ####
#### f_actual_price4pmsi : 607.3804572217 ####
     f_1_step_pred_les_level  : 610.091760
     f_1_step_pred_les_trend  : 3.143107
---------------------------
delta second(s) :  9
current_time  : 11:30:00
f_1_step_time  : 11:30:01
previous_time : 11:29:59
     previous_pred_les_level : 610.091760
     previous_pred_les_trend : 3.143107
---- Pre-Process ---
#### f_actual_datetime   : 2017-07 11:30:00 ####
#### previous_pred_price: 92256.4035874 ####
#### f_actual_price4pm   : 1857 ####
#### f_actual_si         : 3.0710424510 ####
#### f_actual_price4pmsi : 604.8120848311 ####
     f_1_step_pred_les_level  : 607.824643
     f_1_step_pred_les_trend  : 1.897268
---------------------------

In [33]:
df_shl_pm_k_step['f_actual_si'].tail()


Out[33]:
56    2.550697
57    2.705391
58    2.774549
59    2.929183
60    3.071042
Name: f_actual_si, dtype: float64

In [34]:
df_shl_pm_k_step['f_1_step_si'].tail()


Out[34]:
56    2.705391
57    2.774549
58    2.929183
59    3.071042
60    3.071042
Name: f_1_step_si, dtype: float64

In [35]:
plt.figure(figsize=(12,6))
plt.plot(df_shl_pm_k_step['bid'])
# plt.plot(df_shl_pm_k_step['f_1_step_pred_price'].shift(1))
plt.plot(df_shl_pm_k_step['f_current_step_pred_price'])

df_actual_bid = df_history_ts_process[1830:1830+61].copy()
df_actual_bid.reset_index(inplace=True)
plt.figure(figsize=(12,6))
plt.plot(df_actual_bid['bid-price'])
# plt.plot(df_shl_pm_k_step['f_1_step_pred_price'].shift(1))
plt.plot(df_shl_pm_k_step['f_current_step_pred_price'])
# plt.plot(df_shl_pm_k_step['bid'])


Out[35]:
[<matplotlib.lines.Line2D at 0x7fe8b6be6898>]

End of prediction module: shl_pm


In [ ]:


In [ ]:


In [ ]:
df_shl_pm.iloc[46]

In [ ]:

End of shl_sm


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:

[1] Import useful reference packages


In [ ]:
# from __future__ import print_function, division
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
import pandas as pd
import operator
from scipy import interp
from itertools import cycle
from sklearn import svm
from sklearn.utils.validation import check_random_state
from sklearn.model_selection import StratifiedKFold, cross_val_score
from sklearn.preprocessing import StandardScaler

from sklearn.ensemble import GradientBoostingRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import AdaBoostRegressor
from sklearn.ensemble import ExtraTreesRegressor
from sklearn.ensemble import BaggingRegressor
from sklearn.linear_model import LinearRegression
from sklearn.neighbors import KNeighborsRegressor
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.ensemble import ExtraTreesClassifier
from sklearn.ensemble import BaggingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier

from sklearn.metrics import roc_curve, auc
from statsmodels.graphics.mosaicplot import mosaic
print(__doc__)

In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


The End