Category: Coding (page 1 of 2)

Collaborating in QuantConnect

Collaborating is a powerful feature of QuantConnect which allows up to 10 team members to work on a project at the same time. This can be useful when a team of specialists collaborates to build a great strategy.

The project creator holds the master copy of the project and can add team members and control the project permissions. To add a team member you just click the “Share” button in the project tab and search for the user by name or email address. Once the user is added you can control their permissions or remove them from the project.

Collaboration allows setting permissions on user by user level

Changes to shared projects are instantly shared between the collaborators and can be see by the colorful cursor representing the other team members.

Consolidating Data to Build Bars

Consolidators are used to combine data together from finer resolutions into larger ones. This can be useful for indicators with specific data requirements or to perform long term analysis in conjunction with short term signals.

Consolidators should be constructed and setup in your Initialize() method; this ensures they are only initialized once. There are three key steps to create and register a consolidator:

  1. Create the consolidator object.
  2. Bind an event handler to handle the new bars.
  3. Register it with the subscription manager to start receiving data.
public class ConsolidatorDemoAlgorithm : QCAlgorithm
{
	public override void Initialize() 
	{
		// backtest parameters
		SetStartDate(2016, 1, 1);         
		SetEndDate(DateTime.Now);
		
		// cash allocation
		SetCash(25000);
		
		//assets or universe selection
		AddEquity("SPY", Resolution.Minute);
		
		//create a consolidator object; for tradebars; for a timespan of 30 minutes
		var thirtyMinutes = new TradeBarConsolidator(TimeSpan.FromMinutes(30));

		//bind event handler to data consolidated event.
		thirtyMinutes.DataConsolidated += OnHalfHour;
		
		//register the consolidator for data.
		SubscriptionManager.AddConsolidator("SPY", thirtyMinutes);
	}
	
	//event handler for data!
	public void OnHalfHour(object sender, TradeBar bar) {
		Debug(Time.ToString("u") + " " + bar);
	}
	
	public override void OnData(Slice data) 
	{ }
}

The LEAN API also has other consolidator types to handle working with Ticks and RenkoBars:

// From tick data sources            
var tickConsolidator = new TickConsolidator(TimeSpan.FromMinutes(30)); 

//from renko bars
var renkoConsolidator = new RenkoConsolidator(TimeSpan.FromMinutes(30)); 

There are two key points to remember:

  1. Request a smaller resolution than what you want to produce.
  2. In backtesting we only know the bar is ready on the next data point; so it may appear like daily bars are triggered at odd times. In live trading they are scanned to be triggered every second at a minimum.

The raw data of QuantConnect is provided in Tick, Minute, Second, Hour or Daily bars. Using these building blocks you can combine data together to get any other resolution of data required.

Introducing The Co-Pilot: Your Coding Companion

We’re happy to announce the release of the Co-Pilot; a rich automated documentation generator built to give you relevant hints while you’re building your strategy. With deep API’s it is impossible to memorize all the methods available; and time consuming to constantly search the documentation. As a coding companion, the co-pilot can inspect the types you’re working on and provide the properties that are available.

The methods of the API are shown by the tables of code blocks, and detailed properties of the working variables are also available. We generate documentation from the reference text but also from the code API. These different documentation types are noted by the icons next to the results.

There are multiple documentation result types; text and code results.

Free Streaming Live Data with IEX – LEAN Release Notes v2.3.0.3

This releaseadds the IEXDataQueueHandler allowing LEAN users to stream free US equity trades to their strategy; along with numerous bug fixes to the OANDA and FXCM brokerage implementations. Additional regression algorithms were added to automate testing of daily data algorithms. The Interactive Brokersconnection logic was also made more intelligent to fail quickly when thereis an existing TWS connection open.There were no breaking changes in regression tests or the API of LEAN.

Download this release from GitHub.

Features

  • Added IEX IDataQueueHandler for a free live US equity datafeed.
  • Added DailyBasicTemplate regression test algorithm.
  • Dramatically speed up Interactive Brokers connection speed.
  • Scan IBController logs for connection failures and handle them in LEAN.
  • Added FilteredIdentity indicator to filter tick trades and quotes.
  • Created Lean.TryParsePath() to create symbols from a file path.
  • Added ApiFileProvider to download data directly from the API.
  • Upgrade Oanda HistoryProvider to return QuoteBars instead of TradeBars.

Bug Fixes

  • Fix duplicate sampling bug in daily data backtesting.
  • Remove time from daily sample points in backtesting.
  • Properly load existing short positions when launching Interactive Brokers algorithm.
  • Fix issue with indicators that require a quote subscription.
  • Check for valid symbols when getting OANDA or FXCM history request.
  • Ensure logs are only savedonce.

Notes

  • We upgraded LEAN to use JSON.NET v9.0.1. This library is used extensively through LEAN.

Thank you to the community contributors in this release buybackoff andJay-Jay-D!

About LEAN

