2017-02-15 4 views
1
まで

私は1990年から2015年までの日付時間インデックスを持つpanda dfを持っています。パンダを使って簡単にバックテスティングを行う:

これには、S & P 500、FOR(金融義務比率)、PE比率などのadjクローズの列があります。私はさまざまな比率と市場の間の関係を見るためのグラフを作成しました。私は現在、投資戦略をバックテストしようとしています。私はクオンポピアンでこれをやったことがあるが、自分では決してしていないし、パンダには初心者だ。私のテーブルの

最初の2列は次のようになります。私は、コードの一部の周り混乱しましたが、どのように行うのか分からない

enter image description here

。そのアイデアは以下の通りです:FORが16.5を下回る最初の月に$ 1,000,000の出発ポートフォリオを投資します。 S & Pに乗り、FORが16.5になるまで販売してください。それが再び下に戻ったときに買い戻す。私はこれは私が$$が投資したいと思うすべての期間を印刷し

for idx in df.index: 
    if df['Financial Obligation Ratio'].loc[idx]<16.5: 

     print idx, df['Adj Close'].loc[idx] 

while文を使用する必要があるだろうと思います。 「次IDX」と一緒に成功したこのプログラムを作るために「ながら」を使用する方法はあります

+0

は、あなたからの金融・ドメインのすべてのコンテンツを削除することができます質問。これは、条件付きでデータフレームの一部を取得することに関するものであり、そのように言い表されるべきです。 –

答えて

0

あなたは反復する必要はありません。

In [21]: df 
Out[21]: 
      Adj Close FOR 
date 
1990-01-09  329.07 16.23 
1990-01-08  329.07 16.92 

In [22]: df[df['FOR'] < 16.5] 
Out[22]: 
      Adj Close FOR 
date 
1990-01-09  329.07 16.23 

In [23]: 
+0

これは受け入れられる日付を見つけるのに役立ちます。しかし、16.5よりも早い時点で最初のブレークポイントに達するまでは前進するのに役立ちません。むしろ、それは<16.5である次の時点にジャンプするだけです。 –

+0

認められていますが、あなたは時間の連続でギャップを見ることができます。しかし、私はそれをアイデアを完全にバックテストするための効果的な方法ではありません。あたかも私が以前と同じブロックポイントにいるかのようです。 –

関連する問題