рдкрд╛рдпрдерди рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рддреНрддреАрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдг (рднрд╛рдЧ 1)

рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдиреЗ рдЬрд╛рдВрдЪ рдХреА рдХрд┐ рдЖрдк рд╡рд┐рддреНрддреАрдп рд╕рд╛рдзрдиреЛрдВ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрд░рдВрдн рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдХреИрд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдПрдХ рд░рдгрдиреАрддрд┐ рддреИрдпрд╛рд░ рдХреА рдЬрд╛рдП, рдЗрд╕ рдкрд░ рдХрдИ рд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рд╕рд╛рдордЧреНрд░реА рдСрдирд▓рд╛рдЗрди рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд╡рд┐рджреЗрд╢реА рд╕реНрд░реЛрддреЛрдВ рдФрд░ рдкрд╛рдареНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

рдпрд╣ рдЖрд▓реЗрдЦ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛ рдХрд┐ рд▓рд╛рднрдкреНрд░рджрддрд╛, рдЕрд╕реНрдерд┐рд░рддрд╛ рдХреА рдЧрдгрдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ рдФрд░ рдореБрдЦреНрдп рд╕рдВрдХреЗрддрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред

import pandas as pd
import yfinance as yf
import numpy as np
import matplotlib.pyplot as plt

sber = yf.download('SBER.ME','2016-01-01')

рд▓рд╛рднрдкреНрд░рджрддрд╛


рдпрд╣ рдореВрд▓реНрдп рдПрдХ рдЯреНрд░реЗрдбрд┐рдВрдЧ рджрд┐рд╡рд╕ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЙрдХ рдХреЗ рдореВрд▓реНрдп рдореЗрдВ рдкреНрд░рддрд┐рд╢рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд▓рд╛рднрд╛рдВрд╢ рдФрд░ рдХрдореАрд╢рди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред рдкрдВрдбреЛрдВ рдХреЗ рдкреИрдХреЗрдЬ рд╕реЗ pct_change () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рд▓реЙрдЧ рдкреНрд░реЙрдлрд┐рдЯреЗрдмрд┐рд▓рд┐рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рд╕рдордп рдХреЗ рд╕рд╛рде рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдФрд░ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

#   `
daily_close = sber[['Adj Close']]

#  
daily_pct_change = daily_close.pct_change()

#  NA   0
daily_pct_change.fillna(0, inplace=True)

print(daily_pct_change.head())

#   
daily_log_returns = np.log(daily_close.pct_change()+1)

print(daily_log_returns.head())

рдЫрд╡рд┐

рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рд╕реЗ рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ рдФрд░ / рдпрд╛ рдорд╛рд╕рд┐рдХ рд▓рд╛рдн рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, resample () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

#   `sber`      
monthly = sber.resample('BM').apply(lambda x: x[-1])

#  
print(monthly.pct_change().tail())

#  `sber`        
quarter = sber.resample("4M").mean()

#  
print(quarter.pct_change().tail())

рдЫрд╡рд┐

Pct_change () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд▓реЗрдХрд┐рди рдмрджрд▓реЗ рдореЗрдВ рдпрд╣ рдЫреБрдкрд╛рддрд╛ рд╣реИ рдХрд┐ рдореВрд▓реНрдп рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╕рдорд╛рди рдЧрдгрдирд╛, рдЬреЛ рддрдВрддреНрд░ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧреА, рдкрдВрдбреЛрдВ рдХреЗ рдкреИрдХреЗрдЬ рд╕реЗ рд╢рд┐рдлреНрдЯ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рджреИрдирд┐рдХ рд╕рдорд╛рдкрди рдореВрд▓реНрдп рдХреЛ рдЕрддреАрдд (рдПрдХ рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд) рдореВрд▓реНрдп рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЗрдХрд╛рдИ рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдп рд╕реЗ рдШрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдорд╛рдореВрд▓реА рдорд╛рдЗрдирд╕ рд╣реИ - рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрд╣рд▓рд╛ рдорд╛рди рдПрдирдП рд╣реИред

рд▓рд╛рднрдкреНрд░рджрддрд╛ рдХреА рдЧрдгрдирд╛ рд╕реВрддреНрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ:

рдЫрд╡рд┐

рдЬрд╣рд╛рдВ, рдкреА рдХреА рдХреАрдордд рд╣реИ, рдЯреА рддрддреНрдХрд╛рд▓ рд╣реИ рдФрд░ рдЖрд░ рд▓рд╛рднрдкреНрд░рджрддрд╛ рд╣реИред