LEAN aims to empower investors to invest with confidence by using cutting edge algorithmic trading technology. Through the power of open source we are building the world’s best algorithmic trading platform, capable of accurately modeling global markets to give you insight into your strategy. Your trading algorithms can be seamlessly deployed from backtesting into production with no changes or even moved between brokerages. The LEAN user community reaches over 29,000 quants from all over the world.

LEAN supports C#, F#, VB, Java and Python programming languages and can be used in Equity, Forex, CFD, Options and Futures markets. It currently supports live paper trading, or execution by Interactive Brokers, FXCM and Oanda Brokerage.

For more information join the LEAN Community on GitHub.

Our Answer to NYSE Eliminating Stop Orders

From February 26th investors will no longer be able to use Stop or Good Till Cancelled order types on the NYSE, according to a recent press release from Reuters.

Typically Stop Market orders are used to place a market order when the stock exceeds a trigger price. On August 24th, 2015 many investors had their positions stopped out far below the stop prices they had entered. This is a known behavior of stop orders which cannot guarantee a certain execution price.

The difference between the market price, and the fill price is called slippage. In QuantConnect you can model slippage using our TransactionModel class. It would be wise to create a fill model which predicts a greater slippage in volatile market conditions. Most of the time this slippage is assumed to be negative (you execute at a price worse than expected), but occasionally you can even receive positive slippage (a better price than you expected).

To set a custom slippage model in QuantConnect you can use the code below:

 //$2 per trade transaction model, with custom slippage.
Securities["AAPL"].TransactionModel = new MyTransactionModel(2.00m);
public class MyTransactionModel : ConstantFeeTransactionModel { 
    public override decimal GetSlippageApproximation(Security security, Order order) {
        // If volatile, return high value for slippage.
    }
}

To prevent negative slippage with Stop orders investors should use a Stop Limit order which places a limit order when the market exceeds the trigger price. Stop Limit orders are not guaranteed to be filled but they do ensure you get your expected fill price or better.

To submit a Stop Limit order with QuantConnect you can use the code below:

var newStopLimitOrderTicket = StopLimitOrder("IBM", 10, stopPrice, limitPrice);

At QuantConnect we will continue supporting Stop, Stop Limit and GTC Orders across all our supported brokerages using software techniques. This will ensure your algorithm can continue as expected with no interruptions. We believe you are sophisticated enough to harnesspowerful types and we won’t artificially restrict the tools in your arsenal!

Happy Coding!

 

Live Trading with Interactive Brokers

We’re very proud to announce our public release of live trading with Interactive Brokers! Now you can seamlessly design and trade your algorithm within QuantConnect.

Automated live trading is one of the most challenging engineering problems in financial technology. It involves controlling large financial resources, while pushing computational power to its limits!

Starting today, you can deploy your algorithms to your Interactive Brokers accounts, using minute, second or tick resolution data for Equities and FOREX. All powered by our open source algorithmic trading platform, LEAN.

Live Trading GUI

QuantConnect live trading comes packed with some impressive functionality to help your trading!

SMS and Email Notifications

Trigger sending emails, web hooks or SMS messages on key events with a single line of code. It is as simple as:
Notify.Sms(phone,message);
Notify.Email(email,subject,message);

Custom Live Data Sources

Using QuantConnect you can connect your algorithm to external data sources and stream updates to your algorithm events. Check out our demo using a Bitcoin REST API.

Runtime Statistics

With runtime statistics you can display custom information in the header of your live GUI to track your key indicators and asset values.

SetRuntimeStatistic("EURUSD", price);
Runtime Statistics

Mobile Control Interface

Control your algorithm on the road with our mobile friendly, HTML5 GUI. You can see full running algorithm charts and trades, or just a summary of your algorithm performance.

Live Mobile Controller

Live Options

Upgrade to Start Live Trading Today with QuantConnect

Open Source Updates

Its been an awesome month for the open-source project with contributions from people all around the world. We love working with the community and seeing LEAN used in ways we can barely imagine!

@kaffeebrauer contributed the Stochastic and OnBalance Indicators
@AlexCatarino implemented the ROC, ROCP and WILR Indicators
@QANTau started implementation of an OANDA Brokerage
@bizcad created a Weighted Moving Average Indicator
@mattmast created the Money Flow Index(MFI) Indicator
@bdilber started working on futures support

Additionally thanks to @ammachado, and @dpallone for documentation fixes, and @willniu for working out our consolidator logic 🙂 The LEAN Engine is growing more powerful by the week.

We’re Raising Capital

We’ve been experiencing some incredible growth and have bold plans for the next 12 months! We are opening an investment round and talking to investors to continue our growth plan.

Open Source Future of Algorithmic Trading

We’re proud to announce, thanks to the support of the community, the LEAN Algorithmic Trading Engine is now 100% open source. You have the freedom to connect any data source, execute through any brokerage and design any algorithm 100% locally.

Moment of our Open Sourcing, Jan 12th 2015

