iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0
AI & Data

從零開始的套牢生活 - AI股票預測系統系列 第 27

[Day 27] 何謂趨勢

N天後收盤價

  • 若N天後收盤價 > 目前收盤價,趨勢為正

  • 若N天後收盤價 < 目前收盤價,趨勢為負

  • 優點:

    • 直觀、簡單
  • 缺點:

    • 無法調整風險
    • 無法停利停損

N天後收盤價 & 中間值

  • 若N天後收盤價 > 目前收盤價 + K%,趨勢為正

  • 若N天後收盤價 < 目前收盤價 - K%,趨勢為負

  • 中間值代表不漲不跌

  • 優點:

    • 直觀、簡單
    • 可調整風險(K)
  • 缺點:

    • 無法停利停損

N天最高最低點

  • 若N天最高點 > 目前收盤價 + K%,趨勢為正

  • 若N天最低點 < 目前收盤價 - K%,趨勢為負

  • 中間值代表不漲不跌

  • 優點:

    • 實作簡單
    • 允許停利停損
    • 可調整風險(K)
  • 缺點:

    • 忽略先漲後跌、先跌後漲狀況

Triple Barrier

  • 若N天中某一天 > 目前收盤價 + K%,趨勢為正

  • 若N天中某一天 < 目前收盤價 - K%,趨勢為負

  • 優點:

    • 允許停利停損
    • 可調整風險(K)
  • 缺點:

    • 實作麻煩
data_df = load_stock(stock_index, start_year=2011, end_year=2021)

shift = {}
for i in range(0, 31):
    shift[i] = data_df.loc[:, "Close"].shift(-i)

close30_df = pd.DataFrame(shift).dropna()

Close_Low = close30_df.min(1)
Close_High = close30_df.max(1)
Close_Mean = close30_df.mean(1)
Close_Std = close30_df.std(1)

thresold = 3
tag = {}
for i in range(1, 31):
    if i == 1:
        up = close30_df[i] > close30_df[0] + thresold * Close_Std
        down = close30_df[i] < close30_df[0] - thresold * Close_Std
        tag[i] = 1 * up + (-1) * down
    else:
        up = close30_df[i] > close30_df[0] + thresold * Close_Std
        down = close30_df[i] < close30_df[0] - thresold * Close_Std
        tag[i] = np.clip(
            (tag[i - 1] * 10) + (1 * up + (-1) * down), a_min=-1, a_max=1
        )

https://ithelp.ithome.com.tw/upload/images/20211002/20141586vj5gqvbL6F.png
K = 1 std,對趨勢估計保守,傾向停利停損

https://ithelp.ithome.com.tw/upload/images/20211002/20141586Rml3cghB5M.png
K = 3 std,對趨勢估計激進,傾向高報酬


上一篇
[Day 26] 趨勢化資料實作(一)
下一篇
[Day 28] LSTM初探
系列文
從零開始的套牢生活 - AI股票預測系統30

尚未有邦友留言

立即登入留言