Binary Options: Scam or Opportunity?

We’re getting more and more coding contracts for binary option strategies. Which gives us a slightly bad conscience, since those options are widely understood as a scheme to separate naive traders from their money. And their brokers make indeed no good impression at first look. Some are regulated in Cyprus under a fake address, others are not regulated at all. They spread fabricated stories about huge profits with robots or EAs. They are said to manipulate their price curves for preventing you from winning. And if you still do, some refuse to pay out, and eventually disappear without a trace (but with your money). That’s the stories you hear about binary options brokers. Are binary options nothing but scam? Or do they offer a hidden opportunity that even their brokers are often not aware of?

Binary options, in their most common form, are very different to real options. They are a bet that the price of an asset will rise or fall within a given time frame. If you win the bet, the broker pays your stake multiplied with a win payout factor in the 75%..95% range. If you lose, you pay the stake minus a possible loss payout. You’re trading not against the market, but against the broker. The broker needs you to lose, otherwise he would not make any profit. Even if he really pays out your wins, and even if he does not manipulate the price curve, he can still control your profit with his payout factors. So it seems that even if you had a winning system, the broker would just reduce the payout for making sure that you lose in the long run.

However this conclusion is a fallacy. It can in fact be of advantage for the broker to offer a payout that allows you to win, as long as most other traders still lose. A broker has not the freedom of arbitrarily reducing the payout. He’s competing with other brokers.

But why would you want to trade binary options anyway, when you also can trade serious instruments instead? Aside from tax advantages in some countries, there is one single compelling reason that might make the experiment worthwhile. Profit and trading cost of a binary option are independent of the time frame. So you can trade on very short time frames, which would be difficult, if not impossible for retail traders with other financial instruments. You can find a discussion of this problem in the Scalping article.

Binary scalping math

The required minimum win rate for binary trading can be calculated from the broker’s win and loss payout:

W~=~ {1-Pl}/{1+Pw-Pl}

W = required win rate for break even
Pl = Loss payout
Pw = Win payout

With 85% win payout and no loss payout, you need a win rate of

W ~=~ 1/{1.85} ~=~ 54%

54% win rate seem to be manageable on short time frames. The transaction costs of a non-binary, conventional broker would require a much higher win rate, as in the following graph from the Scalping article:

Required win rate in percent vs. trade duration (non binary)

You had to win almost 80% of five-minutes trades – impossible for a trading system under normal conditions unless you enforce that win rate with some tricks, which however won’t help getting in the profit zone.

So, smaller trading costs on low time frames are the obvious benefit of trading binary options. With all the side benefits of low time frames, such as more data for backtests, and shorter drawdown periods in live trading. But how can we take advantage of that? There are three problems to solve.

Three steps to potential binary profit

  1. Find a strategy with a win rate that is better than the W determined with the above payout formula. But be aware that prices on small time frames are strongly feed dependent. For being on the safe side, test with different price data sources (f.i. HistData, Oanda, and FXCM) and stay several percent points above the minimum W.
  2. Find a way to trade automated. Binary brokers often do not want you to do that. Consequently they do not offer a platform or API for automated trading. But they all have a web interface. So you need either a software to send key strokes and mouse clicks to a website, or some other means to get your trades to the broker.
  3. Find a broker that’s halfway honest. At least one that allows you to really collect your gains. All binary brokers make it easy to deposit, but some follow the philosophy: “If you gave it to me, it’s mine.” Make test withdrawals before you deposit large amounts. Keep the account balance small. Check the broker’s opportunity to manipulate the price curve: the more customers they have and the more bets they handle, the more difficult is it to manipulate without attracting attention. Retrieve as many information as possible about your broker: Where are they really located? For some reason, fraudsters seem to be concentrated in Tel Aviv. Check what customers say about that broker – but be aware: positive statements on trader forums are often planted by the broker himself.

All those issues make trading binary options sort of “messy”. However it’s the messy methods that sometimes offer the best opportunities. Ed Thorp made his first millions with his Blackjack strategy and with a method to estimate the value of warrants, also considered messy and hard to calculate.

Step 1: The system

