2022 FIRO HummingBot campaign

The FIRO and HummingBot teams are once again teaming up to promote FIRO by filling two pools of liquidity on the FIRO-USDT pair (at Binance and at Gate.io).

Currently there are:
20 bots on Binance representing 24.8% of 24-hour trading volume.
16 robots on Gate.io representing 23.4% of trading volume over 24 hours.

Liquidity is replenished by 118 FIRO and 20,833 HBOT (unlisted at the moment) every week until June 28th, for each pair.
These 2x118 FIRO per weekly are financed by the 15% of the block-reward attributed to the FIRO team. In the event of the creation of a community fund, they would be financed by the community fund, relieving the team-fund.
According to HummingBot, the annual return of this campaign would currently be 220% (Binance) and 404% (Gate.io).

I launched a bot on Binance: it’s a bit complex, but not insurmountable. What seems to me the most difficult is to manage the security of its environment (as always) and the fine-configuration of the bot.

I open this topic so that we can exchange our experiences on this operation (technical, financial, political…) and possibly make some conclusions once it is finished.


The blog article about this operation : FIRO log HummingBot operation.

1 Like

Hey thanks for creating this thread! Would be cool if you can also share your Hummingbot configurations (which aren’t sensitive!).

1 Like

The configuration I link below is a good starting point for a liquidity mining strategy.

  • This is a basic pure market making strategy that is market neutral (meaning it’s not bullish or bearish on FIRO).
  • It tries to keep a 50/50 balance between FIRO and USDT.
  • It will place 3 orders on each side (3 orders on buy and 3 orders on sell).
  • It places orders at the 0.2%, 0.7% and 1.3% (configurable using order_level_spread)
  • It increases the size of the order on each level due to the less risk involved with higher spreads.

Remember the closer you place the order to the mid price, the more rewards you’ll get. Liquidity provided only counts if it’s within the 2% band from the current price.

There are a few things you would need to customize:

This controls how far you will let the bot drift from the inventory spread and will stop placing orders on one side if it goes too far off. It will also adjust order size to try and keep it in this inventory range. You can play around with it and type status to see how it affects the percentage.

This is how much FIRO you want to place on an order.

My configuration starts at 3 which means 3 on buy side and 3 on sell side. You can reduce or up this.

This is how much you want to increase the order on each level. For example if you have an order amount at 50 and place the order_level_amount at 25, each level will increase by 25. Meaning 50, 75 and 100.

This is how much gap you want to leave between each level. For e.g. in the current configuration I use 0.5 and a starting ask/bid spread at 0.2. This means each level increments 0.5%

###       Pure market making strategy config         ###

template_version: 22
strategy: pure_market_making

# Exchange and token parameters.
exchange: binance

# Token trading pair for the exchange, e.g. BTC-USDT
market: FIRO-USDT

# How far away from mid price to place the bid order.
# Spread of 1 = 1% away from mid price at that time.
# Example if mid price is 100 and bid_spread is 1.
# Your bid is placed at 99.
bid_spread: 0.2

# How far away from mid price to place the ask order.
# Spread of 1 = 1% away from mid price at that time.
# Example if mid price is 100 and ask_spread is 1.
# Your bid is placed at 101.
ask_spread: 0.2

# Minimum Spread
# How far away from the mid price to cancel active orders
minimum_spread: -100.0

# Time in seconds before cancelling and placing new orders.
# If the value is 60, the bot cancels active orders and placing new ones after a minute.
order_refresh_time: 60.0

# Time in seconds before replacing existing order with new orders at the same price.
max_order_age: 1800.0

# The spread (from mid price) to defer order refresh process to the next cycle.
# (Enter 1 to indicate 1%), value below 0, e.g. -1, is to disable this feature - not recommended.
order_refresh_tolerance_pct: 0.05

# Size of your bid and ask order.
order_amount: 50.0

# Price band ceiling.
price_ceiling: -1.0

# Price band floor.
price_floor: -1.0

# Whether to alternate between buys and sells (true/false).
ping_pong_enabled: false

