PowerST is more advanced and more specialized than most trading software packages:
PowerST is a backtesting software product for researching trading strategies and generating forward trade signals based upon systematic trading strategies.
Advanced testing environment directed towards the advanced systems researcher:
PowerST is generally not for someone new to systems trading. Rather, it is for the systems researcher who has already become proficient with an entry level trading software package and is now looking for a more advanced platform.
Specialized for position trading:
PowerST is specialized to the needs of intermediate to longer term time horizon position trading. Specifically, end of day (EOD) position trading of futures and stocks.
By concentrating on a specialty, PowerST has been able to progress into more advanced levels of support for the specialty. The software needs of a position trader are different than a day trader. For example, PowerST is very strong in portfolio level strategy testing, with an emphasis on the advanced portfolio level money management strategies that position trading can benefit from.
For example, for a trend follower the goal is not only doing well in trending markets. It is also necessary to manage risk in non-trending markets. One of the particular strengths of PowerST is advanced portfolio level testing capabilities to support research of specific risk management strategies.
PowerST provides a unique combination of capabilities that are particularly well suited for CTAs and hedge funds. This does not mean individual traders will not be interested in PowerST. After all, trading is a business for individuals also. However, the higher price of PowerST is obviously directed towards trading businesses, funds, or larger individual traders.
PowerST is a complete strategy research and trading software solution for CTAs and hedge funds:
- Trading rules programming is based upon C++, but in a simplified form designed for non-programmer traders. This has all of the advantages of C++, and strategy research can be done by strategy researchers themselves the same as with products based upon proprietary languages.
Or for more complex strategies, the full C++ language is available along with extensive programming environment access to the internals of the strategy testing engine. This is a core aspect of the PowerST product design. The entire product is oriented around this concept of simple to complex strategies being a gradual progression from simplified C++ to more complex C++ to any level of full C++ that is needed.
- High end strategy testing capability that matches and exceeds any other commercial product:
- PowerST addresses the high end of the product spectrum with a product firmly oriented towards programability, customizability and extendibility.
- Based upon C++, there will never be any language restrictions.
- Very strong native strategy testing features.
- Robust business level product offering:
- Availability of 100% full C++ source code for the strategy testing Calculation Engine. This source code could be for a larger business that wants to hire their own programming staff to enhance the software themselves. However, more commonly the desire for source code is as an insurance policy. It is an insurance policy to assure that you will be able to continue your daily trade signal generation operations and your ongoing strategy research. It assures that you can continue to benefit from your investment in the product forever, and independent of any outside software company, no matter what happens in the future.
- As a higher priced specialized product, PowerST offers business level support including direct access to the product developer. Also, there is more ability to affect product direction for new product features than with a more mass market product.
- For someone who might have a more complex strategy or more specialized needs, custom programming services are available as an alternative to or in addition to hiring programming staff.
PowerST finally is the product that eliminates any reason for a trading business to consider hiring programmers to develop custom strategy testing and trade signal generation software from scratch:
- First, the basic PowerST product is extremely powerful and flexible. It is unlikely that a trading business would need capabilities beyond what the basic product offers.
- Second, for continuity concerns (not being dependent on a product vendor, and control of the source code) the PowerST Calculation Engine source code is available.
- Third, if someone does have a specialized or advanced need that requires enhancement to the basic PowerST product, it is much more cost effective to start from the PowerST Calculation Engine source code rather than from scratch. Those who have been involved with the development of proprietary custom software know that it requires a long term commitment of employing programming staff, and whether the effort will ultimately result in useful software is uncertain. Instead, the PowerST Calculation Engine is a mature and well documented product with over 10 programmer years of development invested, and it is available at a cost that is a fraction of what it would cost to develop this capability from scratch. By starting from this mature and stable base, a customized proprietary software can be completed years more quickly and for much lower cost than starting from scratch.
The strength of PowerST isn't only from the use of C++. The other strength of PowerST is native strategy testing capabilities:
- Single step fully integrated testing of portfolios, including the ability to test portfolios composed of multiple markets and multiple systems. The portfolio level testing capabilities are powerful, fast, and unlimited.
- Unprecedented flexibility in portfolio level testing, including true portfolio level money management testing capabilities. Fully programmable money management strategies for position sizing and risk control on a portfolio basis. Tracking of open risk per portfolio, per sector, per market, per system and per trade, and the ability to make position sizing decisions to constrain risk for any or all of these factors.
- User definable risk measurements.
- The ability to scale trades based upon portfolio level considerations. In other words, adding or subtracting additional contracts or shares to and from open positions.
For example, if the open risk of a trade drifts beyond a percent of portfolio equity threshold, to scale down (i.e. exit part of the open position) to a smaller percent of combined portfolio equity. Also, if the combined risk for a sector or the entire portfolio drifts too high, to scale back all open trades in the sector or all open trades in the portfolio.
Another example: Say total portfolio risk is reduced because a trade (or multiple trades) have exited in a different market / system in the portfolio. Say there are open trades whose original position size was constrained by total portfolio risk limits. Those open trades can now be scaled up to larger position sizes now that total portfolio risk has been reduced from the exited trades.
Another example: Say open trades are already consuming the maximum allowed risk (whether total portfolio risk, risk per sector, or maximum allowed risk in a single market for a situation of multiple systems or multiple time frames trading the same market). Say there is a new trade entry signal. It could be decided, rather than skipping the new trade, to scale down the position sizes for open trades to allow the new trade to be taken. This could be considered desirable because skipping trades is undesirable since it can never be predicted which trades will eventually become the big winners.
- Money management position sizing decisions are made with full knowledge of the trading status of all markets and system in the portfolio, including the following:
Status of each individual market system: The market being traded, the system being traded, the sector assignment for the market. The current position, long, short or flat. If there is an open trade, the trade entry date, position size, entry price and the number of bars the trade has been open. P&L for the open trade, and current risk of the open trade. What was the initial estimated risk for the trade at the time of the trade entry. Cumulative open equity, drawdown, etc. for the market system. Whether there is a potential new trade for the next bar, and if so the risk of that new trade. The history of past trades for this market system. If an open trade as been resized to add or subtract contracts or shares during the trade, the exact history of the past scale ups and scale downs including the ability to exit the scale ups in any user programmable sequence. When applying money management, the non money management influenced single trading unit performance is tracked side by side with the money management influenced performance.
Status of other market systems: Significantly, the position sizing for each market system has access to all of the above information for all other markets systems in the portfolio.
Combined portfolio status: Current combined portfolio open equity (i.e. account size), drawdown, etc.. Current total portfolio open risk for all open trades in the portfolio.
Composite groupings status: Current open risk and potential new trades and new trade risk grouped by sector, a specific market, and a specific system when trading multiple systems.
User programmable per market system variables: For example, possibly a relative strength or indicator value for comparative ranking of the markets and/or systems in the portfolio.
- Extremely flexible optimization (i.e. parameter stepping) feature with programmable control over the optimization loops. The ability to customize the contents of the optimization report including user defined individual market or combined portfolio performance statistics.
- Portfolio level optimization can iterate parameters across a basket of markets and reports combined portfolio results for each parameter set. Also, portfolio level optimization supports optimization of money management strategy parameters.
- Forward trading support for generating trade signals for new trades based upon actual market positions, including automatic calculation of position sizes based upon the rules of the money management strategy. Also, the ability to support multiple forward trading portfolios, for example for generating trade signals for multiple managed accounts.
- Extensive reporting. Detailed, highly programmable, highly interactive charting. The ability to drill down entry, exit and position sizing decisions, from portfolio level down to individual markets. Also, facilities for users to create their own custom results reports.
- Powerful trading rules and portfolio level money management strategy programming environments based upon the industry standard C++ language.
- Speed! In PowerST, both the PowerST software itself and the user programming of trading strategies rules is all pure, raw compiled C++. This makes PowerST hugely fast. In PowerST, single market tests complete in the blink of an eye. Significant sized portfolios in a few seconds. Blindingly fast optimizations.
As a rough benchmark, a customer did some comparisons between the optimization speed of his previous testing platform and PowerST. PowerST was almost a full 10 times faster. This is significant. Instead of waiting 20 minutes for an optimization to complete, it will be finished in around 2 minutes.
Also, PowerST is generally fast in general use. For example, change a parameter, re-run a portfolio of markets and systems, apply portfolio money management, view the revised combined portfolio results. This all happens with a single mouse click, and within only seconds a progress dialog reports that the calculation is finished. One more mouse click and in the blink of an eye all of the reports you have open are updated to display the revised test results.
- Very high capacity. A futures trader customer tested a portfolio asset allocation strategy composed of 19,000 market system combinations. Stock trading PowerST customers that use PowerST to test strategies against the universe of all U.S. stocks past and present, which is about 24,000 stocks. While many PowerST customers will not need this much capacity, it is good to know that capacity will be available for whatever you end up needing.
- Flexible and extendible, with depth and a high ceiling.
Core to the design of PowerST is that the environment for composing trading rules systems and money management strategies uses the same C++ programming language that the PowerST software itself is written in. This orientation around C++ make PowerST a serious product with a high ceiling of what can be accomplished without software limitations.
Many things that are fixed and unchangeable in other software can in PowerST be modified and customized by PowerST users. For example, a programming environment for users to create new performance statistics that are then automatically calculated for individual market and combined portfolio results. Also, most of the reports within the software can be fully customized by users.
- As a more advanced feature, user programming using the same C++ language that the product itself is written in supports providing the source code for specific parts of the programming environment. This can be for "under the hood" viewing the exact code for how something is done, and even modification of a programming environment feature. For example, some of the libraries that support money management programming are provided in source code.
Other testing environment features provided in source code for user viewing and modification include calculating rollover transaction costs, currency conversions for trading markets denominated in multiple currencies, handling extra input columns in data files, trading with margin, trades import, portfolio trades processing, portfolio trades table report, data time frame conversions (for example, constructing weekly bars from daily bars), calculation of risk estimates for new and open trades, and parameter stepping support functions. This is in addition to full source code for indicators and performance metrics calculation, as well as the source code for the performance statistics reports displayed in the PowerST user interface.
PowerST has a unique design based upon C++, but with trading rules programming in a simplified subset of C++ that has been specifically designed for use by non-programmer traders. Some PowerST customers are traders whose previous programming experience was only with other trading software packages.
How is that? From a programming perspective, trading strategies are comparatively easy programming. The logic of trading strategies can become very complex, but that is an issue no matter what language is used to specify the rules of the strategies. However, as far as the actual programming language constructs needed to specify the rules of trading strategies, only basic language constructs are needed, and the quantity of programming code to specify the rules of a trading strategy is generally small.
C++ is a big language directed towards professional programmers. However, the PowerST trading rules specification environment was intentionally designed to use only a simple subset of the C++ programming language that PowerST calls "Simple C++". Trading rules programming in PowerST is done using the same full featured C++ language compiler product that is used to develop the PowerST software itself. However, trading rules specification uses only a subset of the C++ language features. View it as taking a checklist of C++ language features, and the PowerST developer went down that list checking off what language features are needed for trading rules programming and what language features are not needed. The checked items became the Simple C++ subset, and then the entire trading rules specification environment was built from the ground up to support specification of trading rules using only this simplified subset of C++.
Furthermore, to support this the PowerST documentation starts from the beginning assuming no prior programming experience. The initial feedback from people who go through the introduction to C++ documentation materials is that the C++ language aspect is not as difficult as they assumed it would be. Then, the later response is delight at the power and flexibility that is inherent in using C++ in this manner.
In exchange for learning a subset of C++, the payoff is a much higher ceiling of what can be accomplished without software limitations. There are many advantages to this approach of a product based upon real programming language. This design of user programming in the same C++ language that the PowerST software itself is written in leads to PowerST being a serious product with more extensive customization capability and a higher level of programmability. This is one of the major power aspects of PowerST (where the other major classification of power aspects is the native testing capabilities such as portfolio level testing capabilities, advanced optimization capabilities, etc., as discussed in the PowerST Features Summary section below).
In summary, here are some the advantages this design based upon C++:
C++ is a powerful full featured language. Programming of trading rules and money management strategies requires only a subset of C++. However, that is not restrictive. The full C++ language is available, so there will never be any language restrictions.
C++ is the benchmark against which the speed of other languages is compared. Nothing is faster than C++. In PowerST, both the PowerST software itself and the rules of trading strategies and indicators are written in pure, raw C++. This makes PowerST hugely fast.
In PowerST, there is more programming environment access to the internals of the strategy testing engine than would be possible if user programming was not done in the same C++ language that the programming environment is written in. Along with the availability of the full C++ language, this supports extendibility and researching of more complex and unusual trading strategies.
Why specifically C++? Actually, it is not specifically about the C++ language itself. Rather, the critical issues are that it is a "real" programming language and that it is the same language that the PowerST software itself is written in. That is what leads to the advantages discussed above and throughout this web site.
With the concept of trading rules programming in a simplified subset of a real language, the issue is not the specific language because trading rules programming is done in a high level environment that is going to be largely the same with any language. Then, given that the specific language is not the issue, C++ is an excellent choice for the fast processing speed of C++. No programming language is faster than C++ and processing speed is important for backtesting software.
The Calculation Engine source code is an optional separate product is for businesses who require complete control of their strategy testing and trade signal generation software for assurance of continuity, as an insurance policy that they will be able to continue operations independently of any outside backtesting software company. This section explains this unique and unusual product offering.
What is the Calculation Engine? The Calculation Engine is the actual number crunching core of the PowerST strategy testing software. The Calculation Engine applies system rules and system parameters to price data to simulate trading, combine results into portfolios, and apply position sizing. From this comes reports showing trades, bar by bar indicator values, and overall per market and combined portfolio performance. Also from this comes the next day's trade signals including the position sizes determined by the money management strategy. All of this is the function of the Calculation Engine.
The other key PowerST component is the user interface. The user interface is the Windows program that has menus, and forms for entering setup options, and displays showing charts and reports.
Part of the design of the PowerST software from the beginning was a separation of the user interface from the Calculation Engine, for the specific purpose of being able to offer the Calculation Engine source code as a standalone product.
Why would someone want the Calculation Engine source code? With trading software companies constantly being bought out, changing their product offerings, or going out of business, there is concern about continuity. For example, consider a trading business that is running a fund based upon trades signals being generated by a software product. If that product was to disappear it could be a problem for ongoing daily operations of the fund. This is a concern which has been raised repeatedly, which led to the decision to offer this Calculation Engine source code.
Also, the Calculation Engine source code gives the ability to add new software features independent of the software vendor. Furthermore, since the Calculation Engine source code is completely generic C++ code, there is the possibility of moving the Calculation Engine to another platform such as UNIX or Linux. Since the calculation engine is completely generic C++, the necessary language and operating system support to run the code will never disappear. C++ is one of the most widely used programming languages, it exists on every major operating system, and that is extremely likely to remain the case forever.
The Calculation Engine Source Code is the 100% full C++ source code for the PowerST backtesting number crunching and trade signal generation. This gives 100% control. When you have the source code you are immune to product changes. With the source code you can function independently from the software vendor by hiring a C++ programmer, under your control, to maintain the product for you. Probably most purchasers of this source code will never actually hire a C++ programmer because the standard PowerST product will serve their needs. However, and very importantly, it gives this option as a form of insurance policy.
Furthermore, hiring a programmer to pick up support of the Calculation Engine source code should be a reasonable sized project for a single programmer. That PowerST trading rules programming is done in the same C++ language which the calculation engine is written in is critical to this. The PowerST trading rules programming environment is essentially a set of C++ library functions for strategy backtesting. The calculation engine product is the source code for those library functions and the code underneath the trading rules programming environment. If trading rules programming was instead based upon some other language, there would be a language processor which would process the language commands and then translate those commands into functions within the calculation engine. That is an additional level of complexity, and the user trading rules programming documentation would be discussing the proprietary language rather than the underlying calculation engine.
With PowerST there is no language translation. Instead trading rules written in C++ directly call functions in the calculation engine, and those functions are extensively documented. This is a huge edge for someone needing to learn and understand the calculation engine source code, to have extensive documentation discussing the interface and purpose of library functions and programming environment variables. The PowerST trading rules programming environment is thoroughly documented in a detailed, logically organized, and extensively cross referenced 480 page manual. Although the primarily goal of that documentation is to discuss the user trading rules programming environment, with the "everything in C++" direct connection between the trading rules and the calculation engine the documentation also indirectly discusses the structure and design of the calculation engine.
Between this extensive documentation and the separation of the core calculation engine from the complex user interface, it becomes a much more manageable task for a programmer to realistically step in and pick up support of the critical software necessary to continue operations. Since it is all 100% generic C++, there will always be a C++ compiler available. This is a rock solid continuity plan.
On the other hand, Windows user interface programming can be very complex, and the user interface part of the program would not have the same level of documentation available. To hire a programmer to pick up support for a full Windows program including user interface and proprietary language translation would take a programmer much longer to become productive. Then, given that longer learning curve it might be good practice to hire multiple programmers to ensure continuity in the event that a programmer quits his job, to guard against the possibility of a long lapse without support while a new programmer is coming up to speed. On the other hand, the more self contained Calculation Engine number crunching only source code is a shorter learning curve, and with this shorter learning curve there is less concern about what would happen if the programmer quits his job.
The Calculation Engine source code is directed towards a money management business that would be able to afford the expense of hiring a C++ programmer if disaster was to happen. On the other hand, there has been some history of startup money management businesses who are not yet ready to afford this still finding it to be an advantage of PowerST that the Calculation Engine source code will be available when their business starts to grow, down the road, as their continuity plan.
The PowerST software was designed from the ground up to be completely C++ and for this ability to offer the calculation engine source code separate from the user interface. It is a unique product offering. Sum total this is a complete solution for a trading businesses that requires full source code for their core strategy testing and trade signal generation software environment. The PowerST software is a full featured and stable product with 10+ programmer years of investment in the Calculation Engine source code, plus it has the proven maturity of a product that has been used intensively by a wide variety of real customers over many years.
It is also about support. The higher cost of PowerST allows a higher level of support. The history of PowerST has been the developer taking a personal interest in each customer. Customers can talk directly to the person who actually wrote the software. Ask questions, and get help with how to test strategies. If you have a question about how to approach a strategy testing problem you will have someone to discuss your questions with, a programmer who both knows programming and understands trading systems. Furthermore, that person is also the main developer of the PowerST software, and therefore has the ability to make software enhancements and deliver software updates if necessary to support your needs.
Furthermore, a key point about the availability of consulting help is that PowerST is a product with a vast amount of programmability and flexibility. If there was limited expandability there wouldn't be much use for consulting help. With PowerST, customers have done all kinds of advanced research, some it beyond the capability of any other backtesting software, some of those customers with consulting help from the PowerST developer and some completely independently.
The real strength of the PowerST software is in the strategy testing that customers are able to accomplish with the product. There is a long history of success with PowerST being able to test any and every type of trading strategy customers have asked of it, including some very advanced strategies customers were not able to test in any other commercial software. When push comes to shove what really matters is customer success at accomplishing the strategy testing they desire. Both needs new customers know about when they start with the product, and needs that arise later.
Some new customer inquiries are initially surprised when they start asking specific questions whether this or that can be done and receive consistently positive answers that yes it can be done. They are surprised because they have previous experience with other software that didn't have the flexibility to do the specific things they are asking for. Then experienced PowerST users become extremely happy with the product because they know it provides capabilities not available elsewhere. For example, the following is a recent quote from a PowerST user:
"Way back I said that I wanted software that would not impose any restrictions other than those of logic, and that has proven to be true over many years and a lot of testing. As but one example: I have written code that allows me to look inside of a portfolio with and without money management applied and chart the output so that I can see the interactions between the MarketSystems which I have found to be very interesting, and which I suspect other software may not be capable of. So many things rattling around in my head and in each and every case PowerST has imposed no impediment to my desire to play "what if". PowerST just gets better. That is how I feel about it. The only restriction is me and my imagination at this point."
PowerST will run on any Windows computer.
The cost of PowerST is:
- Initial Purchase: $25,000
- Monthly Maintenance: $1,000
- Calculation Engine Source Code: $100,000
The monthly maintenance cost includes all software updates. PowerST customers are always welcome to upgrade to the latest PowerST software version, as often as desired or needed.
Included in the above costs is up to 20 hours of telephone or email technical support per month for the first 6 months after purchase, then 5 hours per month thereafter.
- Technical Support: Technical support involves answering questions about the PowerST product itself (i.e. features of the current product). As listed above, the initial purchase and maintenance costs include a technical support credit. To reduce administrative burden, if additional technical support beyond the included credit is required, the extra support is sold as a support bundle rather than per event. The current support bundle offering is 5 hours of technical support for $375.
- Custom Programming: Custom programming is billed on an hourly basis for actual hours spent. Actual hours spent includes time spent in telephone and email discussion, as well as actual programming hours, and all follow-up support and changes.
This web site you are currently reading is the initial introduction. Much more information that discusses the PowerST product in great detail is available to prospective purchasers. If you are interested in learning more about PowerST, please send an email to
saying a few words about yourself and your trading.
Alternatively, a phone conversation can often be a more direct approach than back and forth emails. Please don't hesitate to shortcut the discussion by calling Bob Bolotin at 847-982-1910.