Je orders.csv
comme dataframe appelé orders_df
:opérations vectorisés sur deux Pandas dataframe pour créer une nouvelle trame de données
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
Je finissent par le tri de la trame de données avec orders_df = orders_df.sort_index()
.
Puis-je créer un symbols
comme ceci:
symbols = np.append(orders_df.loc[:, 'Symbol'].unique(), 'SPY')
vient ici mon deuxième dataframe df_prices
.
df_prices = get_data(symbols, orders_df.index, addSPY=False)
df_prices.loc[:, 'CASH] = 1.0
qui imprime:
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
Maintenant, j'initialiser une troisième trame de données: »
df_trades = pd.DataFrame(0, df_prices.index, columns=list(df_prices))
je dois remplir cette trame de données avec les valeurs correctes à l'aide des deux précédentes cadres de date. Si je BUY
AAPL
, je veux multiplier Shares
de orders_df
avec les prix de AAPL
fois -1
. Si c'était SELL
, je ne multiplierais pas par -1
. J'ai mis cette valeur dans la colonne CASH
correcte. Pour les autres colonnes, je copie simplement les Shares
de chaque action les jours où elles ont été échangées.
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
Comment puis-je obtenir à l'aide df_trades
opérations vectorisés?
MISE À JOUR
si je ne:
df_prices = get_data(symbols, orders_df.index, addSPY=False)
df_prices.loc[:, 'CASH] = 1.0
qui imprime
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
Comment pourrais-je produire le df_trades
alors?
Les valeurs d'exemple ne sont plus valables fyi.
peut vous montrer votre code non vectorisé? – Quickbeam2k1
Je n'ai pas encore construit 'df_trades'. Ce sont exactement ce que la valeur est supposée être. – dirtysocks45
Je ne comprends pas vraiment la logique de vos df_trades. La première valeur CASH ne devrait-elle pas être de -15000 si j'achète 100 APPL pour un prix de 150? Voulez-vous que df_trades ressemble à votre inventaire ou au changement d'inventaire? S'il y a plusieurs prix pour un jour dans le fichier price_df, quelle valeur doit-on utiliser pour chaque transaction? –