# Whether to enable Inventory skew feature (true/false).
inventory_skew_enabled: true

# Target base asset inventory percentage target to be maintained (for Inventory skew feature).
inventory_target_base_pct: 50.0

# The range around the inventory target base percent to maintain, expressed in multiples of total order size (for
# inventory skew feature).
inventory_range_multiplier: 0.15

# Initial price of the base asset. Note: this setting is not affects anything, the price is kept in the database.
inventory_price: 1.0

# Number of levels of orders to place on each side of the order book.
order_levels: 3

# Increase or decrease size of consecutive orders after the first order (if order_levels > 1).
order_level_amount: 75.0

# Order price space between orders (if order_levels > 1).
order_level_spread: 0.5

# How long to wait before placing the next order in case your order gets filled.
filled_order_delay: 300.0

# Whether to stop cancellations of orders on the other side (of the order book),
# when one side is filled (hanging orders feature) (true/false).
hanging_orders_enabled: false

# Spread (from mid price, in percentage) hanging orders will be canceled (Enter 1 to indicate 1%)
hanging_orders_cancel_pct: 10.0

# Whether to enable order optimization mode (true/false).
order_optimization_enabled: true

# The depth in base asset amount to be used for finding top ask (for order optimization mode).
ask_order_optimization_depth: 0.0

# The depth in base asset amount to be used for finding top bid (for order optimization mode).
bid_order_optimization_depth: 0.0

# Whether to enable adding transaction costs to order price calculation (true/false).
add_transaction_costs: false

# The price source (current_market/external_market/custom_api).
price_source: current_market

# The price type (mid_price/last_price/last_own_trade_price/best_bid/best_ask/inventory_cost).
price_type: mid_price

# An external exchange name (for external exchange pricing source).

# A trading pair for the external exchange, e.g. BTC-USDT (for external exchange pricing source).

# An external api that returns price (for custom_api pricing source).

# An interval time in second to update the price from custom api (for custom_api pricing source).
custom_api_update_interval: 5.0

#Take order if they cross order book when external price source is enabled

# Use user provided orders to directly override the orders placed by order_amount and order_level_parameter
# This is an advanced feature and user is expected to directly edit this field in config file
# Below is an sample input, the format is a dictionary, the key is user-defined order name, the value is a list which includes buy/sell, order spread, and order amount
# order_override:
#   order_1: [buy, 0.5, 100]
#   order_2: [buy, 0.75, 200]
#   order_3: [sell, 0.1, 500]
# Please make sure there is a space between : and [

# If the strategy should wait to receive cancellations confirmation before creating new orders during refresh time
should_wait_order_cancel_confirmation: true

# For more detailed information, see:
# https://docs.hummingbot.io/strategies/pure-market-making/#configuration-parameters

1 Like

Do you think it’s valuable to support liquidity on Gate.io? Somehow low volume there.

I’ll come back to my experience a little later (I have to leave), but for this question on Gate.io, I’ll give you a quick answer:

All other things being equal, bots on Gate.io therefore earn significantly more FIRO and HBOT than bots on Binance.com. Is it useful? In my opinion, no: it’s creating an artificial gap.

On the other hand, what would seem useful to me is to promote the FIRO-BTC pair at Binance.

One thing I’m not too fond of is the over reliance on Binance. While they are a great exchange they are excluded from many important markets like the US.

Gate.io has less requirements and is the go to for altcoins besides Kucoin as well.

1 Like

Yes, you are right.

The fair solution would be to weight the FIRO (and HBOT?) rewards according to the trading volume made on each platform. Looking quickly, Binance does about 15 times (to be verified more precisely over a few weeks) more volume than Gate.io on the FIRO-USDT pair, so a fair reward split would be:

  • Binance.com:
    FIRO: (118x2x15)/16 = 221.25 FIRO
    HBOT: (20.833x2x15)/16 = 39,061.875 HBOT
  • Gate.io:
    FIRO: (118x2x1)/16 = 14.75 FIRO
    HBOT: (20.833x2x1)/16 = 2,604.125 HBOT

Some news from my robot:

