All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
v1.10.0 - 2020-10-22
- New Trading Strategy: Pendulum Strategy (#427)
- Log value of total assets in a common format (#433)
- Always log levels returned for all strategies (#436)
- Add code version used to upgrade database in the db_version table (#445 and #447)
- Database Schema Test Infrastructure also tests indexes on tables (ad607653c13eb76ba3be5b17a5203a08b2ea11af)
- Upgrade Script for postgres database to include an accountId in the trades database (#444)
- Sell TWAP strategy (#454)
- Cheaper and more accurate fill tracking (trade tracking) (#456 and a52a1571d39d326640f1eadf4e1ea62e8953a416)
- Kelp GUI: Add legal disclaimer about running on mainnet (#484)
- Kelp GUI: make pubnet bots available with a single boolean switch (#475)
- Add link to PR with new trading template (#453)
- Mirror Strategy: track orders triggered on backingExchange by trades on primaryExchange (#503)
- Set up CLI data tracking (#478, #516, 539, 96bd33d3e6bae5de3bd96361eeb1e195ece55f89, 84e258208cbae8df6ba6f93e35340351ac58cbba, 6da8ddc642e9f0112bb20064ada554a7a099f7aa)
- ccxtExchange should allow fetching binance orderbook with limits between the hardcoded binance limits (#528 and 00508f6277f164b58f13fab0ed2e41e9e4241ea7)
- Simple Integration tests in CircleCI (#51)
- Post-only support for some exchanges when using maker_only submit mode (#440)
- update disclaimer in Kelp README (#485)
- mirror strategy should handle primary and backing exchange balance calculations and constraints better (#524)
- various updates to README (ee1fe1f847b5ace97272b82de2bf758e4bb732e5, c22e46bd46307d31f47829cad0d4f57921abfb9e, 2d15399fbf1d0533563d54d0450c3eab950c5525)
- add winning StellarBattle content to README (0ba9a2c563a9fb664611f326a03ad8d2e83ccb39 and 2baa57f34946f48d4e6592cb7c1832b585a40d19)
- add min postgres version number to README (#514)
- Fix sample config files (#538)
- mirror strategy should allow different divide by values for bid and ask sides, deprecate VOLUME_DIVIDE_BY config field (#545)
- mark Kraken exchange as tested (2e3db3c6d530663af783604c59ba0c7407b9ba7d)
- mirror strategy should allow different divide by values for bid and ask sides, deprecate VOLUME_DIVIDE_BY config field (#545)
- Kelp GUI: fix issue of fiat currency dropdown not updating correctly (fe19dcbaac0845e5bec7415528ffe02db93245af)
- fix index out of range when getting prices from sdex (#416)
- Fix baseAmount used when placing orders (#435)
- Fix FetchTrades for Kraken (#450)
- sellSideStrategy.go#PreUpdate does not call GetLevels when base asset is 0.0 (#457)
- KrakenExchange should get latest cursor in seconds instead of millis (#465)
- bot should crash if delete cycles threshold is exceeded (#471)
- remove minOrderSizeBase from UUID in sellTwapLevelProvider.go (#482)
- Kelp GUI: fix another instance of OSPath.String() being called (#430)
- failure to submit ops (async or sync) should count towards the delete cycles threshold (#498)
- mirror strategy should prepend deleteOps before both bid and ask ops (#501)
- mirror strategy: log num trades received from backing exchange on triggered fill (#505)
- Kelp GUI: Propagate bot initialization & startup errors back to GUI (#506)
- More granular Kelp AppNames (#488)
- Kelp GUI: disallow invalid characters in bot name (#429)
- mirror strategy fails to start up without db enabled, nil pointer dereference (#525)
- modify offers in mirror strategy is not correctly adjusting price and amount (#526)
- Rounding issues in mirror strategy causing offers to not be placed (#541)
v1.9.0 - 2020-05-07
- Kelp GUI: allows revealing the log file on startup (bbd709736f25fdf8f4809fb5e4f017ce1d405afa)
- Kelp GUI: start backend server before sending ready string message (f2d75d52bfb9dbbee74414b863b813a204f85a53)
- Kelp GUI: explicit quit button inside the Kelp GUI window (846fcf0517be36d3143967e43f33d2a2238aa719)
- update build script to introduce new force option (-f, --force) (f49f8778f226dbe0069c057068a7557d2411e955)
- Kelp GUI: improve ccxt download to show progress for better visibility (9a9fad13701b84a54c5441175328eae457a2c454)
- Kelp GUI: copy ccxt zip from source near binary to dotKelp/ccxt folder (8ea4b1e5b8c6438d67daea24c5311a3d80fb1ac9)
- Kelp GUI: allow copy paste keyboard shortcuts and add to menu bar along with Quit option (3dfb14a3dffcea2ddeb474501cc24185158f0932)
- improve build script process used to package Kelp GUI (35533687b828880f19b33d953ba21790f9e86414)
- add image logo to README (61bbf654dd8ead5dc76c86da1b5c637b9780af5a)
- Kelp GUI: add reload button in menu (64807a4538d19710dca2a91b907c36334da10f7a)
- Kelp GUI: allow bots to be deleted when in Initializing state (1491b61ddfd9f12c76faa91eeff5cd620c508c64)
- Kelp GUI: fix generation of bundler.json and bind files to reduce redundant astilectron builds (5a5967c78e087023ac96bf64e5683a52ff5af7ae)
- Kelp GUI: package for windows via tail file web server with cors-enabled /ping endpoint and add --no-electron (71729111be7bc23eb9aac601b9dd407aa607503d)
- Kelp GUI: Fix filepaths for windows by introducing the kelpos.OSPath (e6d89f7a79774b6e36c79f13dc735d7af9216dbd)
- Kelp GUI: Fix basepath and use pingURL to ping server in tailFile before redirect (20a5cf4c08491aa49ecc385c643237d8adec5a9c)
- Kelp GUI: do not attempt to add trustlines for assets created by trading account (9fd7afc5ad03ae5a1473dd6dedc0e319bdddaea1)
- Kelp GUI: do not allow trading from the issuer account (2081ad9f83a6a69623150115446e586d8baa1108)
- Upgrade stellar SDK dependency to 'horizonclient-v3.0.0' tag from stellar/go to make it compatible with protocol 13 (9884a0402d3f0d7307f6de03d46013a3605c79bf)
- when setting fee if endpoint is not available (eg: custom network) then use maxOpFeeStroops (5e8085c790214fa3569ed5c76ca622e8da8e4834)
- add back missing dependencies of asticode to glide.lock (a01c0b21da7e7a265a0a4a54130c8f135a1a18cb)
- Kelp GUI: windows does not use zip version of ccxt-rest binary because 'unzip' is not supported by default in WSL (f86d17ea056dbdb9f65f19fc7dda115574cf9e5d)
- Kelp GUI: autogenerated and empty bots run once every minute (6e853bfcbd64783ea49397c7616d1a81a3839c0c)
- Kelp GUI: adjust frontend timer intervals and add comments (6fb8d428b59a2e517d8f952837169b416b9a45c6)
- Kelp GUI: automatically pay test accounts with 1000 units of any asset issued by GBMMZ... public issuer (3c87298c8b4ce88045d542b872f825532071fc86)
- Kelp GUI: fix too many open files error (df4cb9e87eee5c537f22cd19b49a56c0709c610d)
- Kelp GUI: fix windows bash execution (ec74f1b4ad019864b79a8f35e4638947bebe621f)
- Kelp GUI: run ccxt on windows (9f9ab964a299cd1c950838d2cb1c4bd32bb426ba)
- Kelp GUI: use github.com/pkg/browser to call cross-platform OpenURL function (8729754b4df07e2c0db537780a1dd41c90e44b09)
- Kelp GUI: default windows to --no-electron in bat file (6a6d9ccae71b788dee55970f072edcc8f2c5a80d)
- Kelp GUI: refactor os paths used to accommodate for 260 character file path limit in windows (ae33d83c7ba2344e085816f4071b0763a4a1336e)
v1.8.1 - 2020-02-17
- throw error on startup when FILL_TRACKER_SLEEP_MILLIS is not set but POSTGRES_DB is set (99799da07bd2afafc061d410f9fa72b0b0332d75)
- log offer if isSelling check fails (ea505bdfd6c41ecf71eb1b13e3c5f0c1cb7666a3)
- upgrade horizonclient to patched version to fix load offers issues (c0a4e3ac4eadfd34b31081ff911169a37d26d7d5)
- upgrade horizonclient to patched version to fix delete offer op issue (2cbfb6782915f1bfd949aa2821d94e9bbf735d6f)
- workaround empty trades error (f6d31c2587c3bc7fb4a68a7e7ed6c1777021f001)
- update priceFeed_test#wantUpperBoundXLM (a8dbcf4afbdb896e7fe5fa85de611a48b3112db9)
v1.8.0 - 2020-02-11
- Dockerize Kelp binary (b61207012dd10b44220acf644703aa346834778c)
- Kelp UI: Wrap GUI as a standalone desktop application using Electron (b725cbaf9c67e8d3b9aea29316c5ec22d168c81e)
- combine build and test tasks in circleci (b725cbaf9c67e8d3b9aea29316c5ec22d168c81e)
- script to build pre-compiled binaries for CCXT-rest (b0d608f092b7dd461ec14b350c5e6d4789c7fa01)
- add support for dynamic headers in CCXT for exchanges such as coinbase (335d191e6d5b4cadc738454023eb65450a008d8b)
- allow bot to write its trades to a postgres SQL database via a config param (493b4b004c7363634141723e40350dae0edb9fad, a6ffc8c770b03999c58fd2f589b58622fa80ac00)
- new filter system for risk management along with a set of some basic filters: 'volume', 'price', 'priceFeed' (11d4927770b2fbbade2dc8f61055f4faa504af17, 66ea6105938434c090b28d3b7cb65d32d5100a62, 3e0c240c7c1aabd618f45634589237c3dcd91cd3, 9062d7d01904990ff8690932f3702023b27e491e, 391d3fbcc20e53e4daf556db4617f59e0f9a98e9)
- modifiers to price feed: 'mid', 'ask', 'bid', 'last' (116f7d1c1762b23c93389d13120e37111a3d6ef7, afb56289b86cf5412580a0b0536b8230e3a3a37c)
- new type of 'function' price feed with the following functions out-of-the-box: 'max', 'invert' (412b81cdf925b4d2c498a8d691e86411f3ba6b4a)
- allow custom starting point from where to load trades into db using FILL_TRACKER_LAST_TRADE_CURSOR_OVERRIDE config param (4c19915f4795732c75a76eeff07160be29f426d6)
- Kelp GUI should use pre-compiled CCXT binary to expand access to exchanges (fba752f99fff79a10a2a308efb6794b251ff0d03)
- UI feedback during Kelp GUI app startup (12eccd2a566e68a707e5777d9b2759c239f10cb5)
- Kelp GUI should have a different version number from the Kelp CLI (ba297f6d6c0f21da12a93f373bbcf16868d86958)
- Kelp GUI: Parallelize loading of CCXT instances (0aa5700c75eb4cc1af2b817eef3961ad6aef63f7)
- Upgraded horizon types to use hProtocol package (4af564dd9aeeb976685e381470f8a9fa0626b49e)
- Upgrade horizonclient to v2 to support API of horizon v1 API (ba198426b99e7919a16ec998503ec5d0143d38bf)
- Upgraded Go SDK to use horizonclient package (585080c76f173acd5a1348f3f662796d5aeda719)
- Upgraded Go SDK usage to
txnbuild
package instead ofbuild
package (c18c97f388d3a605b9c48edb5085008791467a1c) - Multiple usability improvements to the Kelp UI (f7db6c8430c834040020efa7c58ed860ff303abc through f765ae00d73f4a6a3d6eedf35de6d5528a5f455f)
- Guarantee fixed number of successful runs of update cycle via the
--iter
cli param (4845a6220a5091cd97c6833c359077c7a3afc291) - updated README (c58982c25e8ead8c91ca17f09d4c96cc3705d772, 2cb57326f37b7f68ed9d58710eaca4fec0111113, dddd9707b6c20e259595979fb96c8b95eb634757)
- current official support for only go1.13 (45d80334c5772a139c1066731d5937977e590fee)
- remove travis.yml config file (54d4fc88e83e6f5f3211226cadd84118e9142995)
- git bash windows compatibility, replace
rev
command in build.sh and clean.sh (8ea336c379e6770a7ee4646aa3750ca51ed6f203) - improve number.AsRatio() conversion using stellar/go/price for more accurate pricing on centralized exchanges (59cabd6bf81e61a237f33c25e319530937941d76)
- fix number.AsString() method (f942cf8f24f65d54e9aa9c232594c73fef236e5f)
- fix cursor and cost param in trade parsing and ccxtExchange_test (b6eb0411aa8f01dd1c4acd07d28d2886f75bfc49)
- return an error when loading existing offers fails instead of ignoring (95503d943d1152c6524d1fae5efde762adbaf9a6)
- ccxtExchange should correctly populate cost of trade (db4531d5866853681d3dc71c222e42b0416c044d)
- upgrade yarn.lock js dependencies to address any security concerns in js dependency libraries used by Kelp GUI (a6c03336f0d9f1bc6874eabe2887171a4dd4a369, 77ec937e2175082969aae7b133daf9ea0cf9a350)
v1.7.2 - 2019-08-26
- add triggers to modification log line in sdex (a9991dcfde025c20239bf28f35c0f28d73b1107c)
- fix fill tracker to also work with path_payment type operations for sdex, fixes #219 (fb6f4d41bb395769fdc4965e9c0d76033bbcd192)
- fix op_underfunded error when replenishing top offer (b56d7b51b467a4c2c0f059c8620b59800049c321)
- new oversell trigger during modify to check need to reduce amount of existing offers (82285f3c5b4dcb6c05d5e400a49d57e23c7942b3)
v1.7.1 - 2019-07-18
- Fill tracker order action now correctly reflects direction of trade (5392d3e89787cf39993abaa02f5eea69be6e8c59)
v1.7.0 - 2019-05-05
- Bundle React.js into Kelp with 3 modes of running with 'server' command in dev mode (857214c14a5fd2c67a20d618f45614e33c6a97ae)
- added UI components for GUI (22e3d4242e93f2f0ddaf2e66a3f796ed668e1a0e)
- allow setting custom URL for CCXT-rest server (3c9af0cb098e0476512de2d002693b9b6cae426b)
- improve function number.AsRatio() for more accurate pricing on centralized exchanges (5d33101192a4834ee186228c4c3a17d6112086d7, f193eeef1c7cc328a529e6403af67f0f325ca0e6)
- increased limit when checking for open offers, reducing total requests to horizon (5416d78c754360144ed1f7e3cc0b31135eb47fea)
- Use v0.0.4 for ccxt-rest to fix travis build and update the instructions in our README file. The APIs have diverged with the latest release of ccxt-rest v1.0.0 so we are sticking to the older version for now (659bb20560a018c766c5c5db1bed55df922b7a2e).
v1.6.1 - 2019-04-12
- Use app name and version headers from horizon client in Go SDKs (d21a75fcdbff323de46e3d2a46f37d64831b1cb7)
- Add overrides for remaining orderConstraints via configs, fixing precision errors on centralized exchanges (6d989c8d78ea7c088e36b2b6f2bb7679013617d0)
- Add support for passing in params and headers to CCXT exchanges, such as coinbasepro (e7c76fe14191f14410aa0bcc34b06e202cc1c020)
- Fixed "Asset converter could not recognize string" error when trading using krakenExchange (258f1d67d3899ed21c3ee69cefd6299ea1c8bd4a)
- Turn off minBaseVolume checks in mirror strategy when OFFSET_TRADES=false (82e58b49381973efa5adc12c0f0238432f6cce2c)
- fix monitoring by only checking google auth when related config values are passed in (860d76b0c089efa62299093ff9ccf2d7b868a14c)
v1.6.0 - 2019-03-29
- Enable trading on centralized exchanges (505162a86777f99fba26bc953b3125aba90e2f7e) (a9ab0346ddd3500395018d1dbcf426200b5fb112) (3a1b4c467495a5ebb8219c554dd8a5e4d63723e5)
- support for OrderConstraintsFilter to preempt invalid orders (b9ba73071d97e9e0e8c6f61989ff9375be4dbbeb)
- Expand CCXT exchanges enabled on Kelp, including trading-enabled exchanges (0631bb1ec8892e331907614cca94d66aed3ee026) (40c56416e07a5f974815ee0ca11992c8825e57c2)
- Fill Tracker should accommodate N errors before causing bot to exit (de12bfe16e7d68f76798e4b99f60cb005386c2cb)
- Use FeeStats() method from new horizonclient package in stellar/go repo; run
glide install
to update vendored dependencies, do NOT runglide up
since that will break the dependencies installed because of an issue with how glide works (ce226cc20ce6a38fe56728c91432db9edd7cb272) - krakenExchange logs better error message when trading pair is missing (807139ff2b4b6fb81726459b1ef1958d95f7cd95)
- Sort exchanges based on what is tested first (8d6d4502032b8b5b237ad9d2a6fe3c38f176c541)
- Fixed Mirror Strategy not working without offsetTrades flag (09f76e891967a146363ccbd8fe8ccf53656c270e)
- Fix minVolume amounts when offsetting trades in mirror strategy (0576aa1724b98b3d359b1d82ca36b156b0251977)
v1.5.0 - 2019-03-04
- support for dynamic fee calculations using the
/fee_stats
endpoint (c0f7b5de726b7718f9335ba6b1e1aceca3d9a72d) - include ccxt-kraken as a read-only exchange (796ae5964a835ca441bb67f5964656dc2b5ecdb4)
- USDC as a recognized asset (3894b9a38fef601e5fe27a901f3f66a2071478f2)
- load orderConstraints for ccxtExchange from CCXT API (8d28c11b488e74f04d23f2ef62df6b603e731c68)
v1.4.0 - 2019-02-06
- Support to run Kelp in maker-only mode using the trader.cfg file (081aa210e684678b94c0ec2d772ad808eec9f0d6)
- Support for an SDEX priceFeed so you can follow ticker prices from other SDEX markets (8afec86c831c45aef2e4cc8e0c85c1de6d192325)
v1.3.0 - 2019-01-10
- mirror strategy offsets trades onto the backing exchange, run
glide up
to update dependencies (3a703a359db541b636cab38c3dd8a7fbe6df7193) - ccxt integration now supports trading APIs for all exchanges (5cf0aedc67eff89a8f82082326f878844ac7b5d5)
- randomized delay via the MAX_TICK_DELAY_MILLIS (4b74affb9933bf08a093ee66cea46c1b3fb87753)
- balanced strategy avoids unncessary re-randomization on every update cycle (0be414c77c2f12c9b4b624922aea5841e84c704c)
- fix op_underfunded issue when hitting capacity limits (d339e421f82de9e2996e45e71d745d81dff2f3f0)
v1.2.0 - 2018-11-26
- support for alerting with PagerDuty as the first implementation, run
glide up
to update the dependency (5e46ae0d94751d85dbb2e8f73094f5d96af0df5e) - support for logging to a file with the
--log
or-l
command-line option followed by the prefix of the log filename - support for basic monitoring with a health check service, run
glide up
to update the dependency (c6374c35cff9dfa46da342aa5342f312dcd337c4) iter
command line param to run for only a fixed number of iterations, runglide up
to update the dependencies- new DELETE_CYCLES_THRESHOLD config value in trader config file to allow some tolerance of errors before deleting all offers (f2537cafee8d620e1c4aabdd3d072d90628801b8)
- reduced the number of available assets that are recognized by the GetOpenOrders() API for Kraken
- levels are now logged with prices in the quote asset and amounts in the base asset for the sell, buysell, and balanced strategies
- clock tick is now synchronized at the start of each cycle (cd33d91b2d468bfbce6d38a6186d12c86777b7d5)
- conversion of asset symbols in the GetOpenOrders() API for Kraken, reducing the number of tested asset symbols with this API
- fix op_underfunded errors when we hit capacity limits for non-XLM assets (e6bebee9aeadf6e00a829a28c125f5dffad8c05c)
v1.1.2 - 2018-10-30
- log balance with liabilities
- scripts/build.sh: update VERSION format and LDFLAGS to include git branch info
- fix op_underfunded errors when we hit capacity limits
v1.1.1 - 2018-10-22
- fixed bot panicing when it cannot cast ticker bid/ask values to a float64 from CCXT's FetchTicker endpoint (0ccbc495e18b1e3b207dad5d3421c7556c63c004) (issue #31)
v1.1.0 - 2018-10-19
- support for CCXT via CCXT-REST API, increasing exchange integrations for priceFeeds and mirroring diff
v1.0.0 - 2018-10-15
- executables for windows should use the .exe extension (7b5bbc9eb5b776a27c63483c4af09ca38937670d)
- fixed divide by zero error (fa7d7c4d5a2a256d6cfcfe43a65e530e3c06862e)
v1.0.0-rc3 - 2018-09-29
- support for all currencies available on Kraken
v1.0.0-rc2 - 2018-09-28
- This CHANGELOG file
- Updated dependency
github.com/stellar/go
to latest version5bbd27814a3ffca9aeffcbd75a09a6164959776a
, runglide up
to update this dependency
- If
SOURCE_SECRET_SEED
is missing or empty then the bot will not crash now. - support for CAP-0003 introduced in stellar-core protocol v10 (issue #2)
- Kelp bot with a few basic strategies, priceFeeds, and support for integrating with the Kraken Exchange.
- Modular design allowing anyone to plug in their own strategies
- Robust logging
- Configuration file based approach to setting up a bot
- Documentation on existing capabilities