рдЕрдЧрд▓рд╛, рдПрдХ рд▓рд╛рднрдкреНрд░рджрддрд╛ рд╡рд┐рддрд░рдг рдЖрд░реЗрдЦ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдореБрдЦреНрдп рдЖрдБрдХрдбрд╝реЛрдВ рдХреА рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╣реИ:

#  
daily_pct_change = daily_close / daily_close.shift(1) - 1

print(daily_pct_change.head())

рдЫрд╡рд┐

#  `daily_pct_c`
daily_pct_change.hist(bins=50)

plt.show()

#  
print(daily_pct_change.describe())

рдЫрд╡рд┐

рд╡рд┐рддрд░рдг рдмрд╣реБрдд рд╕рдордорд┐рдд рджрд┐рдЦрддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ 0.00 рдХреЗ рдорд╛рди рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдп рдЖрдБрдХрдбрд╝реЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╡рд░рдг () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдпрд╣ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдФрд╕рдд рдореВрд▓реНрдп рд╢реВрдиреНрдп рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╣реИ, рдФрд░ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди рд▓рдЧрднрдЧ 0.02 рд╣реИред

рд╕рдВрдЪрдпреА рд╡рд╛рдкрд╕реА


рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╡рдзрд┐ рдореЗрдВ рдирд┐рд╡реЗрд╢ рдХрд╛ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЪрдпреА рджреИрдирд┐рдХ рд░рд┐рдЯрд░реНрди рдЙрдкрдпреЛрдЧреА рд╣реИред рдЗрд╕рдХреА рдЧрдгрдирд╛ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

#   
cum_daily_return = (1 + daily_pct_change).cumprod()

print(cum_daily_return.tail())

рдЫрд╡рд┐

#    
cum_daily_return.plot(figsize=(12,8))

plt.show()

рдЫрд╡рд┐

рдЖрдк рдорд╛рд╕рд┐рдХ рдЕрд╡рдзрд┐ рдореЗрдВ рдЙрдкрдЬ рдХреЛ рдкреБрдирд░реНрдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

#   
cum_monthly_return = cum_daily_return.resample("M").mean()

print(cum_monthly_return.tail())

рдЫрд╡рд┐

рд╢реЗрдпрд░реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╕рдордп рд░рд┐рдЯрд░реНрди рдХреА рдЧрдгрдирд╛ рдХреИрд╕реЗ рдХрд░рдирд╛ рдореВрд▓реНрдпрд╡рд╛рди рд╣реИ, рдпрд╣ рдЬрд╛рдирдирд╛ред рд▓реЗрдХрд┐рди рдЕрдиреНрдп рд╢реЗрдпрд░реЛрдВ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рдЕрдзрд┐рдХ рдореВрд▓реНрдпрд╡рд╛рди рд╣реИред

рдХреБрдЫ рд╕реНрдЯреЙрдХ рд▓реЗрдВ (рдЙрдирдХреА рдкрд╕рдВрдж рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╣реИ) рдФрд░ рдЙрдирдХреЗ рдЪрд╛рд░реНрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред

ticker = ['AFLT.ME','DSKY.ME','IRAO.ME','PIKK.ME', 'PLZL.ME','SBER.ME','ENRU.ME']

stock = yf.download(ticker,'2018-01-01')

#    `daily_close_px`
daily_pct_change = stock['Adj Close'].pct_change()

# 
daily_pct_change.hist(bins=50, sharex=True, figsize=(20,8))

plt.show()

рдЫрд╡рд┐

рдПрдХ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рдЧреНрд░рд╛рдл рддрд┐рддрд░ рдмрд┐рддрд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИред рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрдХреИрдЯрд░_рдореЗрдЯреНрд░рд┐рдХреНрд╕ () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдкрд╛рдВрдбрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред Daily_pct_change рдХрд╛ рдЙрдкрдпреЛрдЧ рддрд░реНрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрд░реНрдиреЗрд▓ рдШрдирддреНрд╡ рдЖрдХрд▓рди рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдЕрд▓реНрдлрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ figsize рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреНрд░рд╛рдл рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

from pandas.plotting import scatter_matrix

#   `daily_pct_change`  
scatter_matrix(daily_pct_change, diagonal='kde', alpha=0.1,figsize=(20,20))

plt.show()

рдЫрд╡рд┐

рдЕрднреА рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рд╣реАред рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЕрд╕реНрдерд┐рд░рддрд╛ рдХреА рдЧрдгрдирд╛, рдФрд╕рдд рдФрд░ рдХрдо рд╕реЗ рдХрдо рд╡рд░реНрдЧреЛрдВ рдХреА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

All Articles