An extremely important requested feature for QSForex has been the ability to backtest over multiple days. Previously the system only supported backtesting via a single file. This was not a scalable solution as such a file must be read into memory and subsequently into a Pandas DataFrame. While the tick data files produced are not huge (roughly 3.5Mb each), they do add up quickly if we consider multiple pairs over periods of months or more.
Let’s cover this with an example. If you have $1,000 in your trading account and use a leverage of 1:100 you could theoretically open a position size of $100,000. However, by doing so, your entire trading account would be allocated as the required margin for the trade, and even a single price tick against you would lead to a margin call. There would be no free margin to withstand any negative price fluctuation.

So, for an investor who wants to trade $100,000, a 1% margin would mean that $1,000 needs to be deposited into the account. The remaining 99% is provided by the broker. No interest is paid directly on this borrowed amount, but if the investor does not close their position before the delivery date, it will have to be rolled over. In that case, interest may be charged depending on the investor's position (long or short) and the short-term interest rates of the underlying currencies.
76% of retail accounts lose money when trading CFDs with this provider. CFDs are complex instruments and come with a high risk of losing money rapidly due to leverage. 76% of retail investor accounts lose money when trading CFDs with this provider. You should consider whether you understand how CFDs work and whether you can afford to take the high risk of losing your money.
The currency exchange rate is the rate at which one currency can be exchanged for another. It is always quoted in pairs like the EUR/USD (the Euro and the US Dollar). Exchange rates fluctuate based on economic factors like inflation, industrial production and geopolitical events. These factors will influence whether you buy or sell a currency pair.

The script is currently hardcoded to generate forex data for the entire month of January 2014. It uses the Python calendar library in order to ascertain business days (although I haven't excluded holidays yet) and then generates a set of files of the form BBBQQQ_YYYYMMDD.csv, where BBBQQQ will be the specified currency pair (e.g. GBPUSD) and YYYYMMDD is the specified date (e.g. 20140112).
The "philosophy" of the forex trading system, as with the rest of the QuantStart site, is to try and mimic real-life trading as much as possible in our backtesting. This means including the details that are often excluded from more "research oriented" backtesting situations. Latency, server outages, automation, monitoring, realistic transaction costs will all be included within the models to give us a good idea of how well a strategy is likely to perform.

Free margin in Forex is the amount of money that is not involved in any trade. You can use it to take more positions, however, that isn't all - as the free margin is the difference between equity and margin. If your open positions make you money, the more they achieve profit, the greater the equity you will have, so you will have more free margin as a result. There may be a situation when you have some open positions and also some pending orders simultaneously.
The script is currently hardcoded to generate forex data for the entire month of January 2014. It uses the Python calendar library in order to ascertain business days (although I haven't excluded holidays yet) and then generates a set of files of the form BBBQQQ_YYYYMMDD.csv, where BBBQQQ will be the specified currency pair (e.g. GBPUSD) and YYYYMMDD is the specified date (e.g. 20140112).
Interactive Brokers ®, IBSM, InteractiveBrokers.com ®, Interactive Analytics ®, IB Options AnalyticsSM, IB SmartRoutingSM, PortfolioAnalyst ®, IB Trader WorkstationSM and One World, One AccountSM are service marks and/or trademarks of Interactive Brokers LLC. Supporting documentation for any claims and statistical information will be provided upon request. Any trading symbols displayed are for illustrative purposes only and are not intended to portray recommendations.
Local Portfolio Handling - In my opinion carrying out a backtest that inflates strategy performance due to unrealistic assumptions is annoying at best and extremely unprofitable at worst! Introducing a local portfolio object that replicates the OANDA calculations means that we can check our internal calculations while carrying out practice trading, which gives us greater confidence when we later use this same portfolio object for backtesting on historical data.
×