<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.spiretrading.com/index.php?action=history&amp;feed=atom&amp;title=NeoeMarketDataFeedClient</id>
	<title>NeoeMarketDataFeedClient - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.spiretrading.com/index.php?action=history&amp;feed=atom&amp;title=NeoeMarketDataFeedClient"/>
	<link rel="alternate" type="text/html" href="https://wiki.spiretrading.com/index.php?title=NeoeMarketDataFeedClient&amp;action=history"/>
	<updated>2026-05-28T22:54:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>https://wiki.spiretrading.com/index.php?title=NeoeMarketDataFeedClient&amp;diff=143&amp;oldid=prev</id>
		<title>Kamal: Created page with &quot;The NeoeMarketDataFeedClient disseminates real-time market data for the Aequitas NEO Exchange. It connects to the Service Locator for authentication and provides order boo...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.spiretrading.com/index.php?title=NeoeMarketDataFeedClient&amp;diff=143&amp;oldid=prev"/>
		<updated>2026-05-27T20:18:37Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;The NeoeMarketDataFeedClient disseminates real-time market data for the Aequitas NEO Exchange. It connects to the &lt;a href=&quot;/index.php/Service_Locator&quot; title=&quot;Service Locator&quot;&gt;Service Locator&lt;/a&gt; for authentication and provides order boo...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The NeoeMarketDataFeedClient disseminates real-time market data for the Aequitas NEO Exchange. It connects to the [[Service Locator]] for authentication and provides order book data, time and sales, and the consolidated best bid offer (CBBO) for the NEO Exchange.&lt;br /&gt;
&lt;br /&gt;
The feed is split into multiple channels for disseminating the CBBO, book, and trade data. Each channel resides in its own subdirectory whose name starts with the &amp;lt;code&amp;gt;neoe&amp;lt;/code&amp;gt; prefix: &amp;lt;code&amp;gt;neoe_cbbo&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;neoe_cls&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;neoe_book&amp;lt;/code&amp;gt; for the CBBO, time and sales, and book feeds respectively.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Each channel is configured via a YAML file (&amp;lt;code&amp;gt;config.yml&amp;lt;/code&amp;gt;) with the following structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service_locator:&lt;br /&gt;
  # The address of the Service Locator (host:port).&lt;br /&gt;
  address: &amp;quot;127.0.0.1:20000&amp;quot;&lt;br /&gt;
  # The account username used to authenticate with the Service Locator.&lt;br /&gt;
  username: market_data_feed&lt;br /&gt;
  # The password for the Service Locator account.&lt;br /&gt;
  password: [REQUIRED]&lt;br /&gt;
&lt;br /&gt;
# Rate at which market data snapshots are sampled and forwarded to the&lt;br /&gt;
# Market Data Server.&lt;br /&gt;
sampling: 100ms&lt;br /&gt;
&lt;br /&gt;
# Multicast group address and port for the feed.&lt;br /&gt;
host: &amp;quot;239.0.0.1:30501&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Network interface to join the multicast group on.&lt;br /&gt;
interface: &amp;quot;0.0.0.0:0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# UDP socket receive buffer size in bytes (default: 128 MB).&lt;br /&gt;
receive_buffer: 134217728&lt;br /&gt;
&lt;br /&gt;
# Maximum datagram size (MTU) in bytes (optional; defaults to system MTU).&lt;br /&gt;
mtu: 1500&lt;br /&gt;
&lt;br /&gt;
# Retransmission endpoints for recovering dropped packets.&lt;br /&gt;
retransmission_request_address: &amp;quot;142.201.149.44:61030&amp;quot;&lt;br /&gt;
retransmission_response_address: &amp;quot;142.201.149.44:61031&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Whether retransmission requests are enabled (default: false).&lt;br /&gt;
enable_retransmission: false&lt;br /&gt;
&lt;br /&gt;
# Maximum number of retransmission requests before giving up (default: 10).&lt;br /&gt;
max_retransmissions: 10&lt;br /&gt;
&lt;br /&gt;
# Maximum number of messages requested in a single retransmission block (default: 20000).&lt;br /&gt;
retransmission_block_size: 20000&lt;br /&gt;
&lt;br /&gt;
# Time zone used to compute the feed's time offset (default: &amp;quot;America/Toronto&amp;quot;).&lt;br /&gt;
time_zone: &amp;quot;America/Toronto&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Enable logging of every received message (off by default; verbose when enabled).&lt;br /&gt;
enable_logging: false&lt;br /&gt;
&lt;br /&gt;
# Whether this channel carries time and sales data.&lt;br /&gt;
is_time_and_sale: false&lt;br /&gt;
&lt;br /&gt;
# Optional MPID rewriting: maps source IDs to canonical MPID names.&lt;br /&gt;
mpid_mappings:&lt;br /&gt;
  - source: 1&lt;br /&gt;
    name: ANON&lt;br /&gt;
&lt;br /&gt;
# Path to the security master list (symbols.yml).&lt;br /&gt;
symbol_list: &amp;quot;symbols.yml&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;sampling&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;host&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;interface&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;retransmission_request_address&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;retransmission_response_address&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;symbol_list&amp;lt;/code&amp;gt; fields are required. All other fields have defaults.&lt;br /&gt;
&lt;br /&gt;
== Security Master ==&lt;br /&gt;
&lt;br /&gt;
A security master list of traded securities is typically stored in the &amp;lt;code&amp;gt;symbols.yml&amp;lt;/code&amp;gt; file with the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
- symbol: AAPL                  # The ticker symbol.&lt;br /&gt;
  name: APPLE CDR (CAD HEDGED)  # The name of the security.&lt;br /&gt;
  board_lot: 100                # The security's board lot.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Changes can be made in this security master list and reloaded by restarting the NEOE CBBO feed.&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;setup.py&amp;lt;/code&amp;gt; Python script configures all of the channels at once and can be called as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  --local 192.168.0.100          # Local interface (default: auto-detected IP)&lt;br /&gt;
  --address 127.0.0.1:20000      # Service Locator address&lt;br /&gt;
  --username market_data_feed    # Service Locator username (default: market_data_feed)&lt;br /&gt;
  --password [REQUIRED]          # Service Locator password&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Management ==&lt;br /&gt;
&lt;br /&gt;
Each channel is managed through three core scripts:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;start.sh&amp;lt;/code&amp;gt; - Starts the channel. Does nothing if the channel is already running.&lt;br /&gt;
* &amp;lt;code&amp;gt;stop.sh&amp;lt;/code&amp;gt; - Stops the channel and waits for the channel to terminate.&lt;br /&gt;
* &amp;lt;code&amp;gt;check.sh&amp;lt;/code&amp;gt; - Verifies that the channel is running.&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
&lt;br /&gt;
Log files are generated as &amp;lt;code&amp;gt;srv_[YYYY][MM][DD]_[HH]_[MM]_[SS].log&amp;lt;/code&amp;gt; in the runtime directory. Upon termination, non-empty log files are moved into the &amp;lt;code&amp;gt;log/&amp;lt;/code&amp;gt; subfolder, while empty log files are deleted.&lt;/div&gt;</summary>
		<author><name>Kamal</name></author>
		
	</entry>
</feed>