2008 Jul 11 - Fri
Alpha Generation Platforms
Sometime ago, SmartQuant sold their QuantDeveloper code to QuantHouse. I now see in an
article at
Wall Street & Technology,
QuantHouse listed as one of five vendors who have Alpha Generation Technology. QuantHouse
must have done some additional work on the platform. QuantDeveloper definitely fit the
defintion of a workflow platform:
- Data acquisition and preparation
- creation of the initial alpha discovery model
- back testing the model using historical data sets
- analyzing the results of back-testing and fine tuning the model
- simulation with live data
- coding the quant research model into production for the live trading environment
Alpha is defined as "excess risk-adjusted returns measured above a benchmark".
Key attributes of the packages reviewe included items such as:
- seamless integration with data sources and databases for rapid data capture
- transformation and storage for analysis
- ease of use in creating back testing and simulation environment
- detailed documentation of model creation process
- charting, reporting and visualization tools
- ease of integration with leading statistical packages
- offers a straight through processing feature that enables quants to move from idea
generation to
order generation in a reduced time frame
- offers a codeless environment for rapid strategy development
QuantDeveloper did offer up all those features but that last one. QD is actually
a C# development environment disguised as an Alpha Generation Platform.
I'm not promoting or demonting QD here. I did use the package for a couple of years and
have since migrated to a custom C++ platform, which I think, in the end, is going offer very
similar capabilities. What with QuickFix tested against OpenFix, QuantLib for the math, and
a myriad of other integrated abilites, it may just have a chance to be seen in the big
leagues.
Yes I do spend much of my time day dreaming. But there is a drop of reality there
somewhere.
As a side note, the article threw out a bunch of names. I'll have to follow up on what
these do sometime: "real-time high performance databases such as Vhayu, KX and OneTIck. On
top of that, analytics and statistical packages are required, such as MATLAB, S+ and R, as
well as optimization tools like Northfield, BARRA, Morningstar, Ibbotson, etc., and
EMSs/OMSs like Portware, FlexTrade, OrcSoftware, Aegis Software and Tethys, etc.".
[/Trading/SmartQuant/Articles]
permanent link
2007 Dec 15 - Sat
Candle Analysis for SmartQuantLibraries
A couple of posts at the SmartQuant forums have requested information on Candle
definitions and analysis. Here are two C# modules which can used as a basis for your
own analysis and signal generation:
There are various knobs you can make use, with 'bald' (which controls when a hair is
detected) being the main one. There are some percentages which I should have set as
constants scattered through the code (0.40 being one of them), which set whether something
is relatively long bodied or short bodied.
If you have changes, let me know, I'll add them and repost.
The source of inspiration was Bigelow's Profitable Candlestick Trading.
[/Trading/SmartQuant/Articles]
permanent link
2007 Oct 23 - Tue
QuantDeveloper Source
A number of people took the time to email me their thoughts regarding my rant regarding
source code for QuantDeveloper. Anton from SmartQuant responded, but unsurprisingly, I
havn't heard anything from QuantHouse.
It seems that QuantHouse has purchased various rights and such to QuantDeveloper, and
have renamed it to suit their suite.
SmartQuant has also retained certain rights and such to QuantDeveloper, and have maintained
the name. SmartQuant has indicated they are continuing development of QuantDeveloper and
has hinted that some quite advanced features are in the pipeline. He also confirmed that,
for existing developers who have subscribed to source code, source code is available for new
releases.
[/Trading/SmartQuant/Articles]
permanent link
2007 Oct 19 - Fri
Trade Optimization by Genetic Programming, Example for QuantDeveloper
I had recieved a private message by someone requesting some background on what I had done
for my Genetic Programming trials with QuantDeveloper.
I am releasing the example source code into the public domain. If you make changes and
would like to see the changes recorded here, please let me know, and I'll update the files.
The subdirectory OneUnified.GeneticProgramming is the GP library. I used Koza (1992) as
well as a few other related references as a guide for various constants and such. You'll
need some of my other libraries (as listed elswhere on this site) in order to get the thing
to compile.
The library provides population management, survival of the fittest, and various breeding
cross-over strategies. Adding and removing operators should be relatively easy. I have a
couple of base classes from which most are inherited: boolean and double. Note that, unlike
C++ where one can use static methods to initialize some global class variables, C# insists
on initializing static class variables upon first invocation, which is why you'll see ugly,
redundant code for getting this done for the operator setups. Maybe there is a better way.
The subdirectory UI holds the setup code to run a simulation. When you look at the
code, you'll see that there is
no real easy way to embed an optimization module in QD, so I took source samples and patched
together a
self running optimizing application.
You'll be glad to note that doing something like this
will be much more difficult, if not impossible in the future. QuantHouse, in their
infinite wisdom, has decided
that we add-on developers, who don't spend thousands of dollars each month on
sub-millisecond data-feeds are a pain in the back side, and so will not be providing source
code in the future. Or so they told me. I come from an open source community, and this
closed source madness of QuantHouse has turned me off of QD. I've gone back to using C++
routines to take care of my trading chores.
While on the subject of C++, er, C#, I went back to C++ for several other reasons. There
is a
rich and varied source of high quality open source libraries for C++: Boost, QuantLib just
to name
two. C++ is faster. Also, I feel that C# is meant
for lazy programmers who don't know how to clean up after themselves. There are C++ garbage
collection libraries out there if I feel the need to use them. And did you know that
Microsoft couldn't even bring themselves to use CLS in most of the their Windows development
(most of the core CLS was removed from key kernel applications).
Anyway, here is my
Trade Optimization by
Genetic Programming, Example for QuantDeveloper.
[/Trading/SmartQuant/Articles]
permanent link
2007 Jul 17 - Tue
IQFeed Client v1.3 Release
It seams that the client needs to be revised with recent version of the SmartQuant
libraries. This one is built with the July 10, 2007 release of libraries. This build may
resolve a System.BadImageFormatException. I hope. Here is IQFeed v1.3.
[/Trading/SmartQuant/Articles]
permanent link
IQFeed Client Release 1.2
This client set is released with DTN/IQFeed's latest client v4.2.1.4. This release
of
the IQFeed SmartQuant Provider
v1.2 suppresses an exception when it finds an invalid time in the 18th field of
level 1 data. It caused DC to crash and burn, or halt and freeze, as the case may be.
There is a report that it has an image exception when used with OpenQuant. I havn't run
OpenQuant, so can't confirm. Please let me know of repeatable issues iwth OpenQuant.
[/Trading/SmartQuant/Articles]
permanent link
2007 Jul 08 - Sun
TransactionSet Code
For what its worth, there was a request for my TransactionSet code at the SmartQuant Forums. This is my description of the code:
I don't really use the ClOrdId per-se for anything other than reporting an order number. Instead a I created a series of transaction objects, with
each storing an opening market/limit order and a starting stop order. When I need to exit, the transaction object then takes care of closing out any
stops/markets/limits that are still outstanding. I can then calculate profit/loss (which I could have used from already existing QD API elementes),
but I go one step further and maintain other statistics such as time-to-fill, time-in-trade, ... More than anything, the transaction object has
helped simplify/encapsulate the trading state-machine for tracking unfilled limits and stops. And it does it smoothly by making use of the two
events I mentioned earlier. Then from a higher level perspective, on a market direction change, I can simply tell the transaction to 'exit' and it
does what ever clean up is necessary
The code is located in the file TransactionSet.cs.
[/Trading/SmartQuant/Articles]
permanent link
2007 Jun 05 - Tue
Sliding Window Statistics
Processing bars can lag data somewhat. Bars can also introduce sharp changes in statistics. Instead, I prefer to work with Trades and
Quotes directly. But I still need the ability to work with summary statistics.
I've created an O(1) running time mechanism for processing trades and quotes in real time. The resulting code is provided in Accumulation.cs. The basic class I use is SimpleAccumulationStatsOnQuotes. The class is
instantiated as an object by defining the window width in seconds. The class will maintain a list of quotes. As quotes are added, they are
added to the summary statistics. As quotes fall outside the window, the quotes are removed from the summary statistics.
The summary statistics provide the basics for maintaining Bollinger Bands for the selected moving window time frame.
The class AccumulateQuotes is a brute force approach to calculating slope change velocities and acceleration. I think, with suitable
modification of the basic statistics, this class would not be needed.
Running statistics are maintained through a reference to the RunningStats class.
If you wish to know the Minimum/Maximum levels over an interval, a RunningMinMax class helps. It is more of a manual process, with the
AddPoint and RemovePoint methods.
[/Trading/SmartQuant/Articles]
permanent link
2007 Apr 22 - Sun
IQFeed Provider For SmartQuant QuantDeveloper: Updated
I have an original article which discusses a beta IQFeed Provider for SmartQuant's
QuantDeveloper product.
I've fixed a few bugs in the provider. In addition, it should work with IQFeed's soon to
be released data feeds which are stamped at the second resolution rather than minute
resolution. The Provider is released in a zip file with an updated Ticker utility called:
OneUnified.IQFeed.1.1.zip.
The new IQFeed client is iqfeed_client_4_2_1_3.exe.
[/Trading/SmartQuant/Articles]
permanent link
2007 Jan 21 - Sun
IQFeed Level II Order Book
DTN IQ has a Level II feed for NASDAQ. I
wouldn't classify it as a complete Open Book type of feed. Interactive Brokers has
something a bit better in that regard. The draw back with Interactive Brokers Level II Feed
is that they will only provide a maximum of three instuments simultaneously. They do
provide Level II for NASDAQ as well as for NYSE.
Anyway, back to IQFeed. They provide a type of LevelII for NASDAQ, but nothing similar
for NYSE. And as mentioned before, it is not a full OpenBoook. Instead, they supply the
best inside price provided from each Market Maker.
I've provided a sample
LevelIIOrderBook.cs module to show how to process IQFeed's Level II stream.
I use that code in the demo ticker program I mention in my post at IQFeed Provider for
SmartQuant. If there are non-SmartQuant users interested in trying this utility, I'll
look at licensing the dll's into the distibution.
There is an interesting Elite
Trader chat room
capture from a while back as it relates to scalping, program trading, and how to make
use of Level II type data. I'm not sure if the strategies still hold, but there were some
ways mentioned that could be used to beat some of the automatons on the small scalps.
I'm realizing that for we mere mortals, we'll have to work with slightly larger ranges,
but with some sort of decent short term predictor and good money management, it should
still be realizeable goal.
The chat was sponsored by Genesis
Securities, who have a data/trading interface in QuantDeveloper.
[/Trading/SmartQuant/Articles]
permanent link
2006 Dec 24 - Sun
Merrill Patterns
On page 94 of Bollinger's Book: Bollinger on Bollinger Bands, he talks
about
matching various tradeable patterns developed by Arthur Merrill. In an
earlier article on Peak Matching, I provided some code to match chart trading peaks
and
valleys in real-time. By using that code in addition to my Merrill Pattern Matcher code,
Aurther Merrill's patterns can be computed live during a trading session. The PeakMatch code stores it's values in a DoubleSeries array from which the
MerrillPattern code uses the last five values to compute the pattern. Then based upon the analysis provided in Bollinger's book and Merrill's book, one
can use the information to influence trading styles.
The code is built upon a table driven decision format, which in turn is based upon the observation that Merrill's patterns can be described within a
5x5 grid where each of five peaks/valleys will fall into unique row. The rows are numbered 1 through 5. With five rows, there are 2 to the 5
combinations, ie, 32 combinations.
A set of five points is classified by placing the price point and an index into a sorted array. The concatenation of the sorted indexes is used to
generate 'key' to be used in looking for the pattern in the pattern list.
[/Trading/SmartQuant/Articles]
permanent link
2006 Dec 23 - Sat
IQFeed Provider for SmartQuant
I've recompiled the IQFeed
Utilities to run with QD 2.3.3 and DC 2.1.5. The OneUnified.IQfeed.dll file is used for
linking up to IQFeed for obtaining real-time Quote/Trade/Depth streams for QuantDeveloper.
The IHistory interface, is as of yet, still unimplemented. I'll see about rectifying
that over the Chrismas Break. Hopefully.
The IQFeed client I'm currently using is
IQFeed Client 4.2.0.2.
In the zip file is a test program called ticker.exe. It provides visibility into
real-time data in three formats:
- A Level I ticker tape stream modelled upon Thomas Carr's 'The Tape-Reading Edge' in
July 2005's issue of Technical Analysis of Stocks and Commodities.
- A Level II chart showing buy-side and sell-side Market Makers.
- A Level II price chart modelled after Interactive Brokers book chart.
IQFeed provides Level II data only on Nasdaq traded instruments.
One usage note, I'm not certain if I've done the simple thing of converting symbols into
upper case yet in the ticker program, so you may need to enter them manually as upper-case
before clicking on one of the buttons on the left hand menu.
In the ticker program, when viewing the Level II price action, there is one bug which
occurs when the Bid overlaps the Ask. The overlapped level will show price counts incorrectly.
[/Trading/SmartQuant/Articles]
permanent link
|