It has been working 24 hours a day for 3 days.
The first day, he didn’t place any orders (I don’t know why).
So he placed orders for 2 days.
I changed a lot of parameters in 3 days and there are really a lot of related parameters: difficult to be sure of the right choice for each parameter (the configuration proposed by Reuben above seems to be a top configuration : I haven’t explored everything yet.).

My numbers:
Spread: 0.5%
The spread is the most important parameter according to HumminBot and they advise a spread of 1%, but it is too high: almost no order goes through. But beware of the fees (2x0.1%) if you are tempted to lower it too much.
Target pct basis: 50
Max order age: 900

My results :
Profit & Loss (HummingBot dashboard): loss (-0.90%)
I have been losing since the first order placed: this drop varies but stabilizes between approximately 0.5 and 2.5%.
Earnings from FIRO sponsorship: approximately 1 FIRO
Balance (Profit & Loss - fees + FIRO sponsorship): I haven’t made a precise calculation, but in order of magnitude, I must be a very slight loser.

I will continue to explore this robot: it is complex and the “liquidity mining” strategy is really specific, sometimes even against our habits.

Some news from my liquidity mining robot:

The numbers (winnings are counted per week: we are halfway through the current week):

  • We are 38 robots on Binance’s FIRO-USDT pair and we share 118 Firos.
  • I am TOP3 (about 15$) since the beginning of the weekly ranking. I thought I would lose this place quickly and fall to last, but no.
  • TOP2 and TOP1 are tied (about $65, TOP2 just passed TOP1, congratulations :-)) and very far ahead of me. TOP4 is half of my result.
    From TOP10, earnings drop below $5.
    From TOP17, we are below $1.

My comments:

  • I should be enthusiastic given my TOP3, but it’s very misleading: in reality, I’m losing money. On the one hand I make money (liquidity mining campaign) but on the other hand I lose money (losing trades + fees) and I lose a lot more th an I win. I tried a lot and continue to do so and in the end I lost 20% of my bet. I am in the process of completely modifying my strategy and I have good hopes of returning to equilibrium within 4 or 5 weeks, if there is no market crash by then.
  • Earning money with liquidity mining is not easy. Nothing is acquired and we play against each other. There are experts with very sophisticated strategies, who manage to adapt their spread to market volatility.
  • So you have to read a lot and try a lot. Despite this, nothing is certain because it is strategy on something unpredictable: human behavior.
  • So be careful (but it’s exciting).

Btw because you’re rewarded for providing liquidity (not necessarily trades) having it at 1% is fine too :slight_smile:

Yes, absolutely: for 2 days I have been increasing my spread. Yesterday, the volatility increased and I still had a few trades (losers), so I increased my spread again and no trades since 14 hours.
I will win a lot less but I will lose even less: that’s what makes me think that I will recover my losses in a few weeks :-).

I saw that you advised the “pure market making” strategy. Me, as it’s about “liquidity mining”, I left on the “liquidity mining” strategy.
Do you think that the “pure market making” strategy makes it possible to do better than that of “liquidity mining”, or is it just that the “liquidity mining” strategy is recent and you haven’t had the opportunity to test it?

I tested the “pure market making” strategy and that’s where I lost the most, but as you know, it’s because I took the problem backwards, so I’m at fault. I plan to test it again as soon as I have a little more perspective on that of “liquidity mining”, and taking the problem in the right direction this time.

If you have any advice it would be welcome.
Thank you.

The second week of the 2022 liquidity mining campaign has just ended: time to check-up the situation.

The overall results:

  • 44 robots participated.
  • They shared 118 FIRO ($413.58) and 20,833 HBOT (unrated).
  • The first 2 in the ranking won $142.85 + $130.09 = $272.94, or 65.99% of the bonus.
  • The next 42 shared the remaining 33.10% of the bonus.
  • I am 3rd and I won $16.21 bonus (but I lost 30% of my capital).
  • Among the top 10, 8 are part of the “eagle club”: they are high-level HuminBot users and earn a significant amount of money each month (at least $578.12 for the current month).
  • The 2 people in the TOP10 who are not part of this club (therefore beginners) are me and the one who arrived in 9th position.
  • From the 9th position, the bonus drops below $10 ($9.75).
  • Whoever comes in 10th position wins $7.08 bonus.
  • From 25th position, the bonus drops below $1.