It’s an exciting new frontier for algorithmic trading; through open source QuantConnect is breaking open the traditionally secretive world of algorithmic trading to give you the same powerful tools as major hedge-funds.

Lean is “plug and play“. Running your first backtest takes about 23 seconds.

1. Star/Fork and Download the QuantConnect/LEAN Repo* from GitHub
2. Open Lean Project in Visual Studio (let Nuget download all dependencies)
3. Press F5 to Run Project

Presto - you’ve run your first backtest! Here is a step by step guide for building your first algorithm. You can also design custom indicators, import data for international stock markets and connect with any brokerage. We even ship some data with the repo so you can get started instantly.

Clone LEAN Today to Start Your Journey

Clone LEAN Today to Start Your Journey

We’re incredibly grateful to the QuantConnect pioneers for making this possible. With your support we can build the best algorithmic trading platform in the world. Sustainable, independent and community driven.

More Raw Power

To be profitable you need to iterate quickly. Last week we upgraded our backtest processing servers: you can now run a 10 year, event driven backtest in 33 seconds. Your algorithms are running on beautiful i7x3930’s with 6 cores/12 threads/64GB ram. We are the world’s first cloud-desktop hybrid algorithmic trading platform aiming to give you the best of both worlds; ease of local development and horse power of the cloud.

Dynamic Indicator System

Thanks to some long hours by Michael H we launched an elegant, powerful and dynamic new indicator library. It lets you implement designs quickly and avoids reinventing the wheel. Creating an indicator is only a single line of code! Get started with the sample algorithm.

var rsi = RSI("SPY", 14);
var bb = BB(_symbol, 20, 1, MovingAverageType.Simple, Resolution.Daily);
if (rsi > 80) {
    SetHoldings("SPY", 1);
} else if (rsi < 20) {
    SetHoldings("SPY", -1);
}
Plot("BB", bb.UpperBand, bb.MiddleBand, bb.LowerBand);
Clone the sample algorithm which implements 15+ indicators.

Bollinger Bands Implementation – Clone the sample algorithm which implements 15+ indicators.

 

Rotating Inversely Correlated Assets – NIFTY and USDINR

Over the last 15 years the economy of India has boomed and it has been reflected in the NIFTY index. The NIFTY has grown 7x since 1998 as the country has grown its exports. According to the UN the one of the primary exports of India are high value services which contributes 30% to their GDP.

We developed a hypothesis that as the strength of the NIFTY grew, the strength of the currency would follow as it is a primarily export economy. As the INR strengthens the ratio to USD falls making it an almost ideally inversely correlated asset.

We first tested this hypothesis treating the USDINR FX pair as a hedge against the NIFTY, but found there were periods where they were positively correlated and the hedge did not work.

Pivoting slightly we experimented with rotating the holdings of the portfolio to focus on the peak performing asset. We used a fixed rolling window to determine the peak performance and then swapped our holdings to focus on that asset.

We used the QuantConnect LEAN 2.0 backtesting engine which allowed us to import financial data from any source to run our analysis. The backtests were conducted over a 16 year period and were completed in 5-10 seconds. We saw phenomenal performance due to the strongly trending nature of the NIFTY and USDINR, achieving a Sharpe Ratio achieving 1.3 vs the NIFTY 0.7, and 42x returns vs 7x of the NIFTY.

To test the resilience of the strategy we experimented with the rolling window period to determine if this was critical to the success of the strategy. We used a rotating window from 3 days up to a 30 day window to optimize the variable for the best performance:

The resulting Sharpe Ratio is fairly robust regardless of the precise value of the rotating window period.

We believe there are many potential future improvements to the strategy to be explored; such as using a dynamically determined rolling window to avoid curve fitting. You could also experiment with different portfolios of inversely correlated assets to pick the best basket of assets.

Backtesting with a REST API

This weekend we reviewed the GIT-API and how people really wanted to use QuantConnect. We built the GIT-API enable using the powerful autocomplete features in Visual Studio. However requiring people to use GIT to submit a backtest was a step learning curve, and prone to errors when the website had traffic spikes.

As a result we made a decision to deprecate the GIT portion of QuantConnect, and replace it with a new RESTful API. It allows you to create projects and submit files for backtesting all via simple JSON commands. The REST API will allow unlimited innovation on top of QuantConnect’s backtesting engine. With just a few URL commands you can tap into our scalable cloud and backtest across terabytes of financial data. See our documentation for how to use the new interface.
Continue reading

Harnessing the Twitter API for Sentiment Strategies

In this project we will be writing an application which downloads tweets from Twitter. We are continuing our journey leaning C#, as we started with our Yahoo Finance data downloader.

Twitter has a REST API that allows us to  search for tweets, users, timelines, or even post new messages. We will use an incredible C# Twitter Library called Tweetinvi. It has everything you need to start building your own program. There are other alternatives, but we found this was the easiest and most complete. To use this program, you need to have a Twitter developer account, and use your own credentials.

Continue reading

Older posts

© 2017 QuantConnect Blog

Democratizing algorithmic investments Up ↑