A price curve is no random walk. At least not all of the time. Long time frames are often dominated by trend, short time frames by mean reversion. When transaction costs do not matter, it’s not very hard to find a system with > 54% win rate on 5-minutes bars. Here’s a simple example that exploits the mean reversion tendency of short time frames (script for Zorro):

var objective()
	return ((var)(NumWinLong+NumWinShort))/(NumLossLong+NumLossShort);

function run()
	BarPeriod = 5;
	LookBack = 100;
	NumWFOCycles = 20;
	NumCores = -1;
	WinPayout = 85;
	LossPayout = 0;

	int TimePeriod = optimize(20,10,100);
	var Threshold = 0.01*(HH(TimePeriod)-LL(TimePeriod));

	if(NumOpenLong+NumOpenShort == 0) 
		LifeTime = 1;
		if(HH(TimePeriod) - priceClose() < Threshold)
		else if(priceClose() - LL(TimePeriod) < Threshold)

In the C code above we defined an individual objective() function that optimizes the system for binary trading. It measures the system performance as the number of winning trades divided by the number of losing trades. Otherwise the optimizer would hunt for the most robust profit factor, which makes no sense for binary trading.

The setup establishes a 5 minutes bar period, which is the time frame of our bets. We use 20 WFO cycles and let the optimizer use all CPU cores but one. This way the training run takes about 5-10 minutes for 5 years data. The BINARY flag activates binary trades, and we’re simulating a broker with 85% win payout and no loss payout.

We have a mean reverting system that trades whenever the current price is closer than a threshold – here, 1% of recent volatility – to its previous High or Low. The time period for determining the High and Low is the only system parameter that we optimize. You could improve the system in many ways, for instance by optimizing also the threshold, by modifying the objective() function so that it prefers systems with more trades, and by applying a filter that prevents trading in non mean-reverting market regimes. Since we bet on the price in 5 minutes, we’ve set the LifeTime of a trade to one bar. Here’s the equity curve from a 5 years walk forward test with EUR/USD:

Binary options

The system has about 56% win rate and a notable, although not spectacular positive return. Which is not achieved by the crude mean reversion mechanism, but mostly by amplifying the small entry-exit price differences through binary trading, even though the payout is only 85%. You won’t get a similar result with conventional trades. The same system not trading binary options, but leveraged forex positions produces a very different equity curve (for testing, comment out the BINARY flag and the Payout settings in the code):

Leveraged Forex

With the same trades we have now only 40% win rate and an overall loss, since all the trade profit is eaten up by spread and commission. 

Step 2: Automatizing

How do you let your script automatically enter a bet at the right moment? This is a technical issue unrelated to trading, but it comes up whenever you have a broker with a web based platform and no proper connection for automatizing. Here’s a code snippet for detecting the positions of [Buy] and [Sell] buttons on a website, and automated clicking them:

void main()
	int BuyX,BuyY,SellX,SellY; // button coordinates

// open the browser	
	printf("\nOpening the broker's website...");