What this ranking inspires me:

  1. The use of HumminBot requires a lot of learning and time: 8 of the TOP 10 are “eagle club” and of the 2 remaining, at least 1 loses money (me).
  2. Earning a bonus does not mean earning money: out of the 44 robots in operation, I am probably not the only one to lose capital. How many lose money, in what proportion of their investment?
  3. The bonus split amounts result in huge variations between the first 2 and the next 42. The first 2 most likely deserve their bonus because they have the skill the others don’t. But if this kind of bonus were to be paid by the FIRO community fund, that would be seem to me very inconsistent with the “community development” aspect.

As for my losses:
1) Caution:
Since my beginnings, I have progressed a lot in my understanding of liquidity miing and my knowledge of HummingBot. I managed to reduce my losses, but not to stop them completely. So I probably still have a lot to learn.
Be extremely careful before you start: the learning phase is long and results in losses.
2) Caution again:
There are robot specialists in the markets and a liquidity mining strategy set up by a beginner (lots of parameters left at their default settings) is very easily predictable, thus easy prey to “liquidity hunter” robots.

1 Like

I haven’t tried the liquidity mining strategy but it appears to be more resistant to volatility as it has an additional setting:

Volatility-Spread adjustment is another key feature of this strategy, where the spreads are dynamically adjusted based on the volatility of the markets.

volatility_interval int 300 False What is an interval, in second, in which to pick historical mid price data from to calculate market volatility?
avg_volatility_period int 10 False How many interval does it take to calculate average market volatility?
volatility_to_spread_multiplier decimal 1 False Enter a multiplier used to convert average volatility to spread

I haven’t grokked all these settings yet though.

1 Like

Contrary to what one might suppose, the trades that have been triggered in recent days (therefore with a high spread: 1%), have not been triggered on the largest candles, but rather on medium candles with significant wicks.
Each triggered trade is unique and it is difficult to generalize.
But I do think there is a time lag between the trade executing and the source of its explanation (which clears the order book until a 1% spread is executed). What would create this shift would probably be the volatility calculation, so the 3 parameters you mention are very important to master: this is not my case yet.

In my search for explanations, I went to look at the log files: I was also surprised at the number of errors encountered by the robot (usually with the API), which sometimes must prevent it from reacting in time. .

I took advantage of the week that is beginning to relaunch a test of the “pure_market-making” strategy, taking inspiration from your parameters: I love the “order_levels: 3” :slight_smile:

1 Like

To the guys here, I’ve been following your progress on this and you seem to have learned a lot, I planning to getting into liquidity mining for this campaign. What resources would you recommend for learning about how to program a good bot, furthermore is liquidity mining the same thing as running a regular trading bot. I’ve already downloading hummingbird, please let me know if it’s not too much trouble.

Good news: HummingBot is open-source, so no need to program everything. From what I saw, the software is programmed mainly in python.

The only resources needed here are a computer (without power constraints, even a Celeron will do, unless you want to run 10 bots at the same time: my bot takes between 4 and 8% of my 8 years old i3) and a text editor.

As for complexity: I would be lying if I said that all you need to do is configure your bot for 5 minutes to make money. This is not for everyone. We can clearly see this in the results of the current campaign: 8 of the top 10 are “eagles”, therefore very experienced users, probably experts (who sometimes do all the campaigns, therefore “pros” of bots) and, despite their gains, some may be, like me, losers.
I think the best advice I can give is to invest only a limited amount and expect to lose some of it. So if you’re a beginner and you’re going there to make some money, it seems difficult to me (but I could be wrong).
The only thing to do: try :slight_smile:

1 Like

Awesome, thanks for the round up :grinning:, is there anything I should read up on to try to get liquidity mining info or just try different settings for myself and see what works?

On their website there are 2 very extensive sections: the more you read, the better :

1 Like

Their Discord is also great.

1 Like