29#include "fastmm/backtest/own_orders.hpp"
31#include "fastmm/core/journal.hpp"
32#include "fastmm/sim/sim_account.hpp"
42class JournalSource final :
public MdSource {
48 bool strip_own =
false,
52 void reset()
override;
55 [[nodiscard]]
const JournalReader&
reader() const noexcept {
return parts_.front(); }
57 [[nodiscard]]
const std::vector<std::string>&
paths() const noexcept {
return paths_; }
59 [[nodiscard]] std::size_t
seq_gaps() const noexcept {
return seq_gaps_; }
60 [[nodiscard]] std::size_t
md_events() const noexcept {
return md_events_; }
62 [[nodiscard]]
const OwnOrderStripper*
stripper() const noexcept {
return stripper_.get(); }
64 [[nodiscard]] std::size_t
dropped() const noexcept {
return dropped_; }
65 [[nodiscard]] std::string
note()
const override;
69 [[nodiscard]]
const std::vector<sim::SimAccountConfig>*
balance_snapshots()
const override {
73 [[nodiscard]]
const sim::SessionStart*
session_start()
const override {
return &start_; }
75 [[nodiscard]]
const sim::RecordedParams*
recorded_params()
const override {
return ¶ms_; }
83 void open_part(
const std::string& path);
85 std::vector<JournalReader> parts_;
86 std::vector<std::string> paths_;
88 std::size_t seq_gaps_ = 0;
91 std::size_t md_events_ = 0;
92 std::unique_ptr<OwnOrderStripper> stripper_;
93 std::size_t orders_ = 0;
95 std::vector<sim::SimAccountConfig> balances_;
96 sim::SessionStart start_;
97 sim::RecordedParams params_;
99 static constexpr std::uint32_t kUnmapped = 0xFFFF'FFFF;
101 std::vector<std::uint32_t> map_;
102 std::vector<VenueId> map_venue_;
103 std::size_t unmapped_ = 0;
104 std::size_t dropped_ = 0;
105 std::vector<std::uint64_t> rbuf_;
112 const std::string& path,
115 std::string_view strategy =
"data",
116 std::uint64_t max_events = 0);
Dense-by-id table built at startup; symbol lookup is a sorted FlatMap keyed by (venue,...
Definition instrument.hpp:141
Definition journal_source.hpp:44
const sim::SessionStart * session_start() const override
journal_start_state() of the parts read (journal_state.hpp).
Definition journal_source.hpp:75
const JournalReader & reader() const noexcept
The first part: its header, instrument table and configuration are every part's.
Definition journal_source.hpp:57
const EventHeader * next() override
static bool is_market_data(EventType t) noexcept
Definition journal_source.hpp:79
const OwnOrderStripper * stripper() const noexcept
Null unless strip_own.
Definition journal_source.hpp:64
std::size_t dropped() const noexcept
remap: events dropped so far because the configuration lacks their symbol.
Definition journal_source.hpp:66
const std::vector< sim::SimAccountConfig > * balance_snapshots() const override
The first balance snapshot the journal recorded for each venue (the BalanceMsg rows from its first kS...
Definition journal_source.hpp:71
const std::vector< std::string > & paths() const noexcept
The files read, in order; the first is path.
Definition journal_source.hpp:59
std::string note() const override
std::size_t seq_gaps() const noexcept
Parts whose first sequence number did not follow the previous part's last.
Definition journal_source.hpp:61
Timestamp start_ts() const override
Definition journal_source.hpp:55
const sim::RecordedParams * recorded_params() const override
Its ParamUpdate records and the first part's parameter table.
Definition journal_source.hpp:77
std::size_t md_events() const noexcept
Definition journal_source.hpp:62
DataSource (8.4): a timestamp-ordered stream of normalized market-data events consumed by the simulat...
Instrument: the single definition of a tradable contract (5.3 / 5.15).
Definition backtest_config.hpp:39
std::uint64_t write_md_journal(MdSource &source, const std::string &path, const InstrumentTable &instruments, std::uint64_t seed, std::string_view strategy="data", std::uint64_t max_events=0)
Writes the events of source (all, or the first max_events when non-zero) to a fresh ....
EventType
Message discriminator carried in EventHeader::type.
Definition enums.hpp:300
@ OptionTicker
mark / implied vols / greeks of one option (OptionTickerMsg)
@ PerpState
mark, index and funding of one derivative (PerpStateMsg)