mirror of
https://github.com/wassname/catalyst.git
synced 2026-06-27 21:21:30 +08:00
123 lines
5.5 KiB
ReStructuredText
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 (Q1 2018)
|
|
* API documentation (Q1 2018)
|
|
* Support for decentralized exchanges (Q1 2018)
|
|
* Support for data ingestion of community-contributed data sets (Q1 2018)
|
|
* Pipeline support (Q1 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%
|
|
|