In [1]:
%matplotlib inline
import pyaf
import datetime
In [2]:
# !wget https://raw.githubusercontent.com/antoinecarme/TimeSeriesData/master/YahooFinance/nasdaq/yahoo_GOOG.csv
In [3]:
goog_link = 'https://raw.githubusercontent.com/antoinecarme/TimeSeriesData/master/YahooFinance/nasdaq/yahoo_GOOG.csv'
import pandas as pd
goog_dataframe = pd.read_csv(goog_link);
goog_dataframe['Date'] = goog_dataframe['Date'].apply(lambda x : datetime.datetime.strptime(x, "%Y-%m-%d"))
goog_dataframe.sort_values(by = 'Date' , ascending=True, inplace=True)
goog_dataframe = goog_dataframe.reset_index(drop=True)
goog_dataframe.tail()
Out[3]:
Unnamed: 0
Symbol
Date
Close
Low
Volume
Open
Adj_Close
High
1253
4
GOOG
2016-07-21
738.630005
735.830994
969100
740.359985
738.630005
741.690002
1254
3
GOOG
2016-07-22
742.739990
736.559998
1256300
741.859985
742.739990
743.239990
1255
2
GOOG
2016-07-25
739.770020
737.500000
1030700
740.669983
739.770020
742.609985
1256
1
GOOG
2016-07-26
738.419983
734.270020
1179400
739.039978
738.419983
741.690002
1257
0
GOOG
2016-07-27
741.770020
737.000000
1497100
738.280029
741.770020
744.460022
In [4]:
lDate = goog_dataframe.Date
goog_dataframe.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1258 entries, 0 to 1257
Data columns (total 9 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Unnamed: 0 1258 non-null int64
1 Symbol 1258 non-null object
2 Date 1258 non-null datetime64[ns]
3 Close 1258 non-null float64
4 Low 1258 non-null float64
5 Volume 1258 non-null int64
6 Open 1258 non-null float64
7 Adj_Close 1258 non-null float64
8 High 1258 non-null float64
dtypes: datetime64[ns](1), float64(5), int64(2), object(1)
memory usage: 88.6+ KB
In [5]:
goog_dataframe.Date.min(), goog_dataframe.Date.max()
Out[5]:
(Timestamp('2011-07-28 00:00:00'), Timestamp('2016-07-27 00:00:00'))
In [6]:
lHierarchy = {};
lHierarchy['Levels'] = None;
lHierarchy['Data'] = None;
lHierarchy['Groups']= {};
lHierarchy['Periods']= ["D", "W" , "2W" , "M"]
lHierarchy['Type'] = "Temporal";
In [7]:
# create a model to plot the hierarchy.
import pyaf.HierarchicalForecastEngine as hautof
lEngine = hautof.cHierarchicalForecastEngine()
H = 14
lSignalHierarchy = lEngine.plot_Hierarchy(goog_dataframe , "Date", "Close", H,
lHierarchy, None);
INFO:pyaf.std:START_HIERARCHICAL_PLOTTING
INFO:pyaf.std:END_HIERARCHICAL_PLOTTING_TIME_IN_SECONDS 0.09484243392944336
In [8]:
goog_dataframe
Out[8]:
Unnamed: 0
Symbol
Date
Close
Low
Volume
Open
Adj_Close
High
0
1257
GOOG
2011-07-28
610.941019
603.001016
6240000
605.191021
305.165344
615.981027
1
1256
GOOG
2011-07-29
603.691033
603.691033
8305700
604.231014
301.543972
614.961042
2
1255
GOOG
2011-08-01
606.771021
599.181019
7961800
611.221057
303.082428
615.501085
3
1254
GOOG
2011-08-02
592.400990
591.570985
6425100
606.001054
295.904590
609.671015
4
1253
GOOG
2011-08-03
601.171059
583.630982
7680000
594.271013
300.285244
603.001016
...
...
...
...
...
...
...
...
...
...
1253
4
GOOG
2016-07-21
738.630005
735.830994
969100
740.359985
738.630005
741.690002
1254
3
GOOG
2016-07-22
742.739990
736.559998
1256300
741.859985
742.739990
743.239990
1255
2
GOOG
2016-07-25
739.770020
737.500000
1030700
740.669983
739.770020
742.609985
1256
1
GOOG
2016-07-26
738.419983
734.270020
1179400
739.039978
738.419983
741.690002
1257
0
GOOG
2016-07-27
741.770020
737.000000
1497100
738.280029
741.770020
744.460022
1258 rows × 9 columns
In [9]:
goog_dataframe.describe(include='all')
Out[9]:
Unnamed: 0
Symbol
Date
Close
Low
Volume
Open
Adj_Close
High
count
1258.000000
1258
1258
1258.000000
1258.000000
1.258000e+03
1258.000000
1258.000000
1258.000000
unique
NaN
1
1258
NaN
NaN
NaN
NaN
NaN
NaN
top
NaN
GOOG
2012-02-14 00:00:00
NaN
NaN
NaN
NaN
NaN
NaN
freq
NaN
1258
1
NaN
NaN
NaN
NaN
NaN
NaN
first
NaN
NaN
2011-07-28 00:00:00
NaN
NaN
NaN
NaN
NaN
NaN
last
NaN
NaN
2016-07-27 00:00:00
NaN
NaN
NaN
NaN
NaN
NaN
mean
628.500000
NaN
NaN
696.285816
690.186479
3.605697e+06
696.447039
491.820009
702.078363
std
363.297628
NaN
NaN
168.831035
168.088283
2.526549e+06
168.945199
146.224491
169.631658
min
0.000000
NaN
NaN
490.920851
480.600832
7.900000e+03
490.030838
245.215210
495.978230
25%
314.250000
NaN
NaN
568.940062
563.376311
1.788850e+06
569.516381
347.184670
574.225972
50%
628.500000
NaN
NaN
645.670549
639.901080
3.142550e+06
646.246105
524.662396
650.050058
75%
942.750000
NaN
NaN
754.428788
749.542496
4.638225e+06
754.115961
582.637646
761.301311
max
1257.000000
NaN
NaN
1220.172036
1218.602083
2.497790e+07
1226.802152
776.599976
1228.882066
In [10]:
# create a hierarchical model and train it
import pyaf.HierarchicalForecastEngine as hautof
lEngine = hautof.cHierarchicalForecastEngine()
lEngine.mOptions.mNbCores = 20
lEngine.mOptions.mHierarchicalCombinationMethod = ["BU" , 'TD' , 'MO' , 'OC']
lDateColumn = "Date"
lSignalVar = "Close";
#
N = goog_dataframe.shape[0];
train_df = goog_dataframe
print(train_df)
lSignalHierarchy = lEngine.train(train_df , lDateColumn, lSignalVar, H, lHierarchy, None);
INFO:pyaf.std:START_HIERARCHICAL_TRAINING
INFO:pyaf.hierarchical:FORECASTING_HIERARCHICAL_TEMPORAL_HORIZONS_FIRST_RESAMPLED_DATA D {'TH_D_start': {0: Timestamp('2011-07-28 00:00:00'), 1: Timestamp('2011-07-29 00:00:00'), 2: Timestamp('2011-07-30 00:00:00'), 3: Timestamp('2011-07-31 00:00:00'), 4: Timestamp('2011-08-01 00:00:00')}, 'Close': {0: 610.9410190000001, 1: 603.6910330000001, 2: 0.0, 3: 0.0, 4: 606.771021}}
INFO:pyaf.hierarchical:FORECASTING_HIERARCHICAL_TEMPORAL_HORIZONS_FIRST_RESAMPLED_DATA W {'TH_W_start': {0: Timestamp('2011-07-28 00:00:00'), 1: Timestamp('2011-08-04 00:00:00'), 2: Timestamp('2011-08-11 00:00:00'), 3: Timestamp('2011-08-18 00:00:00'), 4: Timestamp('2011-08-25 00:00:00')}, 'Close': {0: 1214.6320520000002, 1: 2956.9050859999998, 2: 2794.344764, 3: 2625.184499, 4: 2587.1843790000003}}
INFO:pyaf.hierarchical:FORECASTING_HIERARCHICAL_TEMPORAL_HORIZONS_FIRST_RESAMPLED_DATA 2W {'TH_2W_start': {0: Timestamp('2011-07-28 00:00:00'), 1: Timestamp('2011-08-11 00:00:00'), 2: Timestamp('2011-08-25 00:00:00'), 3: Timestamp('2011-09-08 00:00:00'), 4: Timestamp('2011-09-22 00:00:00')}, 'Close': {0: 1214.6320520000002, 1: 5751.24985, 2: 5212.368878, 3: 4794.108336, 4: 5359.629179}}
INFO:pyaf.hierarchical:FORECASTING_HIERARCHICAL_TEMPORAL_HORIZONS_FIRST_RESAMPLED_DATA M {'TH_M_start': {0: Timestamp('2011-07-28 00:00:00'), 1: Timestamp('2011-08-28 00:00:00'), 2: Timestamp('2011-09-27 00:00:00'), 3: Timestamp('2011-10-28 00:00:00'), 4: Timestamp('2011-11-27 00:00:00')}, 'Close': {0: 1214.6320520000002, 1: 12584.361559, 2: 11175.609259999997, 3: 11796.610139999997, 4: 12483.521440000002}}
INFO:pyaf.hierarchical:FORECASTING_HIERARCHICAL_TEMPORAL_HORIZONS {'D': 14, 'W': 2, '2W': 1, 'M': 1}
INFO:pyaf.hierarchical:TRAINING_HIERARCHICAL_MODELS_LEVEL_SIGNAL [(0, 'Close_D'), (1, 'Close_W'), (2, 'Close_2W'), (3, 'Close_M')]
Unnamed: 0 Symbol Date Close Low Volume \
0 1257 GOOG 2011-07-28 610.941019 603.001016 6240000
1 1256 GOOG 2011-07-29 603.691033 603.691033 8305700
2 1255 GOOG 2011-08-01 606.771021 599.181019 7961800
3 1254 GOOG 2011-08-02 592.400990 591.570985 6425100
4 1253 GOOG 2011-08-03 601.171059 583.630982 7680000
... ... ... ... ... ... ...
1253 4 GOOG 2016-07-21 738.630005 735.830994 969100
1254 3 GOOG 2016-07-22 742.739990 736.559998 1256300
1255 2 GOOG 2016-07-25 739.770020 737.500000 1030700
1256 1 GOOG 2016-07-26 738.419983 734.270020 1179400
1257 0 GOOG 2016-07-27 741.770020 737.000000 1497100
Open Adj_Close High
0 605.191021 305.165344 615.981027
1 604.231014 301.543972 614.961042
2 611.221057 303.082428 615.501085
3 606.001054 295.904590 609.671015
4 594.271013 300.285244 603.001016
... ... ... ...
1253 740.359985 738.630005 741.690002
1254 741.859985 742.739990 743.239990
1255 740.669983 739.770020 742.609985
1256 739.039978 738.419983 741.690002
1257 738.280029 741.770020 744.460022
[1258 rows x 9 columns]
INFO:pyaf.std:START_TRAINING 'Close_W'
INFO:pyaf.std:START_TRAINING 'Close_2W'
INFO:pyaf.std:START_TRAINING 'Close_D'
INFO:pyaf.std:START_TRAINING 'Close_M'
INFO:pyaf.std:END_TRAINING_TIME_IN_SECONDS 'Close_M' 4.861104726791382
INFO:pyaf.std:END_TRAINING_TIME_IN_SECONDS 'Close_2W' 6.084774732589722
INFO:pyaf.std:END_TRAINING_TIME_IN_SECONDS 'Close_W' 7.977045774459839
INFO:pyaf.std:END_TRAINING_TIME_IN_SECONDS 'Close_D' 9.622517108917236
INFO:pyaf.hierarchical:TRAINING_HIERARCHICAL_MODEL_COMPUTE_TOP_DOWN_HISTORICAL_PROPORTIONS
INFO:pyaf.hierarchical:FORECASTING_HIERARCHICAL_MODELS_LEVEL_SIGNAL [(0, 'Close_D'), (1, 'Close_W'), (2, 'Close_2W'), (3, 'Close_M')]
INFO:pyaf.std:START_FORECASTING 'Close_D'
INFO:pyaf.std:START_FORECASTING 'Close_W'
INFO:pyaf.std:START_FORECASTING 'Close_2W'
INFO:pyaf.std:START_FORECASTING 'Close_M'
INFO:pyaf.std:END_FORECAST_TIME_IN_SECONDS 'Close_W' 0.3165409564971924
INFO:pyaf.std:END_FORECAST_TIME_IN_SECONDS 'Close_M' 0.2951540946960449
INFO:pyaf.std:END_FORECAST_TIME_IN_SECONDS 'Close_D' 0.36931705474853516
INFO:pyaf.std:END_FORECAST_TIME_IN_SECONDS 'Close_2W' 0.5673017501831055
INFO:pyaf.hierarchical:FORECASTING_HIERARCHICAL_MODEL_COMBINATION_METHODS ['BU', 'TD', 'MO', 'OC']
INFO:pyaf.hierarchical:FORECASTING_HIERARCHICAL_MODEL_BOTTOM_UP_METHOD BU
INFO:pyaf.hierarchical:FORECASTING_HIERARCHICAL_MODEL_TOP_DOWN_METHOD AHP_TD
INFO:pyaf.hierarchical:FORECASTING_HIERARCHICAL_MODEL_TOP_DOWN_METHOD PHA_TD
INFO:pyaf.hierarchical:FORECASTING_HIERARCHICAL_MODEL_MIDDLE_OUT_METHOD MO
INFO:pyaf.hierarchical:FORECASTING_HIERARCHICAL_MODEL_OPTIMAL_COMBINATION_METHOD OC
INFO:pyaf.hierarchical:FORECASTING_HIERARCHICAL_MODEL_OPTIMAL_COMBINATION_METHOD
INFO:pyaf.hierarchical:STRUCTURE [0, 1, 2, 3]
INFO:pyaf.hierarchical:DATASET_COLUMNS Index(['TH_D_start', 'Close_D', 'Close_D_Forecast',
'Close_D_Forecast_Lower_Bound', 'Close_D_Forecast_Upper_Bound', 'Date',
'TH_W_start', 'Close_W', 'Close_W_Forecast',
'Close_W_Forecast_Lower_Bound', 'Close_W_Forecast_Upper_Bound',
'TH_2W_start', 'Close_2W', 'Close_2W_Forecast',
'Close_2W_Forecast_Lower_Bound', 'Close_2W_Forecast_Upper_Bound',
'TH_M_start', 'Close_M', 'Close_M_Forecast',
'Close_M_Forecast_Lower_Bound', 'Close_M_Forecast_Upper_Bound',
'Close_D_BU_Forecast', 'Close_W_BU_Forecast', 'Close_2W_BU_Forecast',
'Close_M_BU_Forecast', 'Close_M_AHP_TD_Forecast',
'Close_2W_AHP_TD_Forecast', 'Close_W_AHP_TD_Forecast',
'Close_D_AHP_TD_Forecast', 'Close_M_PHA_TD_Forecast',
'Close_2W_PHA_TD_Forecast', 'Close_W_PHA_TD_Forecast',
'Close_D_PHA_TD_Forecast', 'Close_2W_MO_Forecast',
'Close_W_MO_Forecast', 'Close_D_MO_Forecast', 'Close_M_MO_Forecast',
'Close_D_OC_Forecast', 'Close_W_OC_Forecast', 'Close_2W_OC_Forecast',
'Close_M_OC_Forecast'],
dtype='object')
INFO:pyaf.hierarchical:STRUCTURE_LEVEL (0, ['Close_D'])
INFO:pyaf.hierarchical:MODEL_LEVEL (0, ['Close_D'])
INFO:pyaf.hierarchical:STRUCTURE_LEVEL (1, ['Close_W'])
INFO:pyaf.hierarchical:MODEL_LEVEL (1, ['Close_W'])
INFO:pyaf.hierarchical:STRUCTURE_LEVEL (2, ['Close_2W'])
INFO:pyaf.hierarchical:MODEL_LEVEL (2, ['Close_2W'])
INFO:pyaf.hierarchical:STRUCTURE_LEVEL (3, ['Close_M'])
INFO:pyaf.hierarchical:MODEL_LEVEL (3, ['Close_M'])
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_FIT_PERF {'Signal': 'Close_2W_AHP_TD_Forecast', 'Length': 995, 'MAPE': 2776032921475.9487, 'RMSE': 2737.5848411293773, 'MAE': 952.5951585290619, 'SMAPE': 0.2576, 'ErrorMean': -369.84385686993306, 'ErrorStdDev': 2712.487102995502, 'R2': -0.7016167171133239, 'Pearson': -0.018367787198827003}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_VALID_PERF {'Signal': 'Close_2W_AHP_TD_Forecast', 'Length': 249, 'MAPE': 3825166537693.5825, 'RMSE': 2864.4445048657763, 'MAE': 1057.4950468336053, 'SMAPE': 0.2811, 'ErrorMean': -292.4617392949088, 'ErrorStdDev': 2849.475118772638, 'R2': -0.9982550521290008, 'Pearson': -0.06813589537097635}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_FIT_PERF {'Signal': 'Close_2W_BU_Forecast', 'Length': 995, 'MAPE': 3345651520166.883, 'RMSE': 1608.2278980436922, 'MAE': 673.5692136559799, 'SMAPE': 0.263, 'ErrorMean': -0.26203214271358155, 'ErrorStdDev': 1608.2278766969525, 'R2': 0.41275172202364296, 'Pearson': 0.6424576380265884}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_VALID_PERF {'Signal': 'Close_2W_BU_Forecast', 'Length': 249, 'MAPE': 3513041187778.162, 'RMSE': 1530.8936991572916, 'MAE': 689.1391409411646, 'SMAPE': 0.2755, 'ErrorMean': 13.46909661445786, 'ErrorStdDev': 1530.8344461619245, 'R2': 0.4292312786510575, 'Pearson': 0.6553438393838626}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_FIT_PERF {'Signal': 'Close_2W_MO_Forecast', 'Length': 995, 'MAPE': 0.009, 'RMSE': 252.2875406738142, 'MAE': 56.31200347511345, 'SMAPE': 0.0089, 'ErrorMean': 0.4189053213835233, 'ErrorStdDev': 252.2871928924914, 'R2': 0.9855483253669476, 'Pearson': 0.9927481207362143}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_VALID_PERF {'Signal': 'Close_2W_MO_Forecast', 'Length': 249, 'MAPE': 0.0061, 'RMSE': 158.1108826921304, 'MAE': 41.374497557833145, 'SMAPE': 0.0062, 'ErrorMean': -1.6287428552427792, 'ErrorStdDev': 158.10249340980084, 'R2': 0.9939117339736898, 'Pearson': 0.9969520798027944}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_FIT_PERF {'Signal': 'Close_2W_OC_Forecast', 'Length': 995, 'MAPE': 3464529399322.8633, 'RMSE': 1542.6180002764122, 'MAE': 749.7589258476539, 'SMAPE': 1.8812, 'ErrorMean': -46.557779444026, 'ErrorStdDev': 1541.9152596527601, 'R2': 0.45968956124563076, 'Pearson': 0.7186638424149668}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_VALID_PERF {'Signal': 'Close_2W_OC_Forecast', 'Length': 249, 'MAPE': 3910685985154.9287, 'RMSE': 1547.4705127139694, 'MAE': 795.8218586386099, 'SMAPE': 1.885, 'ErrorMean': -13.684661607635995, 'ErrorStdDev': 1547.4100031200262, 'R2': 0.4168035675631455, 'Pearson': 0.6660794172718046}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_FIT_PERF {'Signal': 'Close_2W_PHA_TD_Forecast', 'Length': 995, 'MAPE': 1941463088906.119, 'RMSE': 2467.6697383242617, 'MAE': 864.8445702333548, 'SMAPE': 0.2573, 'ErrorMean': -461.9343211535002, 'ErrorStdDev': 2424.048394810175, 'R2': -0.3826130104278689, 'Pearson': -0.018367787198827003}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_VALID_PERF {'Signal': 'Close_2W_PHA_TD_Forecast', 'Length': 249, 'MAPE': 2675191487967.812, 'RMSE': 2518.6713134211805, 'MAE': 942.4975418610283, 'SMAPE': 0.2811, 'ErrorMean': -407.45924426748576, 'ErrorStdDev': 2485.4943470689577, 'R2': -0.5449452225367206, 'Pearson': -0.06813589537097633}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_FIT_PERF {'Signal': 'Close_D_AHP_TD_Forecast', 'Length': 995, 'MAPE': 0.9838, 'RMSE': 711.0037085402807, 'MAE': 682.6197776102641, 'SMAPE': 1.9479, 'ErrorMean': -663.7626601541538, 'ErrorStdDev': 254.84388268725178, 'R2': -13.273727139752086, 'Pearson': 0.01723878979653144}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_VALID_PERF {'Signal': 'Close_D_AHP_TD_Forecast', 'Length': 249, 'MAPE': 0.9766, 'RMSE': 686.5856981610767, 'MAE': 680.238805606447, 'SMAPE': 1.9335, 'ErrorMean': -656.9629594537939, 'ErrorStdDev': 199.49834792560532, 'R2': -204.16066529229056, 'Pearson': 0.02539554181880069}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_FIT_PERF {'Signal': 'Close_D_BU_Forecast', 'Length': 995, 'MAPE': 0.0112, 'RMSE': 20.824307340848147, 'MAE': 7.480356877386935, 'SMAPE': 0.0109, 'ErrorMean': 0.06471460402010061, 'ErrorStdDev': 20.824206785520754, 'R2': 0.987755676705081, 'Pearson': 0.9938766114047678}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_VALID_PERF {'Signal': 'Close_D_BU_Forecast', 'Length': 249, 'MAPE': 0.0123, 'RMSE': 12.679197146142299, 'MAE': 8.433778807228913, 'SMAPE': 0.0123, 'ErrorMean': -0.5976305100401604, 'ErrorStdDev': 12.665104738777812, 'R2': 0.9300338297228191, 'Pearson': 0.9659469967328196}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_FIT_PERF {'Signal': 'Close_D_MO_Forecast', 'Length': 995, 'MAPE': 0.9075, 'RMSE': 683.9171568549807, 'MAE': 631.0062078639555, 'SMAPE': 1.8061, 'ErrorMean': -625.023257915492, 'ErrorStdDev': 277.6483468441775, 'R2': -12.206892892853324, 'Pearson': 0.07000778624986768}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_VALID_PERF {'Signal': 'Close_D_MO_Forecast', 'Length': 249, 'MAPE': 0.9044, 'RMSE': 662.5512235424183, 'MAE': 630.1077693108908, 'SMAPE': 1.804, 'ErrorMean': -626.5016298974506, 'ErrorStdDev': 215.56862376837987, 'R2': -190.04844802025605, 'Pearson': 0.02143634358885203}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_FIT_PERF {'Signal': 'Close_D_OC_Forecast', 'Length': 995, 'MAPE': 1.0883, 'RMSE': 1012.521465962027, 'MAE': 740.4937183965897, 'SMAPE': 1.1292, 'ErrorMean': -66.07724585005614, 'ErrorStdDev': 1010.3630617826266, 'R2': -27.946905074282803, 'Pearson': 0.09266731601743053}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_VALID_PERF {'Signal': 'Close_D_OC_Forecast', 'Length': 249, 'MAPE': 1.0881, 'RMSE': 1017.7330788922806, 'MAE': 758.0471843522033, 'SMAPE': 1.1232, 'ErrorMean': -35.53108734659183, 'ErrorStdDev': 1017.1126592976464, 'R2': -449.7880286769803, 'Pearson': 0.040075654908449804}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_FIT_PERF {'Signal': 'Close_D_PHA_TD_Forecast', 'Length': 995, 'MAPE': 0.9742, 'RMSE': 709.2472150859768, 'MAE': 677.4978108333861, 'SMAPE': 1.9421, 'ErrorMean': -673.3104342383566, 'ErrorStdDev': 222.90058603101392, 'R2': -13.203289422233622, 'Pearson': 0.01723878979653145}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_VALID_PERF {'Signal': 'Close_D_PHA_TD_Forecast', 'Length': 249, 'MAPE': 0.9621, 'RMSE': 684.1267817735454, 'MAE': 670.1741488454644, 'SMAPE': 1.9219, 'ErrorMean': -668.8856944108495, 'ErrorStdDev': 143.6014670967674, 'R2': -202.69378483847834, 'Pearson': 0.025395541818800684}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_FIT_PERF {'Signal': 'Close_M_AHP_TD_Forecast', 'Length': 995, 'MAPE': 0.0177, 'RMSE': 830.5523098115353, 'MAE': 115.61477484045227, 'SMAPE': 0.0083, 'ErrorMean': -3.6562601076298623e-14, 'ErrorStdDev': 830.5523098115353, 'R2': 0.9060575364102789, 'Pearson': 0.9518705460356883}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_VALID_PERF {'Signal': 'Close_M_AHP_TD_Forecast', 'Length': 249, 'MAPE': 0.0026, 'RMSE': 228.18956087704387, 'MAE': 38.863976915662676, 'SMAPE': 0.0026, 'ErrorMean': -3.198519037148638, 'ErrorStdDev': 228.16714305356746, 'R2': 0.9937872694257572, 'Pearson': 0.9969040392383512}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_FIT_PERF {'Signal': 'Close_M_BU_Forecast', 'Length': 995, 'MAPE': 6610282025093.147, 'RMSE': 3459.048242851759, 'MAE': 1117.1464262548284, 'SMAPE': 0.2571, 'ErrorMean': 206.39107728620766, 'ErrorStdDev': 3452.8853832110435, 'R2': -0.6294506153446426, 'Pearson': -0.02060826648071987}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_VALID_PERF {'Signal': 'Close_M_BU_Forecast', 'Length': 249, 'MAPE': 6733496502090.183, 'RMSE': 3643.1783833322443, 'MAE': 1263.6987668917452, 'SMAPE': 0.2811, 'ErrorMean': 83.00053352628333, 'ErrorStdDev': 3642.232782815192, 'R2': -0.5836231714521563, 'Pearson': -0.06789777755155059}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_FIT_PERF {'Signal': 'Close_M_MO_Forecast', 'Length': 995, 'MAPE': 6610282025093.147, 'RMSE': 3459.048242851759, 'MAE': 1117.1464262548284, 'SMAPE': 0.2571, 'ErrorMean': 206.39107728620766, 'ErrorStdDev': 3452.8853832110435, 'R2': -0.6294506153446426, 'Pearson': -0.02060826648071987}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_VALID_PERF {'Signal': 'Close_M_MO_Forecast', 'Length': 249, 'MAPE': 6733496502090.183, 'RMSE': 3643.1783833322443, 'MAE': 1263.6987668917452, 'SMAPE': 0.2811, 'ErrorMean': 83.00053352628333, 'ErrorStdDev': 3642.232782815192, 'R2': -0.5836231714521563, 'Pearson': -0.06789777755155059}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_FIT_PERF {'Signal': 'Close_M_OC_Forecast', 'Length': 995, 'MAPE': 4974338705865.516, 'RMSE': 2268.4273346235955, 'MAE': 843.3008711937699, 'SMAPE': 1.9717, 'ErrorMean': 159.41439252079812, 'ErrorStdDev': 2262.818955180625, 'R2': 0.2992264390928284, 'Pearson': 0.5923508921705316}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_VALID_PERF {'Signal': 'Close_M_OC_Forecast', 'Length': 249, 'MAPE': 5041008848525.577, 'RMSE': 2363.951899294798, 'MAE': 937.2571549312195, 'SMAPE': 1.9661, 'ErrorMean': 70.94461477389014, 'ErrorStdDev': 2362.8870992525367, 'R2': 0.33324198376620917, 'Pearson': 0.6505448339141023}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_FIT_PERF {'Signal': 'Close_M_PHA_TD_Forecast', 'Length': 995, 'MAPE': 0.0177, 'RMSE': 830.5523098115353, 'MAE': 115.61477484045227, 'SMAPE': 0.0083, 'ErrorMean': -3.6562601076298623e-14, 'ErrorStdDev': 830.5523098115353, 'R2': 0.9060575364102789, 'Pearson': 0.9518705460356883}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_VALID_PERF {'Signal': 'Close_M_PHA_TD_Forecast', 'Length': 249, 'MAPE': 0.0026, 'RMSE': 228.18956087704387, 'MAE': 38.863976915662676, 'SMAPE': 0.0026, 'ErrorMean': -3.198519037148638, 'ErrorStdDev': 228.16714305356746, 'R2': 0.9937872694257572, 'Pearson': 0.9969040392383512}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_FIT_PERF {'Signal': 'Close_W_AHP_TD_Forecast', 'Length': 995, 'MAPE': 1240260018834.081, 'RMSE': 1734.9964251298188, 'MAE': 793.2183984298831, 'SMAPE': 0.4454, 'ErrorMean': -523.2553118877048, 'ErrorStdDev': 1654.2117378964979, 'R2': -0.5077121645183675, 'Pearson': -0.01633332545763576}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_VALID_PERF {'Signal': 'Close_W_AHP_TD_Forecast', 'Length': 249, 'MAPE': 1715558923178.67, 'RMSE': 1763.8432245055267, 'MAE': 851.5078985405795, 'SMAPE': 0.475, 'ErrorMean': -499.1770801501836, 'ErrorStdDev': 1691.7343654624954, 'R2': -0.6656955211606534, 'Pearson': -0.049381651149181006}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_FIT_PERF {'Signal': 'Close_W_BU_Forecast', 'Length': 995, 'MAPE': 5554731227196.139, 'RMSE': 1400.465595836037, 'MAE': 1091.100032286432, 'SMAPE': 1.8609, 'ErrorMean': 19.84621315276382, 'ErrorStdDev': 1400.3249669072825, 'R2': 0.017650204967116556, 'Pearson': 0.1335951801411986}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_VALID_PERF {'Signal': 'Close_W_BU_Forecast', 'Length': 249, 'MAPE': 5534286741727.069, 'RMSE': 1365.7025818284144, 'MAE': 1100.4248983333332, 'SMAPE': 1.859, 'ErrorMean': 6.4324500120482, 'ErrorStdDev': 1365.6874333461665, 'R2': 0.0014083815798241472, 'Pearson': 0.03788206979138008}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_FIT_PERF {'Signal': 'Close_W_MO_Forecast', 'Length': 995, 'MAPE': 0.1116, 'RMSE': 1134.8309894426818, 'MAE': 377.78030112282846, 'SMAPE': 0.2103, 'ErrorMean': -334.36037070941194, 'ErrorStdDev': 1084.4558622177856, 'R2': 0.3549644601377061, 'Pearson': 0.6482899970119079}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_VALID_PERF {'Signal': 'Close_W_MO_Forecast', 'Length': 249, 'MAPE': 0.1128, 'RMSE': 1096.81650445594, 'MAE': 377.9494623195107, 'SMAPE': 0.217, 'ErrorMean': -349.8849402430323, 'ErrorStdDev': 1039.5128537146988, 'R2': 0.35591437051876196, 'Pearson': 0.6555957042377438}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_FIT_PERF {'Signal': 'Close_W_OC_Forecast', 'Length': 995, 'MAPE': 2343761442265.795, 'RMSE': 1080.8877101697558, 'MAE': 549.6539400711623, 'SMAPE': 1.7241, 'ErrorMean': -46.295747301312424, 'ErrorStdDev': 1079.8958032041014, 'R2': 0.4148294946718465, 'Pearson': 0.6483403146875693}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_VALID_PERF {'Signal': 'Close_W_OC_Forecast', 'Length': 249, 'MAPE': 2704660530134.3774, 'RMSE': 1082.6351910407116, 'MAE': 578.0573424462906, 'SMAPE': 1.7207, 'ErrorMean': -28.50100682450347, 'ErrorStdDev': 1082.2599731532841, 'R2': 0.3724621360584125, 'Pearson': 0.6227352342547627}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_FIT_PERF {'Signal': 'Close_W_PHA_TD_Forecast', 'Length': 995, 'MAPE': 878673508467.635, 'RMSE': 1642.6286968889538, 'MAE': 751.539286605809, 'SMAPE': 0.4442, 'ErrorMean': -567.7582670097286, 'ErrorStdDev': 1541.3888497342946, 'R2': -0.3514503083491063, 'Pearson': -0.01633332545763576}
INFO:pyaf.hierarchical:REPORT_COMBINED_FORECASTS_VALID_PERF {'Signal': 'Close_W_PHA_TD_Forecast', 'Length': 249, 'MAPE': 1215403346976.707, 'RMSE': 1643.3198066391965, 'MAE': 797.8305913457029, 'SMAPE': 0.4742, 'ErrorMean': -554.7499219504016, 'ErrorStdDev': 1546.8524528825333, 'R2': -0.4458386669503469, 'Pearson': -0.04938165114918099}
INFO:pyaf.std:END_HIERARCHICAL_TRAINING_TIME_IN_SECONDS 11.185094594955444
In [11]:
train_df
Out[11]:
Unnamed: 0
Symbol
Date
Close
Low
Volume
Open
Adj_Close
High
0
1257
GOOG
2011-07-28
610.941019
603.001016
6240000
605.191021
305.165344
615.981027
1
1256
GOOG
2011-07-29
603.691033
603.691033
8305700
604.231014
301.543972
614.961042
2
1255
GOOG
2011-08-01
606.771021
599.181019
7961800
611.221057
303.082428
615.501085
3
1254
GOOG
2011-08-02
592.400990
591.570985
6425100
606.001054
295.904590
609.671015
4
1253
GOOG
2011-08-03
601.171059
583.630982
7680000
594.271013
300.285244
603.001016
...
...
...
...
...
...
...
...
...
...
1253
4
GOOG
2016-07-21
738.630005
735.830994
969100
740.359985
738.630005
741.690002
1254
3
GOOG
2016-07-22
742.739990
736.559998
1256300
741.859985
742.739990
743.239990
1255
2
GOOG
2016-07-25
739.770020
737.500000
1030700
740.669983
739.770020
742.609985
1256
1
GOOG
2016-07-26
738.419983
734.270020
1179400
739.039978
738.419983
741.690002
1257
0
GOOG
2016-07-27
741.770020
737.000000
1497100
738.280029
741.770020
744.460022
1258 rows × 9 columns
In [12]:
lEngine.getModelInfo()
INFO:pyaf.std:TIME_DETAIL TimeVariable='TH_D_start' TimeMin=2011-07-28T00:00:00.000000 TimeMax=2015-07-13T00:00:00.000000 TimeDelta=<DateOffset: days=1> Horizon=14
INFO:pyaf.std:SIGNAL_DETAIL_ORIG SignalVariable='Close_D' Length=1258 Min=490.92085099999997 Max=1220.172036 Mean=696.2858158593004 StdDev=168.76391868223206
INFO:pyaf.std:SIGNAL_DETAIL_TRANSFORMED TransformedSignalVariable='_Close_D' Min=490.92085099999997 Max=1220.172036 Mean=696.2858158593004 StdDev=168.76391868223206
INFO:pyaf.std:BEST_TRANSOFORMATION_TYPE '_'
INFO:pyaf.std:BEST_DECOMPOSITION '_Close_D_Lag1Trend_residue_zeroCycle_residue_NoAR' [Lag1Trend + NoCycle + NoAR]
INFO:pyaf.std:TREND_DETAIL '_Close_D_Lag1Trend' [Lag1Trend]
INFO:pyaf.std:CYCLE_DETAIL '_Close_D_Lag1Trend_residue_zeroCycle' [NoCycle]
INFO:pyaf.std:AUTOREG_DETAIL '_Close_D_Lag1Trend_residue_zeroCycle_residue_NoAR' [NoAR]
INFO:pyaf.std:MODEL_MAPE MAPE_Fit=0.0112 MAPE_Forecast=0.0123 MAPE_Test=0.0069
INFO:pyaf.std:MODEL_SMAPE SMAPE_Fit=0.0109 SMAPE_Forecast=0.0123 SMAPE_Test=0.0069
INFO:pyaf.std:MODEL_MASE MASE_Fit=0.999 MASE_Forecast=1.0029 MASE_Test=1.0891
INFO:pyaf.std:MODEL_L1 L1_Fit=7.480356877386935 L1_Forecast=8.433778807228913 L1_Test=4.977870357142884
INFO:pyaf.std:MODEL_L2 L2_Fit=20.824307340848147 L2_Forecast=12.679197146142299 L2_Test=6.114957523107389
INFO:pyaf.std:MODEL_COMPLEXITY 32
INFO:pyaf.std:AR_MODEL_DETAIL_START
INFO:pyaf.std:AR_MODEL_DETAIL_END
INFO:pyaf.std:TIME_DETAIL TimeVariable='TH_W_start' TimeMin=2011-07-28T00:00:00.000000 TimeMax=2015-07-09T00:00:00.000000 TimeDelta=<DateOffset: days=7> Horizon=2
INFO:pyaf.std:SIGNAL_DETAIL_ORIG SignalVariable='Close_W' Length=253 Min=1214.6320520000002 Max=6087.550444 Mean=3365.884921806324 StdDev=854.991935799981
INFO:pyaf.std:SIGNAL_DETAIL_TRANSFORMED TransformedSignalVariable='_Close_W' Min=1214.6320520000002 Max=6087.550444 Mean=3365.884921806324 StdDev=854.991935799981
INFO:pyaf.std:BEST_TRANSOFORMATION_TYPE '_'
INFO:pyaf.std:BEST_DECOMPOSITION '_Close_W_ConstantTrend_residue_bestCycle_byL2_residue_NoAR' [ConstantTrend + Cycle + NoAR]
INFO:pyaf.std:TREND_DETAIL '_Close_W_ConstantTrend' [ConstantTrend]
INFO:pyaf.std:CYCLE_DETAIL '_Close_W_ConstantTrend_residue_bestCycle_byL2' [Cycle]
INFO:pyaf.std:AUTOREG_DETAIL '_Close_W_ConstantTrend_residue_bestCycle_byL2_residue_NoAR' [NoAR]
INFO:pyaf.std:MODEL_MAPE MAPE_Fit=0.2301 MAPE_Forecast=0.0823 MAPE_Test=0.0722
INFO:pyaf.std:MODEL_SMAPE SMAPE_Fit=0.2217 SMAPE_Forecast=0.0806 SMAPE_Test=0.075
INFO:pyaf.std:MODEL_MASE MASE_Fit=2.8928 MASE_Forecast=1.1166 MASE_Test=2.6438
INFO:pyaf.std:MODEL_L1 L1_Fit=765.81600104325 L1_Forecast=267.1474366921568 L1_Test=263.8219616000001
INFO:pyaf.std:MODEL_L2 L2_Fit=947.0066837670896 L2_Forecast=305.9217832752113 L2_Test=270.60575339538264
INFO:pyaf.std:MODEL_COMPLEXITY 8
INFO:pyaf.std:AR_MODEL_DETAIL_START
INFO:pyaf.std:AR_MODEL_DETAIL_END
INFO:pyaf.std:TIME_DETAIL TimeVariable='TH_2W_start' TimeMin=2011-07-28T00:00:00.000000 TimeMax=2015-06-25T00:00:00.000000 TimeDelta=<DateOffset: days=14> Horizon=1
INFO:pyaf.std:SIGNAL_DETAIL_ORIG SignalVariable='Close_2W' Length=127 Min=1214.6320520000002 Max=12157.820753000002 Mean=6678.270371968504 StdDev=1688.3262820022314
INFO:pyaf.std:SIGNAL_DETAIL_TRANSFORMED TransformedSignalVariable='_Close_2W' Min=1214.6320520000002 Max=12157.820753000002 Mean=6678.270371968504 StdDev=1688.3262820022314
INFO:pyaf.std:BEST_TRANSOFORMATION_TYPE '_'
INFO:pyaf.std:BEST_DECOMPOSITION '_Close_2W_ConstantTrend_residue_bestCycle_byL2_residue_AR(31)' [ConstantTrend + Cycle + AR]
INFO:pyaf.std:TREND_DETAIL '_Close_2W_ConstantTrend' [ConstantTrend]
INFO:pyaf.std:CYCLE_DETAIL '_Close_2W_ConstantTrend_residue_bestCycle_byL2' [Cycle]
INFO:pyaf.std:AUTOREG_DETAIL '_Close_2W_ConstantTrend_residue_bestCycle_byL2_residue_AR(31)' [AR]
INFO:pyaf.std:MODEL_MAPE MAPE_Fit=0.0891 MAPE_Forecast=0.0623 MAPE_Test=0.0509
INFO:pyaf.std:MODEL_SMAPE SMAPE_Fit=0.0882 SMAPE_Forecast=0.0623 SMAPE_Test=0.0522
INFO:pyaf.std:MODEL_MASE MASE_Fit=0.9634 MASE_Forecast=0.8389 MASE_Test=None
INFO:pyaf.std:MODEL_L1 L1_Fit=556.1363266296128 L1_Forecast=412.27156487219423 L1_Test=370.5392450308518
INFO:pyaf.std:MODEL_L2 L2_Fit=794.7139543552947 L2_Forecast=496.0805996019726 L2_Test=370.5392450308518
INFO:pyaf.std:MODEL_COMPLEXITY 33
INFO:pyaf.std:AR_MODEL_DETAIL_START
INFO:pyaf.std:AR_MODEL_COEFF 1 _Close_2W_ConstantTrend_residue_bestCycle_byL2_residue_Lag1 0.8565222359721328
INFO:pyaf.std:AR_MODEL_COEFF 2 _Close_2W_ConstantTrend_residue_bestCycle_byL2_residue_Lag5 -0.21867934678037904
INFO:pyaf.std:AR_MODEL_COEFF 3 _Close_2W_ConstantTrend_residue_bestCycle_byL2_residue_Lag8 -0.18495551541802976
INFO:pyaf.std:AR_MODEL_COEFF 4 _Close_2W_ConstantTrend_residue_bestCycle_byL2_residue_Lag10 -0.17097808622334001
INFO:pyaf.std:AR_MODEL_COEFF 5 _Close_2W_ConstantTrend_residue_bestCycle_byL2_residue_Lag6 0.16849013201276541
INFO:pyaf.std:AR_MODEL_COEFF 6 _Close_2W_ConstantTrend_residue_bestCycle_byL2_residue_Lag19 -0.15289628622103105
INFO:pyaf.std:AR_MODEL_COEFF 7 _Close_2W_ConstantTrend_residue_bestCycle_byL2_residue_Lag18 0.1425129912047825
INFO:pyaf.std:AR_MODEL_COEFF 8 _Close_2W_ConstantTrend_residue_bestCycle_byL2_residue_Lag9 0.13131996647951633
INFO:pyaf.std:AR_MODEL_COEFF 9 _Close_2W_ConstantTrend_residue_bestCycle_byL2_residue_Lag7 0.110728709846457
INFO:pyaf.std:AR_MODEL_COEFF 10 _Close_2W_ConstantTrend_residue_bestCycle_byL2_residue_Lag22 0.10214549806041835
INFO:pyaf.std:AR_MODEL_DETAIL_END
INFO:pyaf.std:TIME_DETAIL TimeVariable='TH_M_start' TimeMin=2011-07-28T00:00:00.000000 TimeMax=2015-05-28T00:00:00.000000 TimeDelta=<DateOffset: days=45> Horizon=1
INFO:pyaf.std:SIGNAL_DETAIL_ORIG SignalVariable='Close_M' Length=42 Min=1214.6320520000002 Max=23863.911013999998 Mean=14639.012529952382 StdDev=4080.495125298337
INFO:pyaf.std:SIGNAL_DETAIL_TRANSFORMED TransformedSignalVariable='_Close_M' Min=1214.6320520000002 Max=23863.911013999998 Mean=14639.012529952382 StdDev=4080.495125298337
INFO:pyaf.std:BEST_TRANSOFORMATION_TYPE '_'
INFO:pyaf.std:BEST_DECOMPOSITION '_Close_M_ConstantTrend_residue_zeroCycle_residue_NoAR' [ConstantTrend + NoCycle + NoAR]
INFO:pyaf.std:TREND_DETAIL '_Close_M_ConstantTrend' [ConstantTrend]
INFO:pyaf.std:CYCLE_DETAIL '_Close_M_ConstantTrend_residue_zeroCycle' [NoCycle]
INFO:pyaf.std:AUTOREG_DETAIL '_Close_M_ConstantTrend_residue_zeroCycle_residue_NoAR' [NoAR]
INFO:pyaf.std:MODEL_MAPE MAPE_Fit=0.5514 MAPE_Forecast=0.0666 MAPE_Test=0.0594
INFO:pyaf.std:MODEL_SMAPE SMAPE_Fit=0.2595 SMAPE_Forecast=0.0664 SMAPE_Test=0.0612
INFO:pyaf.std:MODEL_MASE MASE_Fit=1.8633 MASE_Forecast=0.8219 MASE_Test=None
INFO:pyaf.std:MODEL_L1 L1_Fit=3594.8969051953122 L1_Forecast=972.7200135972229 L1_Test=922.6501296250008
INFO:pyaf.std:MODEL_L2 L2_Fit=4631.306692084218 L2_Forecast=1160.1850995003742 L2_Test=922.6501296250008
INFO:pyaf.std:MODEL_COMPLEXITY 0
INFO:pyaf.std:AR_MODEL_DETAIL_START
INFO:pyaf.std:AR_MODEL_DETAIL_END
In [13]:
lForecast = lEngine.forecast(train_df, iHorizon=14)
INFO:pyaf.std:START_HIERARCHICAL_FORECASTING
INFO:pyaf.hierarchical:FORECASTING_HIERARCHICAL_MODELS_LEVEL_SIGNAL [(0, 'Close_D'), (1, 'Close_W'), (2, 'Close_2W'), (3, 'Close_M')]
INFO:pyaf.std:START_FORECASTING 'Close_D'
INFO:pyaf.std:START_FORECASTING 'Close_W'
INFO:pyaf.std:START_FORECASTING 'Close_2W'
INFO:pyaf.std:START_FORECASTING 'Close_M'
INFO:pyaf.std:END_FORECAST_TIME_IN_SECONDS 'Close_M' 0.27402520179748535
INFO:pyaf.std:END_FORECAST_TIME_IN_SECONDS 'Close_W' 0.30748581886291504
INFO:pyaf.std:END_FORECAST_TIME_IN_SECONDS 'Close_D' 0.3749048709869385
INFO:pyaf.std:END_FORECAST_TIME_IN_SECONDS 'Close_2W' 0.5345020294189453
INFO:pyaf.hierarchical:FORECASTING_HIERARCHICAL_MODEL_COMBINATION_METHODS ['BU', 'TD', 'MO', 'OC']
INFO:pyaf.hierarchical:FORECASTING_HIERARCHICAL_MODEL_BOTTOM_UP_METHOD BU
INFO:pyaf.hierarchical:FORECASTING_HIERARCHICAL_MODEL_TOP_DOWN_METHOD AHP_TD
INFO:pyaf.hierarchical:FORECASTING_HIERARCHICAL_MODEL_TOP_DOWN_METHOD PHA_TD
INFO:pyaf.hierarchical:FORECASTING_HIERARCHICAL_MODEL_MIDDLE_OUT_METHOD MO
INFO:pyaf.hierarchical:FORECASTING_HIERARCHICAL_MODEL_OPTIMAL_COMBINATION_METHOD OC
INFO:pyaf.std:END_HIERARCHICAL_FORECAST_TIME_IN_SECONDS 0.9984056949615479
In [14]:
lForecast
Out[14]:
TH_D_start
Close_D
Close_D_Forecast
Close_D_Forecast_Lower_Bound
Close_D_Forecast_Upper_Bound
Date
TH_W_start
Close_W
Close_W_Forecast
Close_W_Forecast_Lower_Bound
...
Close_W_PHA_TD_Forecast
Close_D_PHA_TD_Forecast
Close_2W_MO_Forecast
Close_W_MO_Forecast
Close_D_MO_Forecast
Close_M_MO_Forecast
Close_D_OC_Forecast
Close_W_OC_Forecast
Close_2W_OC_Forecast
Close_M_OC_Forecast
0
2011-07-28
610.941019
610.941019
NaN
NaN
2011-07-28
2011-07-28
1214.632052
3292.628598
NaN
...
3362.615927
695.684197
1951.478567
985.11477
203.808223
1951.478567
5118.774516
5118.774516
5118.774516
5118.774516
1
2011-07-29
603.691033
610.941019
NaN
NaN
2011-07-29
NaT
0.000000
0.000000
NaN
...
0.000000
0.000000
0.000000
0.00000
0.000000
0.000000
152.735255
152.735255
152.735255
152.735255
2
2011-08-01
606.771021
603.691033
NaN
NaN
2011-08-01
NaT
0.000000
0.000000
NaN
...
0.000000
0.000000
0.000000
0.00000
0.000000
0.000000
150.922758
150.922758
150.922758
150.922758
3
2011-08-02
592.400990
606.771021
NaN
NaN
2011-08-02
NaT
0.000000
0.000000
NaN
...
0.000000
0.000000
0.000000
0.00000
0.000000
0.000000
151.692755
151.692755
151.692755
151.692755
4
2011-08-03
601.171059
592.400990
NaN
NaN
2011-08-03
NaT
0.000000
0.000000
NaN
...
0.000000
0.000000
0.000000
0.00000
0.000000
0.000000
148.100248
148.100248
148.100248
148.100248
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
1267
2016-08-06
NaN
741.770020
667.994786
815.545254
2016-08-06
NaT
NaN
0.000000
NaN
...
0.000000
0.000000
0.000000
0.00000
0.000000
0.000000
185.442505
185.442505
185.442505
185.442505
1268
2016-08-07
NaN
741.770020
665.662316
817.877724
2016-08-07
NaT
NaN
0.000000
NaN
...
0.000000
0.000000
0.000000
0.00000
0.000000
0.000000
185.442505
185.442505
185.442505
185.442505
1269
2016-08-08
NaN
741.770020
663.261926
820.278114
2016-08-08
NaT
NaN
0.000000
NaN
...
0.000000
0.000000
0.000000
0.00000
0.000000
0.000000
185.442505
185.442505
185.442505
185.442505
1270
2016-08-09
NaN
741.770020
661.346074
822.193966
2016-08-09
NaT
NaN
0.000000
NaN
...
0.000000
0.000000
0.000000
0.00000
0.000000
0.000000
185.442505
185.442505
185.442505
185.442505
1271
2016-08-10
NaN
741.770020
659.492849
824.047191
2016-08-10
NaT
NaN
0.000000
NaN
...
0.000000
0.000000
0.000000
0.00000
0.000000
0.000000
185.442505
185.442505
185.442505
185.442505
1272 rows × 41 columns
In [15]:
lForecast.columns
Out[15]:
Index(['TH_D_start', 'Close_D', 'Close_D_Forecast',
'Close_D_Forecast_Lower_Bound', 'Close_D_Forecast_Upper_Bound', 'Date',
'TH_W_start', 'Close_W', 'Close_W_Forecast',
'Close_W_Forecast_Lower_Bound', 'Close_W_Forecast_Upper_Bound',
'TH_2W_start', 'Close_2W', 'Close_2W_Forecast',
'Close_2W_Forecast_Lower_Bound', 'Close_2W_Forecast_Upper_Bound',
'TH_M_start', 'Close_M', 'Close_M_Forecast',
'Close_M_Forecast_Lower_Bound', 'Close_M_Forecast_Upper_Bound',
'Close_D_BU_Forecast', 'Close_W_BU_Forecast', 'Close_2W_BU_Forecast',
'Close_M_BU_Forecast', 'Close_M_AHP_TD_Forecast',
'Close_2W_AHP_TD_Forecast', 'Close_W_AHP_TD_Forecast',
'Close_D_AHP_TD_Forecast', 'Close_M_PHA_TD_Forecast',
'Close_2W_PHA_TD_Forecast', 'Close_W_PHA_TD_Forecast',
'Close_D_PHA_TD_Forecast', 'Close_2W_MO_Forecast',
'Close_W_MO_Forecast', 'Close_D_MO_Forecast', 'Close_M_MO_Forecast',
'Close_D_OC_Forecast', 'Close_W_OC_Forecast', 'Close_2W_OC_Forecast',
'Close_M_OC_Forecast'],
dtype='object')
In [16]:
lForecast.plot('Date' , ['Close_D' , 'Close_W' , 'Close_2W'] )
Out[16]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f7c282ca910>
In [17]:
lForecast.plot('TH_D_start' , ['Close_D' , 'Close_D_Forecast', 'Close_D_Forecast_Lower_Bound', 'Close_D_Forecast_Upper_Bound', 'Close_D_OC_Forecast'] )
Out[17]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f7c281ca040>
In [18]:
lForecast.plot('TH_W_start' , ['Close_W' , 'Close_W_Forecast', 'Close_W_Forecast_Lower_Bound', 'Close_W_Forecast_Upper_Bound', 'Close_W_OC_Forecast' ] )
Out[18]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f7c281537f0>
In [19]:
lForecast.plot('TH_2W_start' , ['Close_2W' , 'Close_2W_Forecast' ,'Close_2W_Forecast_Lower_Bound', 'Close_2W_Forecast_Upper_Bound', 'Close_2W_OC_Forecast' ] )
Out[19]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f7c2814a190>
In [20]:
lForecast.plot('TH_M_start' , ['Close_M' , 'Close_M_Forecast' , 'Close_M_Forecast_Lower_Bound', 'Close_M_Forecast_Upper_Bound', 'Close_M_OC_Forecast' ] )
Out[20]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f7c280a3850>
In [21]:
lForecast[lForecast.Date > goog_dataframe.Date.max()].sum()
Out[21]:
Close_D 0.000000
Close_D_Forecast 10384.780280
Close_D_Forecast_Lower_Bound 9515.444399
Close_D_Forecast_Upper_Bound 11254.116161
Close_W 0.000000
Close_W_Forecast 6761.284900
Close_W_Forecast_Lower_Bound 5562.071510
Close_W_Forecast_Upper_Bound 7960.498291
Close_2W 0.000000
Close_2W_Forecast 7217.101281
Close_2W_Forecast_Lower_Bound 6244.783305
Close_2W_Forecast_Upper_Bound 8189.419256
Close_M 0.000000
Close_M_Forecast 0.000000
Close_M_Forecast_Lower_Bound 0.000000
Close_M_Forecast_Upper_Bound 0.000000
Close_D_BU_Forecast 10384.780280
Close_W_BU_Forecast 10384.780280
Close_2W_BU_Forecast 6761.284900
Close_M_BU_Forecast 7217.101281
Close_M_AHP_TD_Forecast 0.000000
Close_2W_AHP_TD_Forecast 0.000000
Close_W_AHP_TD_Forecast 0.000000
Close_D_AHP_TD_Forecast 0.000000
Close_M_PHA_TD_Forecast 0.000000
Close_2W_PHA_TD_Forecast 0.000000
Close_W_PHA_TD_Forecast 0.000000
Close_D_PHA_TD_Forecast 0.000000
Close_2W_MO_Forecast 7217.101281
Close_W_MO_Forecast 3643.223752
Close_D_MO_Forecast 753.738532
Close_M_MO_Forecast 7217.101281
Close_D_OC_Forecast 6090.791615
Close_W_OC_Forecast 6090.791615
Close_2W_OC_Forecast 6090.791615
Close_M_OC_Forecast 6090.791615
dtype: float64
In [ ]:
Content source: antoinecarme/pyaf
Similar notebooks: