Welcome to NexusFi: the best trading community on the planet, with over 150,000 members Sign Up Now for Free
Genuine reviews from real traders, not fake reviews from stealth vendors
Quality education from leading professional traders
We are a friendly, helpful, and positive community
We do not tolerate rude behavior, trolling, or vendors advertising in posts
We are here to help, just let us know what you need
You'll need to register in order to view the content of the threads and start contributing to our community. It's free for basic access, or support us by becoming an Elite Member -- see if you qualify for a discount below.
-- Big Mike, Site Administrator
(If you already have an account, login at the top of the page)
Systematic/Quantitative Trading Testing and Analysis Environment
I aim to be a systematic trader, however I cannot decide which software/programming language to choose for my purpose. I am looking forward to your advice.
Let's say I have a MACD Crossover system in hourly graphs with a higher Time Frame filter. I also do risk management with like trailing stops and moving stop losses to specific points if certain conditions are met. Also position-sizing methods are incorporated to the system as well.
With this type of system (once-a-day/swing trading), I want to be able to:
Do Backtests (BT) with multiple time frame analysis (to incorporate higher time frame filter and maybe a lower time frame to decide entry points)
Do BT with and without position-sizing method that I choose
Do BT with trailing stops, and move stop-losses when a position is open (to breakeven point, for example).
Review every trade in BT from the generated pictures of all time frames taken just before entering a position and just after closing that position.
Optimize parameters of certain indicators such as the MACD in H1, to optimize the parameter I choose (net profit or something else)
Generate 2D/3D graphs to see nearby values of the value chosen for the parameter after optimization (to avoid choosing a value from a peak, rather than a plateau-like space)
Do BT with optimized indicators and parameters.
Generate reports (with net profit values, average gain per trade , account equity etc.) for before-optimization BT and after-optimization BT.
Do Monte Carlo Simulation and consequent analysis on the optimized system.
Do Walk Forward Analysis (rolling, preferably) with reports (similar to reports generated from backtesting)
Do Paper Trading (Incubation/Live Forward Testing, whatever it is called), and generate reports from that as well.
Do Portfolio Optimization, Testing and etc. (Don't know much about this topic, but I want to be able to manage trading in multiple instruments if I ever earn the money to be able to )
So my question is ,
What software/programming environment will allow these actions?
R, Python, MATLAB, Amibroker, tradestation or something else?
Also, just to make things harder, I am an university student so money is an issue .
Any input, help or comment is appreciated on my methodology of building a trading system or software/programming environment to choose.
Also, if you did not understand any part that I wrote, please ask, and I will make it clearer.
Thanks and I wish everyone highly profitable systems .
Can you help answer these questions from other members on NexusFi?
You didn't say much about yourself other than being a student and the answer really depends on this. You've also mixed programming languages with trading platforms which makes it even harder to answer.
So to answer your question - you can do everything you listed in any (real) programming language but it takes time and effort. If you are to become software developer this may be an interesting exercise to build your own platform but without researching and experiencing other existing platforms it will be a never ending wheel re-invention cycle.
Existing trading platforms - most of them can do most of the things you need but since it is a generic software it will not be 100% solution tailored to your needs.
Still my recommendation is to start with existing platforms, the best if you can find the platform to be scriptable/extendable with generic programming language (C#, C++, etc.). This will give you the experience needed to properly define your needs to your own custom platform in the case you will find the existing solutions to be limiting.
You are a student and as every student you probably want to start BIG, but for your own sake, resist. Take one step at a time, learn what you need gain some experience, then take the next step.
I personally started with NinjaTrader the main reason - it was C#, was (and is) free until you go live - and as a student or someone short on cash this reason may be enticing. But as I said - it doesn't matter much which platform you choose, there is a long way ahead, so just take the first step, then if you feel you've outgrown it make the next step.
I think you missed the "not" in my previous reply . I am an Industrial Engineering student, so the questions you have asked would simply receive a reply of "Hmm. Nope." from me . What I aim to do is, have a good financial&trading knowledge with a lesser knowledge of computer programming. The CS knowledge I aim to gain, should let me construct basic non-HFT trading system testers with capabilities listed in the first post. So, in the end, if I can construct a methodology (explained in my first post with main points) using R/Python/C# or some other open-source platform, I would be satisfied.
When you say "there's many people out there with 10x as much CS experience and 10x as much financial knowledge waiting for you to show up and throw your money at them", are you talking about those "black-box" trading system sellers that only show optimized backtest results that overstate systems' performance? Just could not grasp what/whom you were talking about.
To have an adequate understanding of my trading systems/strategies (with my inadequate programming knowledge), the best option seems to be use already-tried-out packages in R/Python like quantstrat/pandas etc. What would your recommendations be on this path?
I seem to diverge a lot in my replies, sorry for that.
P.S.: Yes it is a lovely city if you visit only a week, however more than that is too hectic .
Then my answer still applies, there's plenty of relevant skills that you can pick up as an industrial engineer first - I know someone who has a PhD in industrial engineering and he is probably the best quantitative trader in equity options that I have come across. Without being too specific: He isn't good at a whole lot of things, but he's good at a very specific technique (that industrial engineers often come across), and he could somehow apply that framework to all of his trading.
Knowledge of the above concepts are impossible to avoid if you are a 1 man shop. There are people who claim to be systematic/quantitative even when they are really not (e.g. Quantopian crowd following), who might have given you the wrong impression. Even 'partially systematic' trading firms have more developers than traders, for a reason.
There's an entire industry of people who do this type of trading. There's people with 10-30 years of work experience who have plucked the low-hanging fruit before you. Unless you're bringing some real value proposition to the table, e.g. you are one of the world's top 20 experts in a very specific technique or niche, I don't see why you'll make any money besides being lucky or being well-capitalized.
Why don't you try both and pick whatever you like more? You can get some useful code cranked up in either language over the weekend. By then you should probably have formed some tastes and preferences.
I don't like either R or Python. You'll have a difficult time finding a production strength 'trading platform' with a R/Python API anyway.
Generally, if you're asking questions such as "which programming language?", you should probably not be wasting time thinking about that and should just start writing some code, because you are already missing the fundamental concepts for understanding what is a "good" programming language...
No problem, I like to help students out and I can understand if your career direction is unclear at your age.