1

Python の map() 関数を利用して、パラメータをトレーディング モデルに渡し、結果を出力します。itertools.product を使用して、2 つのパラメーターの可能な組み合わせをすべて見つけ、その組み合わせを「run」という名前の関数に渡します。関数 run は、リターンの pandas データフレームを返します。列ヘッダーは、2 つのパラメーターのタプルとリターンのシャープ率です。下記参照:

def run((x,y)): 
    ENTRYMULT = x
    PXITR1PERIOD = y

    create_trade()
    pull_settings()    
    pull_marketdata()
    create_position()
    create_pnl_output()

    return DataFrame(DF3['NETPNL'].values, index=DF3.index, columns=[(ENTRYMULT,PXITR1PERIOD,SHARPE)])

私の main() 関数は Pool() 機能を使用して、8 つのコアすべてで map() を実行します。

if __name__ == '__main__':    
global DF3
pool = Pool()    
test1 =pool.map(run,list(itertools.product([x * 0.1 for x in range(10,12)], range(100,176,25))))
print test1

map 関数はリストしか出力できないことに気付きました。出力は、返されたデータフレームからのヘッダーのリストです。print test1 からの私の出力は次のようになります。

[(1.0, 150, -8.5010673966997263)
2011-11-17  18.63                          
2011-11-18  17.86                          
2011-11-21  17.01                          
2011-11-22  15.92                          
2011-11-23  15.56                          
2011-11-24  15.56                          
2011-11-25  15.36                          
2011-11-28  15.18                          
2011-11-29  15.84                          
2011-11-30  NaN                            ,             (1.0, 175, -9.4016837593189102)
2011-11-17  22.63                          
2011-11-18  22.03                          
2011-11-21  21.36                          
2011-11-22  19.93                          
2011-11-23  19.77                          
2011-11-24  19.77                          
2011-11-25  19.68                          
2011-11-28  19.16                          
2011-11-29  19.56                          
2011-11-30  NaN                            ,             (1.1, 100, -20.255968672741457)
2011-11-17  12.03                          
2011-11-18  10.95                          
2011-11-21  10.03                          
2011-11-22  9.003                          
2011-11-23  8.221                          
2011-11-24  8.221                          
2011-11-25  7.903                          
2011-11-28  7.709                          
2011-11-29  6.444                          
2011-11-30  NaN                            ,             (1.1, 125, -18.178187305758119)
2011-11-17  14.64                          
2011-11-18  13.76                          
2011-11-21  12.89                          
2011-11-22  11.85                          
2011-11-23  11.34                          
2011-11-24  11.34                          
2011-11-25  11.16                          
2011-11-28  11.06                          
2011-11-29  10.14                          
2011-11-30  NaN                            ,             (1.1, 150, -14.486791104380069)
2011-11-17  26.25                          
2011-11-18  25.57                          
2011-11-21  24.76                          
2011-11-22  23.74                          
2011-11-23  23.48                          
2011-11-24  23.48                          
2011-11-25  23.43                          
2011-11-28  23.38                          
2011-11-29  22.93                          
2011-11-30  NaN                            ,             (1.1, 175, -12.118290962161304)
2011-11-17  24.66                          
2011-11-18  24.21                          
2011-11-21  23.57                          
2011-11-22  22.14                          
2011-11-23  22.06                          
2011-11-24  22.06                          
2011-11-25  22.11                          
2011-11-28  21.64                          
2011-11-29  21.24                          
2011-11-30  NaN                            ] 

私の最終的な目標は、インデックス(すべてのリターンで同じ)、(ENTRYMULT、PXITR1PERIOD、SHARPE)の列ヘッダーと、対応する以下のリターンを持つパンダデータフレームを持つことです。次に、すべてのリターン シリーズでペアワイズ相関計算を行います。

4

1 に答える 1

4

あなたがする必要があるのは次のことだけだと思います:

data = DataFrame(dict(test1))

その結果、列が (1.1, 175, -12.118290962161304) のような要素である DataFrame になります。

pandas 0.6.1 (近日中にリリース予定) では、次のこともできます。

data = DataFrame.from_items(test1)

于 2011-12-12T18:50:53.097 に答える