Files
catalyst/docs/source/features.rst
T
2017-12-12 13:28:57 -05:00

123 lines
5.5 KiB
ReStructuredText

Features
========
This page describes the features that Catalyst provides in the current version,
and what is planned for future releases.
Current Functionality
~~~~~~~~~~~~~~~~~~~~~
* Backtesting and live-trading modes to run your trading algorithms, with a
seamless transition between the two.
* Paper trading simulates order in live-trading mode.
* Support for 3 exchanges: Bitfinex, Bittrex and Poloniex in both modes
(backtesting and live-trading). Historical data for backtesting is provided
with daily resolution for all three exchanges, and minute resolution for
Bitfinex and Poloniex. No minute-resolution data is currently available for
Bittrex. Refer to
`Catalyst Market Coverage <https://www.enigma.co/catalyst/status>`_ for
details.
* Interface with over 90 exchanges available in live and paper trading modes.
* Granular commission models which closely simulates each exchange fee
structure in backtesting and paper trading.
* Standardized naming convention for all asset pairs trading on any exchange in
the form ``{market_currency}_{base_currency}``. See
:ref:`naming`.
* Output of performance statistics based on Pandas DataFrames to integrate
nicely into the existing PyData ecosystem.
* Support for accessing multiple exchanges per algorithm, which opens the door
to cross-exchange arbitrage opportunities.
* Support for running multiple algorithms on the same exchange independently of
one another. Catalyst performance tracker stores just enough data to allow
algorithms to run independently while still sharing critical data through
exchanges.
* Benchmark defaults to Bitcoin price (btc_usdt in Poloniex exchange) for the
purpose of comparing performance across trading algorithms. A custom benchmark
can be specified through ``set_benchmark()`` (but see
`issue #86 <https://github.com/enigmampc/catalyst/issues/86>`_).
* Support for MacOS, Linux and Windows installations.
* Support for Python2 and Python3.
For additional details on the functionality added on recent releases, see the
:doc:`Release Notes<releases>`.
Upcoming features
~~~~~~~~~~~~~~~~~
* Additional datasets beyond pricing data (Dec. 2017)
* API documentation (Jan. 2017)
* Support for decentralized exchanges (Jan. 2017)
* Support for data ingestion of community-contributed data sets (Jan. 2017)
* Pipeline support (Jan. 2018)
* Web UI (Q2 2018)
.. _naming:
Naming Convention
~~~~~~~~~~~~~~~~~
Catalyst introduces a standardized naming convention for all asset pairs
trading on any exchange in the following form:
**{market_currency}_{base_currency}**
Where {market_currency} is the asset to be traded using {base_currency} as
the reference, both written in lowercase and separated with an underscore.
This standardization is needed to overcome the lack of consistency in the
naming of assets across different exchanges, and making it easier to the user
to refer to the asset pairs that you want to trade.
Catalyst maintains a `Market Coverage Overview <https://www.enigma.co/catalyst/status>`_
where you can check the mapping between Catalyst naming pairs and that of each
exchange. Catalyst will always expect in all its functions that you will refer to
the asset pairs by using the Catalyst naming convention.
If at any point, you input the wrong name for an asset pair, you will get an error
of that pair not found in the given exchange, and a list of pairs available on that exchange:
.. code-block:: bash
$ catalyst ingest-exchange -x poloniex -i btc_usd
.. parsed-literal::
Ingesting exchange bundle poloniex...
Error traceback: /Volumes/Data/Users/victoris/Desktop/Enigma/user-install/catalyst-dev/catalyst/exchange/exchange.py (line 175)
SymbolNotFoundOnExchange: Symbol btc_usd not found on exchange Poloniex.
Choose from: ['rep_usdt', 'gno_btc', 'xvc_btc', 'pink_btc', 'sys_btc',
'emc2_btc', 'rads_btc', 'note_btc', 'maid_btc', 'bch_btc', 'gnt_btc',
'bcn_btc', 'rep_btc', 'bcy_btc', 'cvc_btc', 'nxt_xmr', 'zec_usdt',
'fct_btc', 'gas_btc', 'pot_btc', 'eth_usdt', 'btc_usdt', 'lbc_btc',
'dcr_btc', 'etc_usdt', 'omg_eth', 'amp_btc', 'xpm_btc', 'nxt_btc',
'vtc_btc', 'steem_eth', 'blk_xmr', 'pasc_btc', 'zec_xmr', 'grc_btc',
'nxc_btc', 'btcd_btc', 'ltc_btc', 'dash_btc', 'naut_btc', 'zec_eth',
'zec_btc', 'burst_btc', 'zrx_eth', 'bela_btc', 'steem_btc', 'etc_btc',
'eth_btc', 'huc_btc', 'strat_btc', 'lsk_btc', 'exp_btc', 'clam_btc',
'rep_eth', 'dash_xmr', 'cvc_eth', 'bch_usdt', 'zrx_btc', 'dash_usdt',
'blk_btc', 'xrp_btc', 'nxt_usdt', 'neos_btc', 'omg_btc', 'bts_btc',
'doge_btc', 'gnt_eth', 'sbd_btc', 'gno_eth', 'xcp_btc', 'ltc_usdt',
'btm_btc', 'xmr_usdt', 'lsk_eth', 'omni_btc', 'nav_btc', 'fldc_btc',
'ppc_btc', 'xbc_btc', 'dgb_btc', 'sc_btc', 'btcd_xmr', 'vrc_btc',
'ric_btc', 'str_btc', 'maid_xmr', 'xmr_btc', 'sjcx_btc', 'via_btc',
'xem_btc', 'nmc_btc', 'etc_eth', 'ltc_xmr', 'ardr_btc', 'gas_eth',
'flo_btc', 'xrp_usdt', 'game_btc', 'bch_eth', 'bcn_xmr', 'str_usdt']
In the example above, exchange Poloniex does not use USD, but uses instead the
USDT cryptocurrency asset that is issued on the Bitcoin blockchain via the Omni
Layer Protocol. Each USDT unit is backed by a U.S Dollar held in the reserves of
Tether Limited. USDT can be transferred, stored, and spent, just like bitcoins
or any other cryptocurrency. Given its 1:1 mapping to the USD, is a viable alternative.
.. code-block:: bash
$ catalyst ingest-exchange -x poloniex -i btc_usdt
.. parsed-literal::
Ingesting exchange bundle poloniex...
[====================================] Fetching poloniex daily candles: : 100%