を作成するためのデータフレームがorders_df
と呼ばれるように私はorders.csv
を持っている:ベクトル化の操作は、新しいデータフレーム
Symbol Order Shares
Date
2011-01-10 AAPL BUY 100
2011-01-13 AAPL SELL 200
2011-01-13 IBM BUY 100
2011-01-26 GOOG SELL 200
私はorders_df = orders_df.sort_index()
でデータフレームを並べ替えてしまいます。
その後、私はそうのようなsymbols
を作成します。
symbols = np.append(orders_df.loc[:, 'Symbol'].unique(), 'SPY')
ここでは私の第二のデータフレームdf_prices
が来ます。
df_prices = get_data(symbols, orders_df.index, addSPY=False)
df_prices.loc[:, 'CASH] = 1.0
出力した:私は、2つの以前使用して正しい値を使用してこのデータフレームを埋めるために必要「
df_trades = pd.DataFrame(0, df_prices.index, columns=list(df_prices))
:
AAPL IBM GOOG XOM SPY CASH
Date
2011-01-10 150 100 50 400 100 1.0
2011-01-13 250 200 500 100 100 1.0
2011-01-13 250 200 500 100 100 1.0
2011-01-26 100 150 100 300 50 1.0
を今は第3データフレームを初期化します日付フレーム。私が AAPL
の場合、をorders_df
から掛けて、AAPL
の価格を-1
とします。それがSELL
なら、私は-1
で乗算しませんでした。私はその値を正しいCASH
の列に入れました。他の列については、取引日に各株のShares
をコピーするだけです。
AAPL IBM GOOG XOM SPY CASH
Date
2011-01-10 100 0 0 0 0 -15000
2011-01-13 -200 0 0 0 0 50000
2011-01-13 0 100 0 0 0 -20000
2011-01-26 0 0 -200 0 0 20000
ベクトル化演算を使用してdf_trades
を達成するにはどうすればよいですか?
UPDATE
私は何をやった場合:
df_prices = get_data(symbols, orders_df.index, addSPY=False)
df_prices.loc[:, 'CASH] = 1.0
私はその後、df_trades
を生成する方法
AAPL IBM GOOG XOM SPY CASH
2011-01-10 340.99 143.41 614.21 72.02 123.19 1.0
2011-01-11 340.18 143.06 616.01 72.56 123.63 1.0
2011-01-12 342.95 144.82 616.87 73.41 124.74 1.0
2011-01-13 344.20 144.55 616.69 73.54 124.54 1.0
2011-01-14 346.99 145.70 624.18 74.62 125.44 1.0
2011-01-18 339.19 146.33 639.63 75.45 125.65 1.0
2011-01-19 337.39 151.22 631.75 75.00 124.42 1.0
を出力していますか?
例の値はもう有効ではありません。
あなたの非ベクトル化コードを表示することができますか? – Quickbeam2k1
私は 'df_trades'をまだ構築していません。それらは価値があると思われるものです。 – dirtysocks45
私はあなたのdf_tradesの論理を本当に理解していません。私が150の価格で100のAPPLを購入した場合、最初のCASH値は-15000ではありませんか?あなたはdf_tradesにあなたの在庫や在庫の変化に似せて欲しいですか? price_dfに1日の価格が複数ある場合、各トランザクションにどの値を使用する必要がありますか? –