iT邦幫忙

2021 iThome 鐵人賽

DAY 16
0
AI & Data

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

[Day 16] 保守型投資 - 「只買不賣」策略真的賺?

  • 分享至 

  • xImage
  •  

一、「只買不賣」策略

  • 回測日期:2012/01/01 ~ 2018/12/31
  • 本金:回測期間購買股票總金額
  • 每月第一個交易日以收盤價進行交易
  • 每月購買一張(1000)股票
  • 於回測日期最後賣出

二、程式碼解說

回測階段

frames = []
for stock_index in etf50_id:
    print(stock_index)

    tmp_df = etf50[stock_index]

    holding_cash = (
        1000
        * tmp_df.groupby(pd.DatetimeIndex(tmp_df.index).to_period("M"))
        .nth(0)["Close"]
        .sum()
    )

    test = Backtest(
        etf50[stock_index],
        ContinueHolding,
        cash=holding_cash,
        commission=0.004,
        # exclusive_orders=True,
        trade_on_close=True,
    )

    result = test.run()

    result["stock_id"] = stock_index
    result["Cash"] = holding_cash
    result["Strategy"] = result["_strategy"].__class__.__name__
    result["Params"] = result["_strategy"].params

    df = result.to_frame().transpose()

    frames.append(df)

計算本金

本金 = Sum( 每月交易日首日收盤價 * 1000 )

tmp_df = etf50[stock_index]
holding_cash = (
    1000
    * tmp_df.groupby(pd.DatetimeIndex(tmp_df.index).to_period("M"))
    .nth(0)["Close"]
    .sum()
)

執行回測

test = Backtest(
    etf50[stock_index],
    ContinueHolding,
    cash=holding_cash,
    commission=0.004,
    # exclusive_orders=False,
    trade_on_close=True,
)

result = test.run()

整理與分析

刪除回測期間上市的股票

final_df = pd.concat(frames).reset_index(drop=True)

final_df = final_df.loc[
    final_df["Duration"] == final_df["Duration"].max()
].reset_index(drop=True)

刪除年化報酬率過低的股票

etf50_df = final_df.loc[final_df["stock_id"] == "0050", "Return (Ann.) [%]"]
profit_df = final_df[final_df["Return (Ann.) [%]"] >= etf50_df[0]]

三、「只買不賣」策略真的賺?

由報表可以看出,以平均來說「只買不賣」策略低的可憐,
年化報酬率只有可憐的0.73%(甚至比定存還低),
而所有成分股中超過ETF50投資報酬率的只有13個,
我們可以將其當成日後其他策略的參考線,
只要年化報酬率低於**「只買不賣」策略ETF50**的年化報酬率,
即可視為「糟糕」的策略。

股票ID |股票名稱| 年化報酬率 [%]| 夏普率| 系統質量(SQN)
------------- | -------------
TW | 台股平均| 0.73529| |
0050| 元大台灣50 |1.75358| 0.206715 |7.19137|
2330| 台積電 |5.78504| 0.431027 |12.2543|
1301| 台塑 |2.30122| 0.199212 |11.2324|
1216| 統一 |2.7866| 0.210213 |13.1493|
3008| 大立光 |2.62141| 0.0995397 |3.0121 |
5871| 中租-KY |4.62837| 0.291684 |13.0569|
1326| 台化 |2.85479| 0.218428 |11.1298|
2379| 瑞昱 |6.71893| 0.319554 |20.2988|
2327| 國巨 |14.9039| 0.389574 |8.04219|
2912| 統一超 |4.59893| 0.30617 |15.5105|
6505| 台塑化 |2.69953| 0.173866 |9.66391|
1590| 亞德客-KY |2.39312| 0.0805668 |3.92964|
9910| 豐泰 |7.19998| 0.319489 |11.4869|
2408| 南亞科 |5.61503| 0.151951 |5.1359 |

參考


上一篇
[Day 15] backtesting 使用說明
下一篇
[Day 17] 有人提到股利嗎?
系列文
從零開始的套牢生活 - AI股票預測系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言