-3

買いシグナルを DatetimeIndex として提供して ohlc の引用符 DataFrame (調整された終値) をチェックすることで、pandas で簡単かつ迅速なバックテストを実行したいと考えていますが、これが正しいかどうかはわかりません。

明確にするために、保有期間全体にわたるすべてのスワッピング買いシグナル (および株式リターンも?) の累積リターンを計算したいと思います。その後、単純なシャープ関数を使用していくつかの計算を比較したいと思います。これは、パンダで購入信号をすばやく簡単にテストする正しい方法ですか?

どんな助けでも大歓迎です!

シグナル:

In [216]: signal
Out[216]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2000-08-21, ..., 2013-07-09]
Length: 21, Freq: None, Timezone: UTC

ohlc:

In [218]:
df.head()
Out[218]:
open    high    low close   volume  amount
Date                        
2000-01-14 00:00:00+00:00    6.64    6.64    6.06    6.08    74500   4.91
2000-01-17 00:00:00+00:00    6.30    6.54    6.25    6.40    45000   5.17
2000-01-18 00:00:00+00:00    7.56    8.75    7.51    8.75    250200  7.07

バックテスト:

analysis = pd.DataFrame(index=df.index)
#calculate returns of adjusted close price
analysis["returns"] = df['amount'].pct_change()
#set signal returns to quote returns where there is a signal DatetimeIndex and ffill
analysis["signal"] = nan
analysis["signal"][signal] = analysis["returns"][signal]
analysis["signal"] = analysis["signal"].fillna(method="ffill")
#calculation of signal returns
trade_rets = analysis["signal"].shift(1)*analysis["returns"]

期待される結果 (buy_returns の値が正しくありません):

Out[2]:
returns buy_returns
Date        
2000-08-21 00:00:00+00:00    -0.153226  -0.076613
2001-02-12 00:00:00+00:00    0.000000    0.000000
2002-10-29 00:00:00+00:00    0.246155    0.030769
2003-02-12 00:00:00+00:00    0.231884    0.014493
2003-03-12 00:00:00+00:00    1.548386    0.048387

私の質問は、パンダで提供された購入シグナル (True/False シリーズまたは Datetimeindex) の強さを表すために、返品シリーズをどのように計算する必要があるかということです。

4

1 に答える 1

2

バックテストを実行するのに十分な情報がありません。あなたの「戦略」は現在、True または False しかありません。True の場合、いくらで購入しますか? True が 2 回連続である場合、それはバイ アンド ホールドまたは 2 回とも購入を意味しますか? False は清算または購入しないことを意味しますか?

必要がある:

  1. t信号を「保持されている量」に変換します
  2. 次に、その数量を保持した結果が何であるかを確認します
  3. ベンチマークを忘れずに

ここでの質問の主なポイントである(2)を実行するときは、速度に焦点を当てずに、時間をかけて反復し、あなたの言うことを実行し、新しい全体的な価値を持つ直感的な反復シミュレーターを作成してください。あなたが見ているデータのサイズについては、パンダでより複雑になることによるスピードアップは瞬きにも満たないでしょう.

于 2014-07-28T21:44:42.633 に答える