You’re a trader with serious ambitions to use algorithmic methods. You already have an idea to be converted to an algorithm. The problem: You do not know to read or write code. So you hire a contract coder. A guy who’s paid for delivering a script that you can drop in your MT4, Ninja, TradeStation, or Zorro platform. Congratulations, now you’re an algorithmic trader. Just start the script and wait for the money to roll in. – Does this really work? Answer: it depends.
Coding contracts can work out well or fail miserably. It depends on you and on the coder. But mostly on you. As a contract coder* who often hires other contract coders, I got meanwhile some experiences with both sides of the medal. So here are some coder hiring suggestions for increasing the chance to get something useful back for your money.
Find the coder
There are three Internet places where you can look for strategy coders: trader forums, freelancer websites, and tool vendors. The latter is my preferred way to acquire coding manpower. I check out advertised indicators, trading systems, or software tools that have some relation to the project at hand. If I like what I see, I contact the developer and ask if she or he does contract work. Most do. This way I know that the new coder has knowledge about the subject, can bring in her experience, and can do commercial quality work.
When contracting on trader forums or freelancer websites, be aware that coding abilities are not equally distributed among the population. Speed and code quality by freelancers differ by factors up to 10. So you need some means to judge the coding beforehand. Check out example projects (obviously, don’t hire someone who has nothing to show). If you can’t decide among five coders, hire all five. Give them all a small task, a little script, something that can be done in about 3 hours. Pay all five for the small task, then select the one with the best work for the real project. The invested money is well spent. A connection to a good coder is a very valuable asset.
Grill the coder
Before hiring, interrogate the freelancer about his skills and his approach to the project. And put attention on clear and prompt answers. Many issues arise from misunderstanding. Freelance coders must be able to express themselves not only in script, but also in plain English. As you’ll most likely communicate by email, test the promptness. If it takes your aspiring coder three days to respond on an email even in the negotiating phase, he’ll likely need three weeks to react on an issue after delivery and payment – if at all.
One important thing to ask is how the coder tests his scripts. In software development, proper test procedures are more important than writing code. A good coder has some test framework for putting his code under stress. This is twice important when the coder, as I sometimes do, sub-contracts parts of the task to other coders. Understanding and testing other people’s scripts is an additional effort that pays back in better code quality.
Naturally you should also make sure that the coder has basic understanding of trading, and knowledge in math and statistics – or can at least quickly come to grips with a new field of knowledge. A degree in math, physics, engineering, or computer science is of advantage, even if it pushes up the coder’s fees. But understanding the algorithm on a deep level can be essential for coding a serious trade system. My favorite way to grill a coder was giving her a sheet of paper and asking her for a quick proof of Pythagoras’ theorem. Unfortunately, this only works in a face to face interview, not by email.
Feed the coder
An essential part of cooperation with coders is your project description. Know your goals precisely, but not too precisely. Some clients are able to describe clearly what they want. Others send long and utterly confused project specifications that leave you completely in the dark of what you have to code. From some clients I got laconic flow diagrams like this: “Analyze price curve with neural network – open position when profitable – close position at price maximum – repeat”. Others have 22-page concepts with a complex strategy described up to the finest detail of the user interface button colors. And as they felt that all this could somehow limit the flexibility, they usually require any detail to be adjustable with many different parameters and modes.
A trading strategy is no iPhone app. No one knows beforehand if your idea will work or not. If not, any implemented additional details are wasted money. So split your project into milestones. Or let the coder do it. The first milestone is always the proof of concept: a script of just your trade idea, with no stops, extra filters, money management, user interface, or other gimmicks. This should be coded at first, and carefully tested in all possible variants. If this script turns out to be profitable, go on with the next step. Otherwise you won’t need all the rest.
If your trade idea or algorithm is very secret, the coder should offer you a non-disclosure agreement. This way he accepts the responsibility to keep your trade method for himself. Which he should do anyway, of course.
Don’t listen to the coder
At least not to me. I used to advise clients about the success chances of their concept – even before coding and testing it. For instance I declared a certain strategy doomed to fail since it seemed just a complex hodgepodge of conventional indicators. The client was unimpressed. He told me to code it nevertheless. Now, 18 months later, he’s still living from the returns of that system. Since then I refrain from unsolicited advising.
But you should very well listen to the coder when he suggests different methods of implementing your system, or modifications for simplifying the algorithm or making it more effective. The coder possibly knows your algorithm better than you.
Pay the coder
I will be frank: For almost all coders (I’m no exception), coding is one of the greatest things on earth. For some, it’s better than sex. We all would code for free if there were no alternative. However, professional ethics and our bank account require that we demand payment.
Since coding speed can be very different, it’s normally not advised to pay a coder by hour, unless you’ve worked with her a long time and know her well. Normally the coder will quote the project at a fixed price. The price should include not only the coding, but also a support and warranty period after delivery. It usually does not include training the script or adjusting the parameters. This is your task, as it’s very time consuming and thus would be expensive, but requires no code knowledge.
Just as coding speed and quality, coding prices vary strongly among freelancers. Obviously the cheap price is not always the best. On the other hand, if the project is really interesting and the coder would really like to get the job, you can often negotiate a discount. Some ballpark figures: My own contracts start at EUR 170 per strategy, which is my employer’s required minimum for a simple script. Contracts for complex projects with options trading or machine learning algorithms are in the EUR 1000-2000 range; individual user interfaces, and special analysis or input / output methods can raise the contract to EUR 10,000 or more. My largest contract so far was 1.5 million EUR. Sadly, the small contracts are much more frequent than the large ones…
Coders usually demand advance payment. How much depends on your prominence in relation to the coder. If you are Warren Buffett and the coder is an unknown guy from India, you’ll be able to negotiate payment after delivery. If you’re a nondescript retail trader and the coder is employed by a large company, he’ll likely ask you for 100% advance payment. In most cases the terms will be 50% in advance and 50% after delivery.
If the script works, pay the rest immediately. This won’t cost you much, but makes a good impression on the coder. I only ever had one single case where the contract price was not paid at all. This is always a bad idea: We coders talk to each other. Not paying a contract might get you in trouble to ever find a coder again. Or worse: You might find one who implements a little surprise in your trading script…
Be independent of the coder
Even when you hire a coder, it makes sense when you acquire a basic understanding of coding – for instance through the Zorro tutorial. It will take a day or two. But it will allow you not only to better judge the code quality, but also to modify the script beyond just setting parameters. Then you don’t need to always wait for a new quote by the coder. And you save money. Remember, I have to charge EUR 170 (at least) no matter if I re-write the script completely or only modify a single line.
Be very, very meticulous in selecting a coder and working with her or him, and try to understand as much of the code and its structure as possible. This can be the deciding factor for the success of your project. – In case you’re curious about my above mentioned one point five million contract, or about the single case when a contract was not paid, or about my most bizarre experience as a hired coder so far: You can read that story here. But it is not suited for minors. So if you’re below 18, please do not click on that link. Thank you.
* Some coders prefer to be referred to as ‘programmers’. The rationale is that a coder just converts an algorithm in code, while a programmer develops the algorithm. This distinction is not really useful: You can not code a trading strategy when you’re illiterate in algorithms. Thus, I don’t care if I’m a coder or a programmer as long as I’m paid.