===================================== lqr ===================================== LucisQR or simply **LQR**, is a data engineering suite that collects, transforms and captures financial data from several exchanges and stores them in a variety of media, including flat files (CSV, JSON, YAML), databases (ODBC/relational, NO-SQL) and specialized tick data warehouses (KDB,etc). **LQR** is meant to operate and switch seamlessly between **historical and realtime** operation modes, meaning that trading strategies created with the backtesting feature can be put into **production** without any additional development effort, making **time-to-market**, the transition from QT (Quantitative Trader) testing and production a matter of hours if not minutes. .. note:: **LQR** is currently in **ALPHA** stage so you might experience an array of issues but also grow and influence the development of the product. In a trading firm, **LQR** is the middleware that **connects all the pieces** of your trading puzzle: the exchanges, traders, your QR team and bots/trading strategies. **LQR** believes that market data is data **ready, delivered** to your trading strategy or backtest **no matter where it resides**. The source can be in the same process, same machine, same network, same datacenter or across the ocean. Data will be delivered to your application seamlessly, that is our pledge. Other commercial products excel at specific tasks as capture of data, translation of messages, leaving your desk the task to hire expensive C++ developers to fill in all the gaps. We pledge to provide all, front to back. Supported Operating Systems ------------------------------- **LQR** supports **Ubuntu** (18.04,20.04,21.04,22.04) and **Redhat** OS (7,8). .. note:: Our main application repository is located at https://www.vitorian.com/repo/lucisqr/latest/ Pricing ------------------------------- **LQR Basic** is available in alpha for a Starbucks-sized fee, which goes towards our AWS costs. Once payment is received, you will receive an email with a license file that will unlock the software. The license is valid from 6 months to 1 year. The easiest way to send payment is through Chase's Zelle using the identifier **payments@vitorian.com**. Once through, please send a message (`Contact Page`_) to the cited email with a note that a Zelle payment has been posted. .. note:: We also accept international **credit cards** but the process is currently manual. Please call us and provide the credit card number `Contact Page`_. Running the main executable ------------------------------------ Running the **lqr** command displays the subset of commands available .. code-block:: bash $ lqr This is the entry point to all the LightQR utilities. Explore more on each section below. Usage: lqr cert ... lqr mdp3 ... lqr erf ... lqr module ... lqr capture ... lqr lua ... lqr config ... Running the command again with the subcommand will display the help screen specific for that subcommand. .. note:: **lqr** is the only binary in the **LQR** suite. It works with multiple subcommands pretty much as the AWS client, for example. ======================== lqr cert ======================== These commands set up and verify license files. License files are collections of authorized features together with version and date limits. The license file below contains a license for the free version of lqr. It states when the license was generated, for which user and company as long as proper license notes. Finally the line "Entitlement" describes the type of license, date and version limits. .. code-block:: bash # This license file was automatically generated by Vitorian LLC # By using this software you agree to abide to the license terms stated on the software package # a copy which can be found at http://vitorian.com/lightqr_license.txt LicenseID,9C5F965B-6DF13583-4D99DACB-33BD1515-6277F2C5 Generated,20220709 Company,Vitorian LLC User,Henrique Bucher Notes,By using this software you agree to abide by the license terms Notes,License published at http://vitorian.com/lightqr.txt Entitlement,BASIC,,20230101,0,5 Running the command `lqr cert` will list all possible options for this subcommand. .. code-block:: bash $ apps/lqr cert Usage: lqr cert debug lists all entitlements currently active lqr cert check [...] verify license file for correctness lqr cert install [...] copies license files into canonical folder lqr cert debug ------------------------------------ This command lists all the entitlements currently active. .. code-block:: bash $ lqr cert debug Current Date: 20220718 Current Version: 0.1 Entitlement BASIC satisfied by file /home/hbucher/.lqr.d/admin.txt Entitlement BASIC satisfied by file /home/hbucher/.lqr.d/basic.txt Entitlement ADMIN satisfied by file /home/hbucher/.lqr.d/admin.txt .. note:: Entitlement files are typically installed in the directory $HOME/.lqr.d lqr cert check ------------------------------------ To verify if a license file is valid and current, run the `check` subcommand .. code-block:: bash $ lqr cert check /tmp/basic.txt File /tmp/basic.txt contains a valid license lqr cert install ------------------------------------ Copies license file into canonical folder .. code-block:: bash $ lqr cert install /tmp/basic.txt File /home/hbucher/.lqr.d/basic.txt copied successfully from /tmp/basic.txt ======================================= lqr config ======================================= The `config` subcommand will manage the common environmental settings that are constant for a user so they do not need to be passed to the application every time. Works like a git configuration. .. code-block:: bash $ lqr config Usage: lqr config set [] sets the given key-value pairs in the configuration lqr config print prints the current configuration lqr config clear clears all the current configuration lqr config import imports the given configuration file lqr config help prints all possible configuration values lqr profile [ ] with no arguments, prints the current profile with one argument, changes current profile .. note:: The configuration under Linux is typically stored under :code:`$HOME/.lqr`. It is a YAML file that can be directly read and edited. lqr config print ------------------------------------- Prints the current configuration set or part of it .. code-block:: bash $ lqr config print default: {Logging: INFO, Remote: {IP: 192.168.10.49, Type: Linux, LastUsed: 20220429}} If an argument is passed, it has to be a key or a combination of keys, in which case only the configuration under that key will be printed. .. code-block:: bash $ lqr config print Remote {IP: 192.168.10.49, Type: Linux, LastUsed: 20220429} $ lqr config print Remote.Type Linux .. note:: Configuration keys are in the form :code:`[.....]`. lqr config set ------------------------------------- When run without arguments, prints all possible parameters to be set. .. code-block:: bash $ lqr config set Possible values: ... (depends on your version) ... When passed with arguments, each has to be a name-value pair as for example: .. code-block:: bash $ lqr config set Logging=INFO $ lqr config print default: {Logging: INFO, Remote: {IP: 192.168.10.49, Type: Linux, LastUsed: 20220429}} .. note:: The set command provides no output, unless there is an error. lqr config clear ------------------------------------- Clears all the profiles and configuration values and initializes an empty file. .. code-block:: bash $ lqr config print default: {Logging: INFO, Remote: {IP: 192.168.10.49, Type: Linux, LastUsed: 20220429}} $ lqr config clear $ lqr config print default: {} lqr config import ------------------------------------- Imports an external configuration file. This has the same effect to replacing the file manually but it also verifies the validity of the config file prior to copying. .. warning:: This option will NOT merge the contents of the given file .. code-block:: bash $ lqr config print default: {Logging: INFO, Remote: {IP: 192.168.10.49, Type: Linux, LastUsed: 20220429}} $ mv ~/.lqr /tmp/config $ lqr config print default: {} $ lqr config import /tmp/config Config imported from /tmp/config with success $ lqr config print default: {Logging: INFO, Remote: {IP: 192.168.10.49, Type: Linux, LastUsed: 20220429}} lqr config profile ------------------------------------------- So far all the examples above use the "default" profile. There are cases where the user might want to switch to different settings while keeping the original ones for later use. To display the current profile, just run the command without arguments .. code-block:: bash $ lqr config profile Current profile: default To change the current profile, enter one single argument as the name of such profile .. code-block:: bash $ lqr config profile europe $ lqr config profile Current profile: europe Once it is changed, all :code:`set` commands will be reflected in that profile .. code-block:: bash $ lqr config set Country=Italy $ lqr config print default: {Logging: INFO, Remote: {IP: 192.168.10.49, Type: Linux, LastUsed: 20220429}} europe: Country: Italy $ lqr config print Country Italy ================================= lqr lua ================================= .. warning:: The :code:`lua` scripting feature is currently experimental and under heavy development. ================================= lqr mdp3 ================================= This subcommand deals with the CME Market Data Protocol version 3 (MDP3). lqr mdp3 download -------------------------------------- Downloads configuration and archived metadata from the CME FTP website. .. code-block:: bash $ lqr mdp3 download [config] [secdef] : -h [ --help ] This help -v [ --verbose ] Verbose operation. Default is [false] -d [ --dated ] Produces dated files. Default is [false] -e [ --environments ] arg (=production) Comma-separated list of environments to download. Valid values:production,cert, nrcert,nrautocertplus,certautocertplus. --files arg One of [config] or [secdef]. In the simplest case, donwload the production configuration, which will be used in the following commands as an example. .. code-block:: bash $ lqr mdp3 download config Downloading ftp://ftp.cmegroup.com/SBEFix/Production/Configuration/config.xml into config-Production.xml $ head config-Production.xml If you want to download files only for a certain environment and timestamp it, follow the example below. .. code-block:: bash $ lqr mdp3 download config -d -e cert Downloading ftp://ftp.cmegroup.com/SBEFix/Cert/Configuration/config.xml into config-Cert-20220718-145727.xml lqr mdp3 capture -------------------------------------- This is a helper feature that allows for the instant capture of MDP3 packets given a CME configuration file. The general command form is: .. code-block:: bash lqr mdp3 capture [channel [channel]...] : -h [ --help ] arg (=0) this help message -c [ --config ] arg XML config file name. Use `lqr mdp3 download -f config` to fetch the xml config from the CME website. --channels arg Comma-separated list of channels to listen. -e [ --environment ] arg (=prod) Environment, one of: prod,cert,newcert. Default [prod] -v [ --verbose ] arg (=0) Verbose operation -i [ --interface ] arg Interface to listen. Defaults to all. As an example, to capture all streams from the channel 310 use the command below. .. code-block:: bash $ lqr mdp3 capture -c config-Production.xml 310 Creating socket IP:224.0.31.1 Port:14310 Type:I Side:A Creating socket IP:224.0.32.1 Port:15310 Type:I Side:B Creating socket IP:224.0.31.43 Port:14310 Type:N Side:A Creating socket IP:224.0.32.43 Port:15310 Type:N Side:B Creating socket IP:224.0.31.22 Port:14310 Type:S Side:A Creating socket IP:224.0.32.22 Port:15310 Type:S Side:B Creating socket IP:233.72.75.1 Port:23310 Type:SMBO Side:A Creating socket IP:233.72.75.64 Port:22310 Type:SMBO Side:B Enabling channel 310 socket SnapshotMBOB Enabling channel 310 socket SnapshotMBOA Enabling channel 310 socket SnapshotB Enabling channel 310 socket SnapshotA Enabling channel 310 socket SymbologyB Enabling channel 310 socket SymbologyA Enabling channel 310 socket IncrementalB Enabling channel 310 socket IncrementalA .. note:: In the previous example we used the config-Production.xml file obtained with the :code:`lqr mdp3 download` command. .. _Contact Page: https://www.vitorian.com/contact.html#contact-page