Je travaille sur EBS, le marché Forex Limit Order Book (LOB): voici un exemple de LOB dans une tranche de temps de 100 millisecondes:Résumé des données énormes, Comment gérer avec R?
datetime|side(0=Bid,1=Ask)| distance(1:best price, 2: 2nd best, etc.)| price
2008/01/28,09:11:28.000,0,1,1.6066
2008/01/28,09:11:28.000,0,2,1.6065
2008/01/28,09:11:28.000,0,3,1.6064
2008/01/28,09:11:28.000,0,4,1.6063
2008/01/28,09:11:28.000,0,5,1.6062
2008/01/28,09:11:28.000,1,1,1.6067
2008/01/28,09:11:28.000,1,2,1.6068
2008/01/28,09:11:28.000,1,3,1.6069
2008/01/28,09:11:28.000,1,4,1.6070
2008/01/28,09:11:28.000,1,5,1.6071
2008/01/28,09:11:28.500,0,1,1.6065 (I skip the rest)
Pour résumer les données, ils ont deux règles (j'ai changé un peu de simplicité):
S'il n'y a pas de changement dans LOB en cours acheteur ou vendeur côté, ils ne seront pas enregistrer de ce côté. Regardez la dernière ligne des données, milliseconde était 000 et maintenant est 500, ce qui signifie qu'il n'y avait aucun changement à LOB de chaque côté pendant 100, 200, 300 et 400 millisecondes (mais ces informations sont importantes pour tout calcul).
Le dernier prix (seulement le dernier) est retiré d'un côté donné du carnet de commandes. Dans ce cas, un seul enregistrement avec rien dans le champ de prix. Encore une fois, il n'y aura pas d'enregistrement pour tout le secteur à ce moment-là.
Exemple: 2008/01/28,09: 11: 28.800,0,1,
Je veux calculer minAsk-maxBid (1,6067 à 1,6066) ou prix moyen pondéré (en utilisant la taille de tous distances comme poids, il y a une colonne de taille dans mes données réelles). Je veux faire pour l'ensemble de mes données. Mais comme vous le voyez, les données ont été résumées et ce n'est pas une routine. J'ai écrit un code pour produire l'ensemble des données (pas seulement un résumé). C'est bien pour un petit ensemble de données mais pour un grand, je crée un énorme fichier. Je me demandais si vous avez des conseils sur la façon de gérer les données? Comment combler les lacunes alors qu'il est efficace.
Je vous suggère de filtrer et diviser vos données en deux data.frames: un pour les meilleures offres et un pour les meilleures demandes. Ensuite, pour chacun de ces deux data.frames, utilisez 'findInterval' pour calculer la colonne correspondante' ask' ou 'bid'. Ensuite, vous saurez comment atteindre le minimum. – flodel
@ flodel- Merci, cela peut fonctionner ici, mais il ya des calculs plus compliqués que j'ai besoin de toutes les distances, pas seulement les meilleures offres ou demandes.Exemple simple, si je veux calculer le prix pondéré alors j'ai besoin de toutes les distances et je ne peux pas le filtrer. J'ai édité ma question. – mitra
pour un horodatage donné et côté, vous avez toujours cinq prix? Veuillez définir le prix moyen pondéré. Utilise-t-il les dix prix à un moment donné, et peut-être les tailles comme poids? – flodel