C2 bug with European tickers

Hello, we are trying to get one of our EU algorithms live but we noticed that the prices that C2 displays is exactly a factor 100 lower than the real prices on the LSE (London Stock Exchange). We validated it with the LSE website but also with Yahoo & Google Finance.

Because C2 displays the prices a factor 100 lower, it looks like only 1% of the model account is invested and the whole returns calculation is also much lower. In fact, the returns becomes negative because the subscription fee and commission fees are higher than the incorrectly low returns. The C2 replication of the strategy into our live IB account does seem to work normal though.

But obviously the strategy now incorrectly does not look good on C2. I have checked with other EU strategies I could find on C2, and all of the EU strategies seem to have the same issue.

Can C2 please fix this?

Have other strategy leaders experienced the same issue?

Hi, Roy - We’re looking into this.

Matthew, super. Good to hear. Probably a division by 100 somewhere in the code.

Please also check the currency sign. It shows as GBP in our strategy but the tickers we use are listed in USD on the LSE. This is a smaller thing obviously, but while you are fixing this, you might want to fix the currency sign as well.

Any news on when you think this bug will be resolved?

Roy

Hello Matthew, we have received response from your developer. He mentioned that on the LSE stocks are listed in pennies, instead of full GBP values. Which is why the values get divided by 100.

This is true for GBP-listed stocks, but the LSE also hosts many assets which are listed in USD and EUR (since London is one of the big financial centers in Europe). For USD and EUR listed assets (which we are using in our strategy), this assumption is therefore incorrect and therefore also the whole visualization and performance calculation on Collective2.

Had the same problem. Tried to bypass the issue by multiplying quantities by 100, which seems to have worked but then per share based commissions exploded. We had to take our LSE strategy offline.

Hello, just multiplying the volumes does not work since then your subscribers will buy volumes which are a factor 100 higher than their accounts.

I have talked to Matthew in the meantime. Apparently in the datafeed they currrently receive for the LSE, they have no way of identifying the currency in which a ticker is listed. Since for GBP they need to divide by a factor 100 and for USD and EUR, they just need to take the value as such.

I have already emailed them a list of all LSE tickers with their currencies so that they are able to have this mapping. And I have suggested them to download the IB LSE listings file which also provides that information. That will be a better longterm solution. Matthew told me that they were going to try and fix this in September. So let’s hope that works and gets delivered.

Apparently so…

The assumption was that since the price scale used by C2 was leading to transactions 1/100 of target quantities (causing a utilization of 1% of total model account), using 100.Q in place of Q would fix the equity curve and other stats… And it was so. Things started to look normal after we started to multiply Q by 100. Of course, it turned out that the implied-assumption C2 was actually scaling 100.Q back Q to before submitting the orders to the exchange was incorrect.

I think it would have been better if an exchange based filter was used rather than a symbol-list filter. Namely, scale down 100Q to Q if target exchange is LSE. Otherwise, it would require the symbol-list to be updated periodically.

In the shortest run, C2 could

  • Force trade leaders to use 100Q as opposed to Q for LSE listed assets
  • Submit signals to the venue as Q (scale back from 100Q)
  • Continue to update equity curves and stats w.r.t P/100 and 100Q (obviously some stats if not all would be biased due to this scaling).

Or,

  • Switch to a different data vendor if possible.

Well, the issue is that on the LSE assets can be listed in GBP, EUR or USD. This approach would only work for the GBP-listed assets (which they already did). For the EUR and USD assets, they need to use the regular C2 process.

Consider the two symbols C2 uses for BHP

  • listed as “BHP” (USD)
  • listed as “LSE.BHP” (GBP)

C2’s response that no way of identifying the currency in which a ticker is listed is perplexing. This failure cannot be stemming from symbols/tickers used by C2-users because they are already unique.

And it can’t be related to when routing signals (even if C2 have to map its internal symbols to exchange-specific symbols/tickers) because otherwise they would also have no way of telling whether “BHP” is not in USD. In other words, if you buy/sell “BHP”, the system recognizes that it is in USD, whereas when you buy/sell “LSE.BHP”, it again recognizes that it is in GBP.

Anyway, thanks for sharing your experience/perspective. They were useful (unlike the responses I got from C2 support)

Hi, mka -

The example you gave (BHP vs LSE.BHP) is, I agree, a simple one to solve. The less obvious one is a case where there are two symbols that look like this:

LSE.xxx
and
LSE.yyy

but one of them is denominated in GBP, and the other in EUR. The hard part for us is that there is no way to know the currency from the symbology, so we need to do some programming to handle the currency lookups.

I’ve already communicated with @RoyLenders (who appears in this thread) and let him know that I hope to solve this problem, fingers-crossed, by the end of September.

I am sorry for the inconvenience this is causing. I’ll keep you posted here in this thread.