-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUntitled-2.py
149 lines (92 loc) · 3.16 KB
/
Untitled-2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
from eda_fucntions import *
# Load imputed data and calculate returns
ts1_i, ts2_i, rt1_i, rt2_i = load_data_and_calculate_returns(
'interpolate_clean_df.csv', imputed=True)
# Load non-imputed data and calculate returns
ts1_o, ts2_o, rt_1_o, rt_2_o = load_data_and_calculate_returns(
"Test_data.csv", imputed=False)
# plot normalised time series
plot_normalised_price(ts1_o, ts2_o)
# non-imputed data
plot_series_and_returns(ts1_o, 'ts1_raw')
plot_series_and_returns(ts2_o, 'ts2_raw')
# analyse time series
# non-imputed data
ts1 = ts1_o
ts2 = ts2_o
rt1 = rt_1_o
rt2 = rt_2_o
#seasonality analysis
print("Seasonality analysis for ts1:")
analyse_seasonality(ts1, 'ts1', freq_list=['H', 'D', 'W'])
print("Seasonality analysis for ts2:")
analyse_seasonality(ts2, 'ts2', freq_list=['H', 'D', 'W'])
#spectral analysis
print("Spectral analysis for rt1:")
spectral_analysis(rt1, 'ts1', freq_list=['H', 'D', 'W'])
print("Spectral analysis for rt2:")
spectral_analysis(rt2, 'ts2', freq_list=['H', 'D', 'W'])
# Analyse distribution of log returns
# - univariate statistics
# - rolling statistics
# - box plot
# - normality
# - stationarity
#distribution analysis
rt = pd.concat([rt1, rt2], axis=1)
print("Distribution analysis for log returns:")
analyse_distribution(rt)
#
#volatility clustering analysis
print("Volatility clustering analysis for rt1:")
assess_and_plot_volatility_clustering(rt1)
print("Volatility clustering analysis for rt2:")
assess_and_plot_volatility_clustering(rt2)
#
#outlier analysis
print("Outlier analysis for rt1 and rt2:")
rt1_d = rt1.resample('H').mean().dropna()
rt2_d = rt2.resample('H').mean().dropna()
analyse_outliers(rt1_d, rt2_d, 'Hourly')
rt1_d = rt1.resample('D').mean().dropna()
rt2_d = rt2.resample('D').mean().dropna()
analyse_outliers(rt1_d, rt2_d, 'Daily')
# imputed data
plot_series_and_returns(ts_1, 'ts1_imputed')
plot_series_and_returns(ts_2, 'ts2_imputed')
# analyse time series
# imputed data
ts1 = ts1_i
ts2 = ts2_i
rt1 = rt1_i
rt2 = rt2_i
#seasonality analysis
print("Seasonality analysis for ts1:")
analyse_seasonality(ts1, 'ts1', freq_list=['H', 'D', 'W'])
print("Seasonality analysis for ts2:")
analyse_seasonality(ts2, 'ts2', freq_list=['H', 'D', 'W'])
#spectral analysis
print("Spectral analysis for rt1:")
spectral_analysis(rt1, 'ts1', freq_list=['H', 'D', 'W'])
print("Spectral analysis for rt2:")
spectral_analysis(rt2, 'ts2', freq_list=['H', 'D', 'W'])
#distribution analysis
rt = pd.concat([rt1, rt2], axis=1)
print("Distribution analysis for log returns:")
analyse_distribution(rt)
#volatility clustering analysis
print("Volatility clustering analysis for rt1:")
assess_and_plot_volatility_clustering(rt1)
print("Volatility clustering analysis for rt2:")
assess_and_plot_volatility_clustering(rt2)
#outlier analysis
print("Outlier analysis for rt1 and rt2:")
rt1_d = rt1.resample('H').mean().dropna()
rt2_d = rt2.resample('H').mean().dropna()
analyse_outliers(rt1_d, rt2_d, 'Hourly')
rt1_d = rt1.resample('D').mean().dropna()
rt2_d = rt2.resample('D').mean().dropna()
analyse_outliers(rt1_d, rt2_d, 'Daily')
# imputed data
plot_series_and_returns(ts_1, 'ts1_imputed')
plot_series_and_returns(ts_2, 'ts2_imputed')