// get the position of the Buy button
	printf("\nRight click on [Buy]!");
	while(wait(50)) {
		int button = mouse(&BuyX,&BuyY,window(""));
		if(button & 2) break;
// wait until right mouse key released	
	while(wait(50)) {
		int x,y,button = mouse(&x,&y,0);
		if(!(button & 2)) break;	

// get the position of the Sell button	
	printf("\nRight click on [Sell]!");
	while(wait(50)) {
		int button = mouse(&SellX,&SellY,window(""));
		if(button & 2) break;
// wait until right mouse key released	
	while(wait(50)) {
		int x,y,button = mouse(&x,&y,0);
		if(!(button & 2)) break;	

// send mouse clicks to Buy and Sell	
	printf("\nI will now click on [Buy]!");
	keys("[click %d,%d]",BuyX,BuyY);
	printf("\nI will now click on [Sell]!");
	keys("[click %d,%d]",SellX,SellY);

Start the script, and wait until the broker’s website pops up in your browser. Then follow the instructions in Zorro’s message window. Manoever the mouse onto the “Buy” button and hit the right mouse key. Then do the same with the “Sell” button. The script will store the button positions and then use the keys function to send test clicks to both positions of the active window. For testing purposes I’ve imitated a typical binary broker’s trading platform.

You now only need to glue together your trading script with the button clicking script, and adapt the latter to the website of your broker. This is left as an exercise to the reader. And better use improved versions – the scripts here are kept simple for demonstration purposes. As long as the script trades, make sure that the browser window stays in the foreground, or else it can not click on the buttons. For the position size, either enter a fixed size for all positions, or let your script click into the size field and send key strokes to set individual sizes.

Step 3: The broker

Of course I don’t want to recommend a particular binary options broker. In the end, they’re all crooks – but some are crookier than others. Finding a suited broker is, also, left as an exercise to the reader. Binary broker comparison websites are often – surprise, surprise – installed and paid by binary brokers. US citizens are normally not allowed to trade binary options with brokers that are not regulated in the US. Some brokers will accept your deposit nevertheless, but use that as pretext to refuse payout. If you’re a citizen of Israel, you might not be accepted by many binary brokers since they’re not allowed to fraud compatriots. 


It’s often the “messy” and despised trade instruments that can still provide opportunities when they are correctly understood. I’ve uploaded the two scripts to the 2016 repository. You’ll need Zorro 1.52 or above for running them (the scripts also run with version 1.50, but that version had a bug that produced inaccurate results with binary trading). When you now make huge profits with binary options, don’t forget where the money comes from: Not from the broker, but from his less fortunate customers that maybe just haven’t read the right blog.

56 thoughts on “Binary Options: Scam or Opportunity?”

  1. Thank you for this article. Would you happen to know of any software out there, or a model, that cap produce a binary risk curve over time? Similar to the risk graphs created by traditional options software? I found one on Wolfram but I can’t change the security prices. It would be very helpful for me to understand binary prices over time and volatility levels.

    Thanks again!

  2. I don’t know such a software for binary options, but you could probably calculate the graph with the standard Black-Scholes algorithm, just as for a normal option. The question is only what you would do with this information, since you can normally not sell a binary option during its lifetime.

  3. I have an account at Nadex and you can buy and sell them (close out a position). So I would be helpful for me to mode out the possible prices over time.

  4. Hi jcl,

    I bought your book recently and really liked it. Lots of great ideas for trading algos. I’m glad I understand some German.
    Here a question regarding your article:
    I’m a complete newbie to binaries, so please forgive my ignorance.
    You say that the trading cost does almost not depend on the the time frame. Obviously, when you put on a lot of trades in a short time, the expected profit is usually small, so it can easily get eaten up by commissions. As far as I understand, the payout of a binary is fixed, so it is always the same whether your trades last 1sec or 1000secs, which makes it in some sense time-independent. However, (and this is where I’m a bit green still), binaries have a fixed expiry date, so our profits are in some sense bound to the time to expiry and get smaller the closer our trade entry get to it. On the other hand, the closer we get to expiry, our probability of reaching a certain target price increases as the path divergence from spot to expiry gets smaller. So, in my naive understanding, the algo you presented above should only work optimal for a given time in the day that is n periods away from expiry. I’m probably wrong but I would like to hear your opinion of why this is not the case.

    PS, I think it should be fairly easy to model binary options with Monte Carlo rather than Black Scholes, as it is easy to put all sorts of constraints in it. I’ve done this with Barrier Options, it’s slower but quite effective.

  5. Jcl
    Do you intend on translating your book, or I’ll have to buy the e-book and them Google translate it? =)

    Best Regards

  6. @ Jeremy, Tom: I had not heard of Nadex before, but they indeed allow to exit an option before it expires. This article was only about the usual options with a fixed duration and costs independent of duration, but exiting options opens new interesting possibilities. A risk graph makes then a lot of sense. Maybe that could be the topic of another article. – @ Gonzatti: Yes, I’ll translate it when I find the time.

  7. Informative and entertaining as ever. Many thanks. Jeremy, Tom – thanks re Nadex. Interesting.

  8. hi, very interesting article, me too have an account at Nadex. and they have a very good and and informative site with huge amount of info. could u check their platform and how we can use this platform with Zorro app.

    with best regards

  9. From what I see, Nadex seems not to provide a direct connection. So you would need a script like above under “Step 2” or some similar solution for controlling their trade platform.

  10. Thank You for this informative contribution. The expiration time of the option may no doubt also be an interesting parameter to look at, although it is very broker specific what it can be set at. I have been trying to exploit this additional parameter, since in zorro there is the possibility of adjusting the ExitTime from the BarPeriod to some other value (I inserted after “LossPayout = 0;” simply ExitTime = 15; for instance). Surprisingly, if I do so with the above script the test result is always the same which can certainly not be correct. Why does this fail?

  11. Because your ExitTime is overridden by the LifeTime setting. You can use either ExitTime or LifeTime for the duration of a trade, but the recommended method is LifeTime. – You can find those issues by looking in the logfile. There you can see how long the trades last and which profit they make.

  12. great article, in my experience the binary options is good, but requires an strategy and some education, i have some profits, I apply martin gala system 🙂 Kisses

  13. Seems that LifeTime param. is not actually documented in zorro manual page at least I couldn’t find it. Would like to know the difference between ExitTime vs LifeTime

  14. GoMarkets has binary options on their MT4 platform, trading from your normal account.
    I think there are a few other’s out there too.

  15. Yes. Some brokers provide binary options through the FX LITE MT4 plugin. You can then trade directly with Zorro through the MT4 bridge and need no button click function. Only the time frame of the bet must be set up – as far as I know – in the order comment field.

  16. Probably via lot size, but I found no detailed documentation. I’ll inquire with the developer of the FX LITE tool.

  17. Ok, according to the developer this is the MQL4 command to bet on a rising price with FX LITE:

    OrderSend(Symbol(),OP_BUY,Size,Bid,3,0,0,"BO exp:60",magic,0,Color);

    and the corresponding Zorro code:

    brokerCommand(SET_ORDERTEXT,"BO exp:60");

    “Size” is the position size in units of the broker’s minimum size, like 1$. “BO Exp:” sets the duration in seconds. If you want to change the position size on the broker’s web interface, it’s just as with clicking the buttons: let the script click into the size field and then send key strokes for setting the size.

  18. Great & interesting example Johann – thanks for sharing.

    How does Zorro evaluate the binary option success? From the code, the ‘set(BINARY)’ is used to automagically evaluate the success of the prediction. In my own simulations of the same algorithm (EURUSD, last 5 years, 5min periods), the win rate is about 60% if the mean of the next period is used to determine success – but 52% if the close of the next period is used (more noisy)

    Also, some binary options brokers (like IG Index) quote a threshold price which is their prediction of where the market price will be in 5 mins. Our algorithm needs to determine whether the market price is likely to be higher/lower than the broker’s own estimate on expiry (not the market price when the bet is placed). This is hard.

  19. The close is used by Zorro. The mean would be wrong since it’s no real price. However 5-minutes data is highly feed dependent, and you will likely get different results with different brokers. Zorro uses FXCM price data by default, but it’s better when you backtest with price data from the very broker you trade with.

    It’s interesting how many variants of price bets are offered by binary brokers meanwhile. Using a predicted threshold would effectively prevent an algorithmic system since you can not backtest it.

  20. I get this message:

    BO compiling…….
    Error in ‘line 27:
    ‘SET_ORDERTEXT’ undeclared identifier

  21. “Undeclared identifier” means that your software does not understand what you’re typing. Either your version is too old or you did not type it right. This blog is not really a good place for programming support, but the user forum is. There you can also get the newest version.

  22. Thanks for the interesting article.
    I found has an API trading interface. Maybe we can expect Zorro will have ability to trade binaries ?

  23. A rare pearl in the sea of binary option articles! I also like a lot the general approach to trading you and the community of Zorro have. Kudos to you!
    I’m quite new to Zorro, so I think my question will have a simple answer. I tried to change the line:
    if(NumOpenLong+NumOpenShort == 0)
    if(NumOpenLong+NumOpenShort < 3)
    and got a suspiciously higher winning percentage. As I think this is not because of a real improvement of the strategy performance, what is the reason for that? Is there a way to place a (binary) trade – talking about training and testing mode – before all other trades expires?
    Thank you and congrats again!

  24. The “< 3" opens more trades, every time when an entry condition is met while the previous trade is still open. The higher winning percentage is probably mostly a random effect, but there could be also a real improvement when many additional trades fall into a mean reverting market regime. For even more trades, you could use a 1-minute bar period and run several five-minutes-trades opened on different bars in parallel. But for backtesting this I would recommend tick data. M1 data becomes unreliable on small bar periods.

  25. Thanks for the quick reply. I played around further with the script, and noticed an important fact to be taken into account in Zorro when simulating binary options strategies.
    When selecting a LifeTime much higher than 1 bar, and allowing placing positions when other positions are already open, you will notice that something odd is going on. You may get incredible (but unfortunately wrong…) results, that being due to the fact that by default Zorro closes a trade when another trade on the opposite direction is placed, assigning it a win or a loss depending on the situation at the moment (thus without taking into account the expiry time fixed by LifeTime). I think this is a “bug”, in the sense that Zorro should not behave like that when the the BINARY flag is set. I ‘solved’ the problem setting Hedge to 2, which allows to enter and open long and short positions simultaneously.
    Maybe this setting of Hedge to 2 should be executed automatically by the program when the BINARY flag is set, in order to avoid wrong simulation outcomes.
    I posted this info into the Zorro forum as well…

  26. Yes. When more than one trade can be open, Hedge must be set to prevent closing a position by opening opposite ones. Otherwise you could prematurely exit from your bet and book the profit! – This is not automatic, so the consequence of any setting must be carefully considered for emulating binary trading.

  27. I have some real experience with autotrading binary options. I built an interface for Newstrading. I used Forex News Gun and rent a server in New York, which put me in the position of executing a trade within 1ms once fundamental indicators are published. It’s an unbeatable system if you take your time to study how the market reacts to the data. I had 80+% winning rate and with the optimal risk (Kelly Formula!) I should be a millionaire by now! However, once brokers realize what’s going on, they block you out with error messages. I would highly recommend to learn how to apply fundamental analysis and how to trade manually instead of spending any energy on binary options because of my own experience. I spent like 2000€ for server rent, deposits I never got back (beware – 24option takes 80 units every month from you account if you don’t trade several month. StockPair does this as well), Winautomation Pro, and a custom coded strategy (was one of the customers JCL spoke about – it is possible to beat 57% winning ratio but it’s really hard with technical analysis only! I don’t think it’s possible to beat break even really significantly, so forget about getting rich quick). However, I managed to build a somewhat stable autotrading interface with Winautomation. If you are interested, I’m willing to share my code, but it will need adaptions for your broker. Nice article, I will play with this code the next time I’m bored.

  28. Would anyone be interested in working together on some of this stuff? I’ve written an nodeJS API for iqoption, along with a backtester that allows the algorithm to be dropped right into the API without any modification, but I’m still trying to figure out the price prediction part. This strategy gets about 55-57% accuracy when I tested it with the data from iq option. But when you factor in the changing profit rates and everything, there’s just not a whole lot of trades left.

  29. @TeeraLucksanapiruk Where you able to connect zorro with iq option through your API? If that is the case I am interested

  30. how can I get the script or apply the auto robot to trade for me with a good broker like ?

  31. Please guys – I work at the sharp end of the financial industry- these can best be likened to a roulette wheel with a slower time to burn than through your chips. Unless there has been some new market news the price fluctuations cannot be predicted on a five minute interval. Some of the finest on Wall Street make only 75% profitable decisions. The have access to non-public research, 20 years experience, teams of analysts using supercomputers crunching millions of transactions, financial capital (billions) and brokers that work for them. Thankfully they only need to be right on very specific transactions. You don’t give money to Nigerian scammers, why let someone take your money on binary options????

  32. SCAM

    I had $5000US dollars deducted from my visa to Optionbot 3.0. But I have not heard back from the company or from my broker who had promised me that by investing I would make a very good profit.
    Unfortunately I only received 1 call from my broker who set up some sort of auto trade and was told specifically not to touch it, which of course I haven’t.
    The problem is that now I lost all my money and I cannot reach them either.

  33. Dear all,

    I am writing this post because one broker named John, from such called: Optionbot 3.0 called me on 25 June of 2016 and forced me to open an account on their website promissing me that Optionbot will make 100% PROFIT of my deposits.

    I transferred that day 10 000 Euro by Credit Card. The broker took over my account and started trading. After half an hour, the margin level was under threat and I received a call and broker started to ask for more money. I sent another 5 000 Euro from my Credit Card!

    On 30 June, he opened 11 wrong positions with a huge loss and I woke up with all my money lost.
    I instantly called my broker and this criminal which burned all my money said that he will refund all my positions and I will succed to withdrawal all my money.

    I waited for few hours and tryied to call John, and he never asked. Days passed away, I was trying and trying to call him, to write to his email, but without answers.
    I want to catch this broker which robbed my money, and made hundred of trades on my behalf without my consent and to punish him for every EUR that he lost, to punish him piece with piece just to understand how hard is to make money.

    I still hope that I will find justice one day, but for you guys, PLEASE, DO NOT EVER REGISTER OR CHARGE THIS SHITNESS SITE: OPTIONBOT 3.0

  34. Binary options are great financial product but there is a lot of greedy brokers and firms . They stealing money from innocent people through robots, auto-traders and signal services.. All these systems are usually created by unregulated binary options brokers..

    On this site you can find many scam systems:

  35. I wished I have read this article before I parted with my 250US dollars with BDB. Scammers really were able to convince me by calling me long distance from Cyprus.

  36. I have been trading binary options with this script on live/demo accounts since Dec. on auto pilot with two brokers.

    It seems on some days it works really well and on other days it’s the opposite. The end result is, it’s struggling to break even. Love to work with someone to improve this. Let me know if you guys are interested.

  37. It’s all good and well to say that you are succeeding as a trader when your account balance is rising and trades seem to be going well. But I’m wondering if anyone here has managed to withdraw any actual cash from binary trading accounts? Things were going really well for me and I believed I had found a quick path to success when I started trading and winning. But, when I needed to liquidize my funds, it was impossible. Has anyone been successful in getting money out? I have been contacted by a legal team who has informed me that the binary company I invested with will not ever give me my money unless I open a case against them, so I am thinking of doing this. Does anyone have any experience / advise about this?

  38. Comments like this appear here every second day, and usually end up in the spam folder since they look like bait for advertising “legal teams” or “hackers” to “get money back” from a binary broker. So let me draw this comment out of the spam and answer it:

    If your binary broker refuses to pay out, the first problem is that you normally do not know their real address, not even their country. So the chance to get your money back from a Cyprus mailbox is zero. But in the orbit of fraudulent brokers, a whole industry of “legal teams” or “hackers” have established that promise retrieving your money for a fee. You’re then not only losing your investment, you’re losing that fee as well. Sometimes the “legal team” or the “hacker” is the broker himself when they smell that their client has still some money left.

    At least that’s what I’ve heard about those services. What I so far never heard is that someone really retrieved money from a fraudulent binary broker.

  39. Hi JCL I was wondering if you or someone could explain me how to modify the objective() function so it prefers systems with more trades as you suggested. I have been searching a way to do this in the zorro manual but I haven´t found anything yet

  40. The objective function is supposed to return a value that is a proxy for performance. The higher, the better. So you could just subtract a “penalty term” for not enough trades, like this:

    var objective()
    var PF = ((var)(NumWinLong+NumWinShort))/(NumLossLong+NumLossShort);
    var Penalty = 1./(NumWinLong+NumWinShort+NumLossLong+NumLossShort);
    return PF – Penalty;

    This is just a quick & dirty example, there might be better methods.

  41. Get the real experience without loosing money to inexperienced binary traders. Most brokers do not create awareness for their clients on strategies on how to make profits, instead they allow them trade and loose all their money in trading in order to gain more. Most brokers refuse their traders to trade with little amount of money so that your loss will be huge.They also will not teach you how to really reclaim lost funds…..Contact for trading success.

  42. Let’s have a discussion some time with regards to
    binary options along with what we could do to
    ensure that it is more effective for everyone.

Leave a Reply

Your email address will not be published. Required fields are marked *