最新論文紹介 収益性の高いデイトレード戦略 「A Profitable Day Trading Strategy For The U.S. Equity Market」⑨

では2024年9月18日にこの戦略で取引したらどうなっていたのか検証してみましょう!。

前日までのデータで対象とした20銘柄は以下の通り。
  1. 6965.T
  2. 4575.T
  3. 4062.T
  4. 6954.T
  5. 8725.T
  6. 6762.T
  7. 3038.T
  8. 8750.T
  9. 8630.T
  10. 5713.T
  11. 9024.T
  12. 8697.T
  13. 7974.T
  14. 7751.T
  15. 6758.T
  16. 9041.T
  17. 3563.T
  18. 4813.T
  19. 6981.T
  20. 6701.T


プログラムで計算します。
コードは以下の通り。

"""
取引開始の5分足を見て強気なら買い、弱気なら売りのポジションをとる。
5分足レンジの最高値(または最低値)の逆指値注文をとる。
始値=終値の場合は注文しない。
約定した価格から10%のATR距離でストップロス注文を発注。
日中にストップロスの基準に達しなかったらそのまま売る。
"""

for i in d:
  print('-------------------------')
  print('銘柄コード',i['symbol'])
  position=None
  atr_10per=i['atr'] * 0.1
  stop_loss=0
  result=0
  loss_flg=False
  start='2024-09-18'
  end='2024-09-19'
  ticker=yf.Ticker(i['symbol'])
  df_history_5m=ticker.history(interval='5m', start=start,end=end)
  data_opening_5min = df_history_5m.between_time('09:00', '09:04')
  first_open=data_opening_5min['Open'].values[0]
  first_high=data_opening_5min['High'].values[0]
  first_low=data_opening_5min['Low'].values[0]
  first_close=data_opening_5min['Close'].values[0]
  print('最初の5分足')
  print('Open',first_open)
  print('High',first_high)
  print('Low',first_low)
  print('Close',first_close)
  print('')

  if first_open == first_close:
    print('取引対象外')
    continue
  elif first_open < first_close:
    print('ポジションは買い')
    print('逆指値注文:',first_high)
    stop_loss=first_high-atr_10per
    position='buy'
  elif first_open > first_close:
    print('ポジションは売り')
    print('逆指値注文:',first_low)
    stop_loss=first_low+atr_10per
    position='sell'
  print('ストップロス:',stop_loss)
  print('')

  data_after_first_5min=df_history_5m.between_time('09:05', '15:00')
  close=0

  for index, row in data_after_first_5min.iterrows(): 
    close=row['Close']
    if position == 'buy':
      low=row['Low']
      if stop_loss > low :
        print('損切')
        result=stop_loss-first_high
        loss_flg=True
        break
    elif position == 'sell':
      high=row['High']
      if stop_loss < high :
        print('損切')
        result=first_low-stop_loss
        loss_flg=True
        break
  
  if loss_flg == False:
    print('利確')
    print('Close',close)
    if position == 'buy':
      result = close - first_high
    elif position == 'sell':
      result = first_low - close
  print('結果:',result)

結果

全負けでした。。
ストップロスが早すぎるんだろうか、もっと早く利確するといいのか?
そのままこの戦略はまだ使えなそうな気がする。

コメント