Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 4

Chapter 8.

Financial Time Series

Input Code Explanation


19 rets = np.log(data / data.shift(1))
Tạo 1 dataframe (df) mới tên là ‘rets’
data.shift(1) có nghĩa là đẩy 1 dòng dữ liệu xuống dòng
kế tiếp, và dòng hiện tại dữ liệu sẽ biến thành NaN
lấy data / data.shift(1) và lấy log nó bằng log() để
calculates the log returns in vectorized fashion <có thể
đây là công thức chuyên dụng để tính nên ko thể giải
thích>

20 rets.head().round(3) head() show dữ liệu trong df, default là 5 dòng, còn


muốn số mấy thì bỏ giá trị trong ngoặc nó sẽ hiện ra
bấy nhiêu dòng
round(3) là lấy tròn đến số thập phân thứ 3. Ví dụ:
0.123

21 rets.cumsum().apply(np.exp).plot(fi cumsum(): tính tổng tích lũy của các phần tử mảng
gsize=(10, 6)) (cộng dồn). Ví dụ:
Input : list = [4, 10, 15, 18, 20]
Output : [4, 14, 29, 47, 67]

np.exp: hàm tính số mũ

apply(): là hàm dùng để áp dụng hàm nằm trong ngoặc


của nó

plot(): vẽ biểu đồ, phía trong nó là những parameter để


design cho biểu đồ như size, title, color…

Giải thích: câu lệnh này để vẽ biểu đồ đường thay đổi


theo thời gian của value (ý nghĩa value là gì thì cần đọc).
Mục đích sử dụng hàm mũ để scale giá trị lên khi biểu
diễn vì số rất nhỏ (sẽ bị dính chùm khi vẽ). Mục đích sử
dụng hàm cộng dồn vì muốn xem tổng giá trị ở năm
hiện tại. Nếu ko cộng dồn thì nó chỉ biểu diễn giá trị của
năm đó thôi.

22 data.resample('1w', Hàm resample là tạo ra một phân phối lấy mẫu duy
label='right').last().head() nhất trên cơ sở dữ liệu thực tế. Nói 1 cách dễ hiểu như
mình chuyển hoá thời gian theo ý mình (theo tháng,
theo tuần, theo quý). Đọc thêm ở đây:
https://dataindependent.com/pandas/pandas-
resample-pd-df-resample/

W : weekly frequency

last(): trả về các mục trong 5 ngày qua trong đối tượng
chuỗi đã cho

23 data.resample('1m', M : month end frequency


label='right').last().head() (Q : quarter end frequency)

24 rets.cumsum().apply(np.exp). Đã giải thích các thông số ở trên


resample('1m',
label='right').last().plot(figsize=(10,
6))

25 sym = 'AAPL.O' Gán string ‘AAPL.O’ cho biến ‘sym’

26 data = data[AAPL.O] tức là lấy cột dữ liệu tên AAPL.O


pd.DataFrame(data[sym]).dropna()
pd.DataFrame(data[AAPL.O]) là biến cái dữ liệu này một
dataframe

dropna() là hàm remove các dòng có chứa Null value


(chỉ cần 1 null value trong dòng là xoá hết cả dòng)

Giải thích: Nó tạo ra 1 df mới tên là data, trong đó


index là Date và chỉ chứa 1 cột là AAPL.O

27 data.tail() Cũng giống như head(), tail() show default 5 dòng cuối,
có thể điền số trong ngoặc

28 window = 20 Gán số 20 cho biến window

29 data['min'] = Data[‘min’] có nghĩa tạo ra một cột mới tên ‘min’ trong
data[sym].rolling(window=window) dataframe ‘data’
.min()
rolling window bằng cách chọn một tập hợp các hàng
liền kề khác nhau để thực hiện các phép toán của mình.

min(): min

Đọc phần “Resampling và Rolling” trong website này rất


dễ hiểu:
https://viblo.asia/p/series-pandas-dataframe-phan-
tich-du-lieu-cung-pandas-phan-7-bWrZnrzbZxw

30 data['mean'] = mean(): mean


data[sym].rolling(window=window)
.mean()

31 data['std'] = std(): standard deviation


data[sym].rolling(window=window)
.std()

32 data['median'] = median(): median


data[sym].rolling(window=window)
.median()

33 data['max'] = max(): max


data[sym].rolling(window=window)
.max()

34 data['ewma'] = ewm(): một loại đường trung bình động để tính đường
data[sym].ewm(halflife=0.5, trung bình động có trọng số theo cấp số nhân cho một
min_periods=window).mean() số giai đoạn nhất định trước đó

35 data.dropna().head() dropna() là hàm remove các dòng có chứa Null value


(chỉ cần 1 null value trong dòng là xoá hết cả dòng)
head() hiện 5 dòng đầu

36 ax = data[['min', 'mean', Vẽ biểu dồ với 3 cột (min, mean, max) trong df data.
'max']].iloc[-200:].plot(figsize=(10,
6), style=['g--', 'r--', 'g--'], lw=0.8) iloc[-200:] là hàm chọn dòng hoặc cột theo idex
data[sym].iloc[-200:].plot(ax=ax, location. Cái này nên lên đọc thêm, nhưng trong trường
lw=2.0) hợp này có nghĩa là lấy từ dòng 200 từ dưới lên đến hết
bảng.

Những thông số trong plot là để tuỳ chỉnh cho biểu đồ.

37 data['SMA1'] = Đã giải thích phía trên


data[sym].rolling(window=42).mea
n()

38 data['SMA2'] = Đã giải thích phía trên


data[sym].rolling(window=252).me
an()

39 data[[sym, 'SMA1', 'SMA2']].tail() Trong dataframe ‘data’ chỉ lấy 3 cột trong ngoặc vuông
tail() show 5 dòng cuối
40 data[[sym, 'SMA1', Vẽ đồ thị cho 3 cột trong dataframe
'SMA2']].plot(figsize=(10, 6))

You might also like