Program Listing for File Engine.hpp

Return to documentation for file (engine/include/Engine.hpp)

#pragma once

#include "OrderBook.hpp"
#include "Feature.hpp"

#include <string>
#include <vector>
#include <memory>
#include <map>

struct SimulationResult {
    std::string name;
    std::vector<double> data;
};

class Engine {
private:
  OrderBook book_;

    void initialize_features(
        int64_t n_events,
        const std::vector<std::pair<std::string, std::map<std::string, double>>>
          &feature_configs,
        std::vector<std::unique_ptr<Feature>> &features,
        std::vector<double *> &out_ptrs,
        std::vector<SimulationResult> &results
    );

    void process_events(
        int64_t n_events, const int8_t *actions, const int8_t *sides,
        const int64_t *prices, const int64_t *sizes, const uint64_t *order_ids,
        const uint64_t *ts_recvs, const uint8_t *flags,
        const std::vector<std::unique_ptr<Feature>> &features,
        const std::vector<double *> &out_ptrs
    );

public:
    std::vector<SimulationResult> run_simulation(
        const int8_t *actions, const int8_t *sides, const int64_t *prices,
        const int64_t *sizes, const uint64_t *order_ids,
        const uint64_t *ts_recvs, const uint8_t *flags, int64_t n_events,
        const std::vector<std::pair<std::string, std::map<std::string, double>>>
          &feature_configs = {}
    );

    OrderBook &book() { return book_; }
    const OrderBook &book() const { return book_; }
};