рдЕрдиреБрд╡рд╛рджрдХ рдкреЛрд▓рд┐рдирд╛ рдХрд╛рдмрд┐рд░реЛрд╡рд╛ рдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдиреЗрдЯреЛрд▓рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП, рдХреИрдореНрдмреНрд░рд┐рдЬ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдХреЗ рдЗрдВрдЬреАрдирд┐рдпрд░ рд╡рд┐рд╡реЗрдХ рдкрд▓рд╛рдирдкреНрдкрди рджреНрд╡рд╛рд░рд╛ рдПрдХ рд▓реЗрдЦ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдХреИрд╕реЗ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдЬреЛ рд╕реНрдЯреЙрдХ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкрд░ рд╕реНрдЯреЙрдХ рдХреА рдХреАрдорддреЛрдВ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХреЗредрдорд╢реАрди рдФрд░ рдЧрд╣рди рд╢рд┐рдХреНрд╖рд╛ рдПрдХ рдирдИ рдкреНрд░рднрд╛рд╡реА рд░рдгрдиреАрддрд┐ рдмрди рдЧрдИ рд╣реИ рдЬреЛ рдХрдИ рдирд┐рд╡реЗрд╢ рдлрдВрдб рдЖрдп рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╢реЗрдпрд░ рдмрд╛рдЬрд╛рд░ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреЙрдХ рдХреА рдХреАрдордд (рдпрд╛ рд╕реВрдЪрдХрд╛рдВрдХ)ред рдкрд╛рда рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдореЗрд░реЗ
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдкреВрд░рд╛ рдХреЛрдб рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЧрд╛рдЗрдб GitHub рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдорд╛рдзреНрдпрдо рдмреНрд▓реЙрдЧ рдкрд░ рдЕрдиреНрдп рд╕рдВрдмрдВрдзрд┐рдд рд▓реЗрдЦ рдкрдврд╝реЗрдВред
рдЕрд░реНрдерд╢рд╛рд╕реНрддреНрд░ рдореЗрдВ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ
рд╡рд┐рддреНрдд рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд░реИрдЦрд┐рдХ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдХрднреА-рдХрднреА рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреЙрдХ рдХреА рдХреАрдорддреЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдмрдирддреА рд╣реИрдВред рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╕рдордп рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╡рд┐рдзрд┐рдпрд╛рдБ, рдЬреИрд╕реЗ рдХрд┐ ARIMA рдФрд░ GARCH рдореЙрдбрд▓, рддрдм рдкреНрд░рднрд╛рд╡реА рд╣реЛрддреА рд╣реИрдВ рдЬрдм рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реНрдерд┐рд░ рд╣реЛрддреА рд╣реИ - рдЗрд╕рдХреЗ рдореВрд▓ рдЧреБрдг рд╕рдордп рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВред рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐
log returns
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдкреВрд░реНрд╡-рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ рдпрд╛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╕реНрдЯреЗрд╢рдирд░реА рдореЗрдВ рд▓рд╛рдпрд╛ рдЧрдпрд╛ рд╣реЛред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рддрдм рдкреИрджрд╛ рд╣реЛрддреА рд╣реИ рдЬрдм рдЗрди рдореЙрдбрд▓реЛрдВ рдХреЛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЯреНрд░реЗрдбрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдирдП рдбреЗрдЯрд╛ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╕рдордп рд╕реНрдерд┐рд░рддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдерд┐рд░рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╢реБрд░реВ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡реА рд╣реИрдВ рдФрд░ рдЙрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдирдП рдбреЗрдЯрд╛ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА (рдпрд╛ рд╡рд░реНрдЧреАрдХреГрдд) рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред
рдЖрдорддреМрд░ рдкрд░, рдбреЗрдЯрд╛ рд╕рд╛рдЗрдВрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдСрдкрд░реЗрд╢рди рд╣реЛрддреЗ рд╣реИрдВ:
- рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣ - рдЖрд╡рд╢реНрдпрдХ рдЧреБрдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
- рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЕрдХреНрд╕рд░ рдПрдХ рднрдпрд╛рд╡рд╣ рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рдХрджрдо рд╣реИред
- рдореЙрдбрд▓ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЗрд╕рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред
- рдмреИрдХрдЯрд╕реНрдЯрд┐рдВрдЧ рдореЙрдбрд▓ (рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдбреЗрдЯрд╛ рдкрд░ рдкрд░реАрдХреНрд╖рдг) рдХрд┐рд╕реА рднреА рд╡реНрдпрд╛рдкрд╛рд░рд┐рдХ рд░рдгрдиреАрддрд┐ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрджрдо рд╣реИред
- рдЕрдиреБрдХреВрд▓рди - рдЙрдкрдпреБрдХреНрдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░реЗрдВред
рд╣рдорд╛рд░реЗ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ - рдкрд┐рдЫрд▓реЗ 10 рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╢реЗрдпрд░ рдХреА рдХреАрдорддреЛрдВ рдХрд╛ рдбреЗрдЯрд╛ред рдЙрдирдХреА рдорджрдж рд╕реЗ, рд╣рдо рдЕрдЧрд▓реЗ рджрд┐рди рдХреАрдорддреЛрдВ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░реЗрдВрдЧреЗред
рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдпрд╛рд╣реВ рд╡рд┐рддреНрдд рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рдЗрдЯ рд╕реЗ рд╕реАрдзреЗ рдпрд╛ рдЙрдирдХреЗ рдкрд╛рдпрдерди рдПрдкреАрдЖрдИ
pdr.get_yahoo_data(ticker, start_date, end_date)
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдбреЗрдЯрд╛ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЗрдЯрд╛ рдХреЛ 10 рдкрд┐рдЫрд▓реА рдХреАрдорддреЛрдВ рдФрд░ рдЕрдЧрд▓реЗ рджрд┐рди рдХреА рдХреАрдорддреЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗрдЯреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ
Preprocessing
рдХреНрд▓рд╛рд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛, рдЬреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдХрдХреНрд╖рд╛ рдХреЗ рдЕрдВрджрд░, рдореИрдВрдиреЗ
get_train(self, seq_len)
рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛, рдЬреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдбреЗрдЯрд╛ рдХреЛ
NumPy
рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдВрдбреЛ рд▓рдВрдмрд╛рдИ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ 10) рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХрд░рддрд╛ рд╣реИред рдкреВрд░рд╛ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
def gen_train(self, seq_len): """ Generates training data :param seq_len: length of window :return: X_train and Y_train """ for i in range((len(self.stock_train)//seq_len)*seq_len - seq_len - 1): x = np.array(self.stock_train.iloc[i: i + seq_len, 1]) y = np.array([self.stock_train.iloc[i + seq_len + 1, 1]], np.float64) self.input_train.append(x) self.output_train.append(y) self.X_train = np.array(self.input_train) self.Y_train = np.array(self.output_train)
рдЗрд╕реА рддрд░рд╣, рдореИрдВрдиреЗ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдХреЛ
X_test
рдФрд░
Y_test
ред
рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдореЙрдбрд▓
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рджреЛ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛: рдорд▓реНрдЯреАрд▓реЗрдпрд░ рдкрд░рд╕реЗрдкреНрдЯреНрд░реЙрди (рдПрдордПрд▓рдкреА) рдФрд░ рд▓реЙрдиреНрдЧ рд╢реЙрд░реНрдЯ рдЯрд░реНрдо рдореЙрдбрд▓ (рдПрд▓рдПрд╕рдЯреАрдПрдо)ред рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реВрдБ рдХрд┐ рдпреЗ рдореЙрдбрд▓ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдПрдХ рдЕрдиреНрдп рд▓реЗрдЦ рдореЗрдВ MLP рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдФрд░ рдпрд╛рдХреВрдм рдФрдВрдЧрд┐рдпрд░реНрд╕ рдореЗрдВ LSTM рдХреЗ рдХрд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВред
рдПрдордПрд▓рдкреА рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд░реВрдк рд╣реИред рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рд╡рдЬрд╝рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдЙрдЯрдкреБрдЯ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЫрд┐рдкреА рд╣реБрдИ рдкрд░рддреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╕реАрдЦрдирд╛ рдкреНрд░рддреНрдпреЗрдХ рдиреНрдпреВрд░реЙрди рдХреЗ рд╡рдЬрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд┐рдкреА рд╣реБрдИ рдкрд░рддреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╛рдкрд╕ рдкреНрд░рд╕рд╛рд░ рд╕реЗ рдЖрддрд╛ рд╣реИред рдЗрд╕ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ "рдореЗрдореЛрд░реА" рдХреА рдХрдореА рд╣реИред рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдкрд┐рдЫрд▓рд╛ рдбреЗрдЯрд╛ рдХреНрдпрд╛ рдерд╛ рдФрд░ рдпрд╣ рдирдП рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рджреЛ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рдмреАрдЪ 10-рджрд┐рди рдХреЗ рдЕрдВрддрд░ рдорд╛рдпрдиреЗ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдордПрд▓рдкреА рдРрд╕реЗ рд╕рдВрдмрдВрдзреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, LSTM рдпрд╛ рдЖрд╡рд░реНрддрдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ (RNN) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЖрд░рдПрдирдПрди рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдбреЗрдЯрд╛ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд╕реЗ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рд╕реНрдЯреЙрдХ рдореВрд▓реНрдп рдбреЗрдЯрд╛ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХреА рдЬрдЯрд┐рд▓ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИред рд▓реЗрдХрд┐рди рдЖрд░рдПрдирдПрди рдХреЗ рд╕рд╛рде, рдПрдХ рд▓реБрдкреНрдд рд╣реЛрддреА рдврд╛рд▓ рдХреА рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рд╣реЛрддреА рд╣реИред рдврд╛рд▓ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд░рддреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд╛ рд╕реНрддрд░ (рдПрдХрддрд╛ рд╕реЗ рдХрдо рдореВрд▓реНрдп) рдХрдИ рдЧреБрдирд╛ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИред рджрдХреНрд╖рддрд╛ рдмрдврд╝рд╛рдХрд░ рдЗрд╕ LSTM рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдВред
рдореЙрдбрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдореЙрдбрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ
Keras
рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣рд╛рдВ рдкрд░рддреЗрдВ рдзреАрд░реЗ-рдзреАрд░реЗ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИрдВ, рдФрд░ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдкреВрд░реЗ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рд╣рдо рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддреЗ рд╣реБрдП, рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдкрд░рддреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реНрдЯреЙрдХ рдХреА рдХреАрдорддреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрджрдо рдбреЗрдЯрд╛ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдк рдФрд╕рдд рддреНрд░реБрдЯрд┐ рдХреЛ рдШрдЯрд╛рддреЗ рд╣реИрдВ рдФрд░ рдорд╛рдирдХ рддреНрд░реБрдЯрд┐ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╛рдкрд╛рд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рдЯреАрдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ 200 рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ (рдПрдХ рдордирдорд╛рдирд╛ рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рд╕рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдиреНрдп рд╕рднреА рд╕рдВрдЦреНрдпрд╛рдПрдБ рдЫреЛрдЯреА рд╣реИрдВ)ред рдФрд░ рдпрджреНрдпрдкрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рднрд╛рд╡реА рд╣реИ рдХрд┐ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рд╡рдЬрди рдмрд╣реБрдд рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдЪрд▓реЛ рдПрдХ рд╕рд░рд▓ рдореЙрдбрд▓ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ - рдПрдордПрд▓рдкреАред рдХреЗрд░рд╕ рдПрдХ рдЕрдиреБрдХреНрд░рдо рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдКрдкрд░ рдШрдиреА рдкрд░рддреЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдкреВрд░реНрдг рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
model = tf.keras.models.Sequential() model.add(tf.keras.layers.Dense(100, activation=tf.nn.relu)) model.add(tf.keras.layers.Dense(100, activation=tf.nn.relu)) model.add(tf.keras.layers.Dense(1, activation=tf.nn.relu)) model.compile(optimizer="adam", loss="mean_squared_error")
рдХреЛрдб рдХреА рдкрд╛рдВрдЪ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдХреЗрд░рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдордиреЗ рдЫрд┐рдкреА рдкрд░рддреЛрдВ рдХреЗ рд╕рд╛рде рдПрдордПрд▓рдкреА рдмрдирд╛рдпрд╛, рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдПрдХ рд╕реМ рдиреНрдпреВрд░реЙрдиреНрд╕ред рдФрд░ рдЕрдм рдереЛрдбрд╝рд╛ рдЕрдиреБрдХреВрд▓рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдПрдбрдо (рдЕрдиреБрдХреВрд▓реА рдкрд▓ рдЖрдХрд▓рди) рд╡рд┐рдзрд┐ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реА рд╣реИ -
рд╕реНрдЯреЛрдХреЗрд╕реНрдЯрд┐рдХ рдХреНрд░рдорд┐рдХ рд╡рдВрд╢ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдЕрдиреБрдХреВрд▓рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдоред рд╕реНрдЯреЛрдХреЗрд╕реНрдЯрд┐рдХ рдХреНрд░рдорд┐рдХ рд╡рдВрд╢ рдХреЗ рджреЛ рдЕрдиреНрдп рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИрдВ - рдПрдбрдо рд▓рд╛рдн рдЙрдирдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдЦрд┐рд▓рд╛рдл рддреБрд░рдВрдд рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ:
AdaGrad - рдПрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реАрдЦрдиреЗ рдХреА рдЧрддрд┐ рдХреЛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ, рдЬреЛ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдХрд╛ рд╡рд┐рдЪрд▓рди рд╣реЛрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдФрд░ рдХрдВрдкреНрдпреВрдЯрд░ рджреГрд╖реНрдЯрд┐ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде)ред
RMSProp - рдПрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЧрддрд┐ рдХреЛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ, рдЬреЛ рд╡рдЬрди рдХреЗ рд▓рд┐рдП рд╣рд╛рд▓ рдХреЗ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдХреЗ рдФрд╕рдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрд┐рддрдиреА рддреЗрдЬреА рд╕реЗ рдмрджрд▓рддрд╛ рд╣реИ)ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЧреИрд░-рд╕реНрдерд┐рд░ рд╕рдорд╕реНрдпрд╛рдУрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢реЛрд░) рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рддрд╛ рд╣реИред
рдПрдбрдо рдЗрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд╛рднреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдЪреБрдирд╛ред
рдЕрдм рд╣рдо рдореЙрдбрд▓ рдХреЛ рдЕрдкрдиреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛ рдореЗрдВ рдлрд┐рдЯ рдХрд░рддреЗ рд╣реИрдВред рдХреЗрд░рд╕ рдХрд╛рд░реНрдп рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
model.fit(X_train, Y_train, epochs=100)
рдЬрдм рдореЙрдбрд▓ рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдкрд░ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
model.evaluate(X_test, Y_test)
рд╕реНрдЯреЙрдХ рдХреАрдорддреЛрдВ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рддреНрдпрд╛рдкрди рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
LSTM рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреЛрдб рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╕рдордЭрд╛рдКрдВрдЧрд╛:
model = tf.keras.Sequential() model.add(tf.keras.layers.LSTM(20, input_shape=(10, 1), return_sequences=True)) model.add(tf.keras.layers.LSTM(20)) model.add(tf.keras.layers.Dense(1, activation=tf.nn.relu)) model.compile(optimizer="adam", loss="mean_squared_error") model.fit(X_train, Y_train, epochs=50) model.evaluate(X_test, Y_test)
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреЗрд░рд╕ рдХреЛ рдЖрдкрдХреЗ рдореЙрдбрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХрд╛ рдбреЗрдЯрд╛ рдЪрд╛рд╣рд┐рдПред NumPy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░рдгреА рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдмрджрд▓рдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдмреИрдХрд┐рдВрдЧ рдореЙрдбрд▓
рдЬрдм рд╣рдордиреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдореЙрдбрд▓ рддреИрдпрд╛рд░ рдХрд┐рдП рдФрд░ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдкрд░ рдЙрдирдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рддреЛ рд╣рдо рдореЙрдбрд▓ рдХрд╛ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдбреЗрдЯрд╛ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
def back_test(strategy, seq_len, ticker, start_date, end_date, dim): """ A simple back test for a given date period :param strategy: the chosen strategy. Note to have already formed the model, and fitted with training data. :param seq_len: length of the days used for prediction :param ticker: company ticker :param start_date: starting date :type start_date: "YYYY-mm-dd" :param end_date: ending date :type end_date: "YYYY-mm-dd" :param dim: dimension required for strategy: 3dim for LSTM and 2dim for MLP :type dim: tuple :return: Percentage errors array that gives the errors for every test in the given date range """ data = pdr.get_data_yahoo(ticker, start_date, end_date) stock_data = data["Adj Close"] errors = [] for i in range((len(stock_data)//10)*10 - seq_len - 1): x = np.array(stock_data.iloc[i: i + seq_len, 1]).reshape(dim) / 200 y = np.array(stock_data.iloc[i + seq_len + 1, 1]) / 200 predict = strategy.predict(x) while predict == 0: predict = strategy.predict(x) error = (predict - y) / 100 errors.append(error) total_error = np.array(errors) print(f"Average error = {total_error.mean()}")
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдПрдХ рд╕рдВрдкреВрд░реНрдг рдмреИрдХрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП, "рдЙрддреНрддрд░рдЬреАрд╡рд┐рддрд╛ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣", рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ (рдЖрдЧреЗ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рджреЗрдЦреЗрдВ), рдмрджрд▓рддреЗ рдмрд╛рдЬрд╛рд░ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдФрд░ рд▓реЗрдирджреЗрди рдХреА рд▓рд╛рдЧрдд рдЬреИрд╕реЗ рдХрд╛рд░рдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪреВрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╢реИрдХреНрд╖рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд░рд▓ рдмреИрдХрд┐рдВрдЧ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдлрд░рд╡рд░реА рдореЗрдВ Apple рдХреЗ рд╢реЗрдпрд░ рдХреА рдХреАрдорддреЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ LSTM рдореЙрдбрд▓ рдХрд╛ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕рд░рд▓ LSTM рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдореЙрдбрд▓ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмреАрдЪ рдЬрдЯрд┐рд▓, рд╕реНрдерд┐рд░ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред
рд╣рд╛рдЗрдкрд░рдкрд░рдореАрдЯрд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди
рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж рдореЙрдбрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╕рд░ рдЕрдиреБрдХреВрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдУрдкрди рд╕реЛрд░реНрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рдкрд╛рдардХ рд╕реНрд╡рдпрдВ рдореЙрдбрд▓ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХреЗрдВред рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдиреБрдХреВрд▓рди рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рд╣рд╛рдЗрдкрд░рдкрд░рдореЗрдЯрд░реНрд╕ рдвреВрдВрдврдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдореЙрдбрд▓ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВрдЧреЗред рд╣рд╛рдЗрдкрд░рдкрд░рдореЗрдЯрд░реНрд╕ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ: рдПрдХ рдЧреНрд░рд┐рдб рдкрд░ рдорд╛рдирдХреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рд╕реЗ рд▓реЗрдХрд░ рд╕реНрдЯреЛрдХреЗрд╕реНрдЯрд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рддрдХред
рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдореЙрдбрд▓ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде, рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЬреНрдЮрд╛рди рдПрдХ рдирдП рд╕реНрддрд░ рдкрд░ рдЬрд╛рддрд╛ рд╣реИред рдореЙрдбрд▓ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рдореЗрд░рд╛ рд╕реЗ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░реЗред рдЙрдкрд░реЛрдХреНрдд рдЧреНрд░рд╛рдл рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдо рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рдорд╢реАрди рд╕реАрдЦрдирд╛ рд▓рдЧрд╛рддрд╛рд░ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ - рд╣рд░ рджрд┐рди рдирдП рддрд░реАрдХреЗ рдЙрднрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд▓рдЧрд╛рддрд╛рд░ рд╕реАрдЦрдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рджрд┐рд▓рдЪрд╕реНрдк рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдмрдирд╛рдирд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреЙрдХ рдХреА рдХреАрдорддреЛрдВ рдХреЗ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдмрдирд╛рдирд╛ред рдФрд░ рдпрджреНрдпрдкрд┐ рдореЗрд░рд╛ рдПрд▓рдПрд╕рдЯреАрдПрдо рдореЙрдбрд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╛рдкрд╛рд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдореЙрдбрд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд░рдЦреА рдЧрдИ рдиреАрдВрд╡ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИред
рд╕рдВрдкрд╛рджрдХреЛрдВ рд╕реЗ
рд╡рд┐рд╖рдп рдкрд░ рдиреЗрдЯреЛрд▓реЙрдЬреА рдкрд╛рдареНрдпрдХреНрд░рдо: