Foreign Exchange Fees

Basically as an extension to today’s devlog, I thought it would be nice to provide a bit more background about the possible variations of fees that could apply when doing FX trading.

How does FX trading work?

As described in an earlier devlog, FX trading is based on so-called currency pairs: A currency pair has a base currency - the currency that’s being traded - and a quote currency - the currency in which the price is quoted. This way, currency transactions can almost be treated like commodity transactions. The base currency becomes the commodity.

No matter which currency your own finances are kept in, you can trade any currency pair you like. So even if your own currency is AAA, you could trade the pair BBB/CCC.

Chicken-and-egg problem of FX fees

Say the game has just started and there are no NPC agents selling or buying currencies. Now a player from faction AA wants to buy currency of faction BB and a player from faction BB wants to buy currency of faction AA.

The player from AA could place a buy order for 10.000 units of BBC at a price of 1.2345 AAC/BBC. In currency pair notation, this would be “BBC/AAC 1.2345” (BBC is the base currency being traded, AAC is the currency in which the price is quoted).

The player from BB would to the same and place a sell order for 10.000 units of BBC at 1.2345 AAC each.

So far, so good. Those two orders would match and a trade would happen. But now imagine there would be a 1% fee both the buyer and the seller would have to pay for such a transaction and that this fee would apply in quote currency. No problem for the player from AA, because AAC is their own currency, so they probably have some laying around. But for the player from BB, this might be a problem because AAC is foreign currency they’d first have to buy. But they can’t buy it without having foreign currency to place an order in the first place. Hence, a chicken-and-egg problem :slight_smile:

A few options of how to get around this:

  1. Only one party has to pay fees. For example, if only the buyer had to pay fees, sellers could sell currency anywhere without having to worry about having the right currency for fees at hand while every buyer could initially limit trades to currency pairs with a quote currency that matches their own.
  2. Only buyer has to pay fees upfront, seller’s fees are deducted from transaction volume once it happens.
  3. Fees never have to be paid up-front but are invoiced after a transaction happens, leaving time for any involved party to acquire the required amount of currency and only pay afterwards.

Each of these obviously comes with its own pros and cons. Especially option 3 is relatively complex and something I would only see in later versions of the game when the Player Score feature is fully implemented.

Types of fees and their potential function

These are just some examples for possible fees. None of them have been implemented yet and most probably won’t be (initially). The current idea is to have a percentage-based fee only, but I’d love to hear what you think.

  • General function of fees
    • There needs to be a cost of doing currency trades.
    • Without fees, players could place orders at will without any financial penalty.
    • This in turn would make it a lot easier to “game the market” (which is not illegal, but something that should at least require effort).
    • Aside from foreign exchange risks, transaction fees make transactions involving foreign currencies less attractive, thereby helping to shape different economic zones.
  • Flat transaction fees
    • Percentage of transaction volume
    • Can be either based on order volume (the price the trader quoted) or the trade volume (the price at which a trade actually happened)
  • Minimum fees
    • A minimum amount of fees that always has to be paid, even if the percentage-based fee would be lower.
    • Helps to avoid very small orders that cause noise and outliers in statistics and quotes.
  • Base fees
    • Similar to minimum fees but always apply.
    • Charged in addition to the percentage-based transaction fee.
    • Generally increases the transaction cost, but penalizes small transactions especially.

Those were some random thought of mine on the topic. Let me know what yours are and whether you enjoy this kind of insight into my developer brain…if yes, I’d gladly write more of these posts in the future.


Hi martin,

first of all thanks for the look “behinde the scene” (or inside your dev brain xD) and definitely we need more about that.

Why not start a poll about that.
Do you want to see more about the insights of a dev brain? [poll type=regular]

  • Yes, please more of that.
  • No, that’s really not what i’m interested in.

I’m not 100% sure if i understand all correct and all of this currency tradning thing is new to me, so i will be back if i watched a coulple of YouTube videos about that.

Still not at home, so a quick reply:
I like the way handles fees. Each transaction has a 1% which is shared by buyer ans seller. Each pays in the currency she has and the broker receives fees in two currencies.
So if I sell 100 bitcoins worth 100 euro, I will receive 99.5euros and the buyer will receive 99.5 bitcoins.

1 Like

I’m not sure I understand the problem. If there is an exchange rate between the two currencies, why is it unclear for one of the parties how high their part of the fee is? Say, 2 BBC is worth 1AAC. The transaction is 100 AAC, the fee is 1%. Hence, the buyer and seller must each pay 0,5%, i.e. 0.5 AAC each. One of them only has BBC to their disposal, so they have to pay 1 BBC instead of 0.5 AAC, since that’s what the exchange rate dictates.

Side note: Congratulations, Michael! :smile:

1 Like

I forgot to mention a small but important detail: Contrary to commodity exchanges, where private exchanges could decide to do without escrow, the FX market always requires it. So at the very moment someone places an order, they also have to pay the fees and should they decide to cancel the order, they get them back (unless we decide to make fees non-refundable and per-order). For the seller that isn’t a problem because we can subtract the fees from their revenue. But the buyer would have to pay the fees in advance because all of the money they bid has to go to the seller. And that’s where the problem lies…can’t pay fees upfront in a currency you don’t own.

But I guess Michi’s suggestion might be the most simple solution to the problem. I’m just very much in the mindset of “base currency = commodity”, where all fees should strictly apply in quote currency, so it just didn’t feel right to me up until now :slight_smile:


Another option would be to do what the banks do for wire transfer: Leave the decision how the fees are paid to the parties involved. I suppose there only is a benefit for that if fees can be different for both parties.

Which leads to the question: Who collects those fees?

In the case of FX trading, “the system” collects the fees (because there are no player-controlled FX market placed). The fees merely serve to add friction and - to some extend - as a value drain.

I get your reasoning behind it. It just feels wrong from a closed economy perspective—the money needs to go somewhere. Maybe it could be an APEX thing for some odd reason?

Technically speaking, the brokers receive the fee (although they don’t currently book it). So if we wanted to, we could “clear the books” occasionally and transfer the accumulated fees to whichever NPC we think should be “controlling” the brokers. But to the player that would be invisible anyway and merely a “story detail”. An actual “closed loop” is our ideal but not the top priority right now.

1 Like