OmniFunds Alpha 2.0 - Released September 24, 2015 About OmniFunds OmniFunds is an exciting work in progress that our users can participate in. As of Alpha 2.0, we have one canned example our users can run, which is called StrongETFs. We are releasing the Mean ETF Selection and Multi-Group Balancing methods, plus Dynamic Market State Switching ahead of completing examples for them so users who want to run their own experiments can easily do so. All users can follow our progress and run the examples as we build them. We are working on Right Edge Trading now. We encourage those users who consider themselves experimenters to work with us in parallel and post findings in the VisualTrader OmniFunds forum. Now that we have the base software working, it should not take long for us to create more examples that our users can activate. About Alpha 2.0: 1. Installing the new version. o Install the latest VisualTrader Pre-Release (made available September 24, 2015) o Delete or re-name your /VisualTrader/OmniFunds folder. Now, all OmniFunds indicators are placed in the OmniFunds project under OmniLanguage. They are no longer saved in /VisualTrader/OmniFunds. Settings for each OmniFund are still saved in /VisualTrader/OmniFunds. o Run the OmniFunds Installation at: https://www.omnitrader.com/currentclients/downloads/item.asp?prodcode=5100 2. The Mean ETF Selection Method has been released. 3. The Multi-Group Balancing Method has been released. 4. Dynamic Market State Switching code has been released. About VisualTrader 11 Pro VisualTrader is the platform on which OmniFunds runs. The primary reason we did this was to develop the OmniFunds prototype as quickly as possible. VisualTrader has all the supporting features, including: 1. Charting and window management features, to validate indicators. 2. The Focus List can have indicator columns useful to examining the sort order. 3. Full paper trading support, with integrated Portfolio and Equity Curve (new in VT 11) 4. Full support for OmniLanguage 5. Full brokerage trading support (not implemented in OmniFunds yet) 6. Trade Throttle code base, making it easy to implement OmniFunds due to AutoSIM (in VT 11)
Trade Throttle? The OmniFunds code is based on the Trade Throttle, so in this Alpha Release the Tool Bar literally says Trade Throttle. This will be changed to OmniFunds in a coming build. In this version the actual Trade Throttle is on the same tool bar. In this version, to activate the original Throttle click the Throttle Icon. Show all installed OmniFunds Bring up the OmniFunds interface (which right now includes the Throttle) Throttle Icon (shortcut) to activate the Throttle Activating and Running the Strong ETFs Example 1. Make sure you load the Profile that has the correct symbols for the OmniFund you are going to run. For this example, click File, Open and load the profile XRTvsXTN 2. Click the Drop-Down next to Trade Throttle to show all installed OmniFunds Methods. 3. Select StrongETFs. Click OK 4. Click the Trade Throttle tool bar. (continued, next page )
You should see the OmniFunds Interface. In this case, the Method is Strong ETFs Select a specific OmniFund inside this Method here. OmniFunds Interface for StrongETFs Check this box to keep it on top of VisualTrader. Caution: This dialog can get in front of others. If VisualTrader ever appears locked out hit Return and move this box out of the way. 5. Select the Specific OmniFund you want to run using the Name drop-down, in this case XRTvsXTN. 6. Move the start date back in the PlayBack Tool to January 6, 2014 (for this example). HINT: You can go back to the same date in subsequent runs by establishing a BookMark. To do so, Right-Click in the Playback control, select Bookmarks from the menu, and create one at a specific date in the interface. Then, for your next run, you just activate the BookMark by double-clicking it in the BookMark interface. Slider in Play Back Optional Bookmark feature (Right Click on the Play Back tool to activate).
7. IMPORTANT: MAKE SURE THE OMNIFUNDS INTERFACE IS VISIBLE (click the Throttle button). If it s not activated, it will not take any trades. It can be minimized. 8. Click Simulator on the Simulator control and select Start New Session 9. Click NEXT in the Simulator to advance to the next bar, or PLAY to let it go by itself. As trades are executed, you will see them appear in the Position Window. You can PAUSE the simulation, click charts, add indicators anything you like while the simulation is running or paused. 10. Click Account on the lower right section of VisualTrader to bring up the Account Interface. From here, you can see all Orders, all Historical Positions, and all Open Positions while the simulation is running. Click Equity Curve to see the simulation curve. The Simulation curve can also be viewed while it is being created. Note: During this time the market only had an 18% Return and 12% Draw Down.
Modifying or Creating an OmniFunds Instance Interval Control Symbol Selection approach, Specific to this Method. OmniFunds Interface for StrongETFs Common Settings Dynamic Market States Each OmniFunds has the same Setup Section (basic filters, rankers, and position controls) but a different Symbol Selection area that defines the Settings that are Specific to the Method. Dynamic Market States can OPTIONALLY be used to change all Symbol Selection and Settings depending on what the market is currently doing. Interval Control Name: Name of the settings being used for this OmniFund. You can have multiple Save Sets by using Save As at the bottom of the form. Switching Interval: (o) N Bars ( ) Every Monday v Weekly v ( ) when Market State changes If N Bars is selected, the program will switch every N bars, without attempting to line up on a specific day. If Every is selected, it will switch on the interval and say specified. If it cannot trade on the day due to a holiday, it will trade the following day. If when Market State changes is selected, the program will only perform its switching process when a Market State change occurs. See Market States below.
Symbol Selection (Specific to this Method) Method example -- Strong ETFs: Each OmniFund has a unique approach. StrongETFs (the first OmniFund) operates by running the ETF Selector to determine which ETF to switch into, then uses the SymbolRanking indicator to rank the stocks within the ETF. The highest or lowest values of the indicator (Descending or Ascending) determine which are selected for switching into. There are only 4 unique parameters for Strong ETFs (our example method): Max % of Equity: Specify maximum exposure. ETF Symbol 1 and ETF Symbol 2: The two ETFs that are used for switching. ETF Selector: An indicator which is applied to the actual ETF symbols, to determine which one to switch into. By default, we use Relative Momentum. Settings (Common to all methods) Market Filter: This is an OmniLanguage indicator with no parameters that returns zero ( 0 ) if False or 1 if True. It runs on the Market Symbol that is specified. If it is false then no new entries are allowed. A typical Market Filter would be C > EMA(200). {Close greater than the 200p Exponential Moving Average) [x] Close Existing (next to Market Symbol): If Market Filter turns from True to False and this box is checked, then all open positions will be closed. Symbol Filter: This is an OmniLanguage indicator with no parameters that returns zero ( 0 ) if False or 1 if True, running on each symbol for which a new position is about to be entered. If False, the new position is not entered. A typical Symbol Filter would be: C > EMA(100). {Close greater than the 100p Exponential Moving Average). Symbol Ranking: Given N possible securities that can be traded at the switching interval, but not all of them can be taken due to the definition of allocation, they are ranked by this OmniLanguage indicator in Ascending or Descending order. If Symbol Ranking is blank, the order of the list is used. Strong ETFs uses CCI: CCI(6) Ascending. {trade those symbols with the lowest values of CCI(6)}. Max Concurrent Positions: The number of positions you allow at one time. Allocation: This is an OmniLanguage indicator that returns a value from 0-100, indicating the % of Equity for trade size, which is converted into shares. Once the allocation reaches 100% of the equity in the Portfolio (Account) it will stop taking positions. If Allocation is BLANK then the account will be divided equally among positions based on the Max Concurrent Positions setting. Trade Plan: You can optionally specify a Trade Plan to be applied to all new positions. In this case, the Trade Plan can dictate when the trade exits, if [x] Close Existing under Market Filter and [x] Close Trades at Switching Interval are NOT checked. If these settings ARE checked, they will override the Trade Plan.
[x] Close Trades at Switching Interval: If this is checked, then any open trade that would not normally be selected at that switch point will be closed. Wouldn t you always want this? No if you are using a TradePlan, you probably want the Trade Plan to exit your trades. Dynamic Market State Selection (NEW in Alpha 2.0) The use of Market States is OPTIONAL. If used, they can change all settings in the interface to the left (except Interval) when something happens in the market. OmniLanguage Indicator that defines this Market State For example, if the market suddenly drops through a recent support level, you might want to reduce allocation or trade a different ETF or Symbol Group. Each Market State has a Market Condition, which is an indicator operating on a Market Symbol. Market Condition indicators should return a True or False (1 or 0 integer value). Order of evaluation The ORDER the Market States are evaluated can be changed with the arrows at the bottom. Add New Market State Change Priority Delete Current The program will evaluate each Market State from top to bottom. As soon as one evaluates to TRUE (not zero) then all the Settings on the left (except the Interval Control) will change to match the way they were defined for Market State Each State has the following elements: Market Condition: The name of an OmniLanguage Indicator that is tested for True or False (1 or 0). If True, the program switches to all settings defined with that State. Market Symbol: The Symbol the Market Condition Indicator runs on. Name Column: The name of the Market State (this is also how the settings are saved). Active Column: Will say True if the Market State is currently active and False if it is not. The example above is what it looks like when it is not running. If Market States are defined, and you run a simulation, you will see the blue highlight move from state to state as they are activated. All settings to the left will also change to match the new state.
OmniFunds Methods in Alpha 2.0 Strong ETFs Symbol Selection Method: Select N Symbols from one of 2 ETFs based on which ETF is favored using an ETF Selector indicator. This method trades the stocks WITHIN an ETF. The Mean Strength method trades ETFs. Approach: Strong ETFs operates by running the ETF Selector indicator to determine which ETF to switch into, then uses the Symbol Ranking indicator to rank the stocks within the ETF. The highest or lowest values of the indicator (Descending or Ascending) determine which are selected for switching into. Profile Requirement: For Strong ETFs to work properly, it needs a profile that has at least 2 ETF groups. ETF groups are a new feature in VisualTrader 11. We provide a sample Strong ETFs profile. Additional ETF groups can be created using Right Click Create ETF Group. ETF Symbol 1 and ETF Symbol 2: The two ETFs that are used for switching. ETF Selector: An indicator which is applied to the actual ETF symbols, to determine which one to switch into. By default, we use Relative Momentum. Mean Strength: ETF Selection by evaluating the components of each ETF ETF Selection Method: Select the top N ETFs by summing (averaging) up to 3 indicators measured on all the constituents of each ETF. This process is intended to identify the strongest ETF by virtue of its constituents. Approach: This OmniFunds ranks the individual components of an ETF in order to rank the actual ETFs for trading. They can be ranked on up to 3 separate indicators, which are averaged together. Profile Requirement: A Profile using this method should be an ETF profile using the ETF Group feature of VisualTrader 11. Multiple ETFs and their components should be defined. In addition, a generic ETFs group should be defined that has all the actual ETF symbols in it (for trading purposes). Indicator 1, 2, and 3: Up to 3 separate OmniLanguage Indicators can be used. The indicator(s) are evaluated on each symbol in each ETF Group in the Profile in order to select an ETF to trade. If multiple indicators are defined, the average of the 3 values is used for this purpose.
Multi-Group Balanced Symbol Selection Method: Select ETFs or Stocks from within Groups in VisualTrader based on the other setting, and allocate to the group (primarily created to be used with DMSS). Approach: Up to 5 different Groups can be traded simultaneously using this OmniFund Method. Trade the components of up to 5 separate groups using different allocations. Trade a primary group and hedge with a secondary group (like, inverse ETFs) Any application where trading occurs in stocks or ETFs within a group. Group: Any Group on the VisualTrader map, by name. The components will be traded. Improving on Modern Portfolio Theory: MPT was invented in the 70s as a way to balance a Portfolio using different asset classes. The following table from Wealthfront, a Robo Advisor fund management company shows a percentage allocation and ETF for each asset category. As long as we have a secular bull market, this approach works reasonably well. But in correcting markets (like 2000, 2008 and now 2015) portfolios built this way can suffer devastating losses. In the Multi-Group Balanced OmniFund, we can use indicators and conditions to adjust mix, allocation, exit levels, and other factors to manage a dynamic portfolio. We are running these experiments now, but users who want to run their own experiments in this area can now do so in parallel with us using this Method. Other OmniFunds we are working on Timing, Safety, and Trend Approach: This OmniFunds module uses up to 3 indicators (scaled from 0-100) with a slider so the user can specify a cutoff level for each indicator If a user wants to emphasize Safety over Timing, they can easily do this by moving the slider. There is also a Symbol Ranking feature, so only the strongest symbols are selected. We have decided to wait on releasing this OmniFunds until we have tested it more thoroughly because we are considering making changes to the interface. It will likely be in the next Alpha release.
Using OmniLanguage to Modify Indicators One of the great things about OmniFunds is that it is based 100% on OmniLanguage Indicators. This means you can create any kind of Filter, Selector, or Ranking function you want, using the full range of capabilities of the built-in system. Here is how OmniFunds installs and manages the indicators and settings it uses. When OmniFunds is installed on a computer, the Indicators used by the defined OmniFunds are copied to an OmniFunds project in OmniLanguage. When OmniFunds is installed or editred, the Settings for each OmniFunds are saved in \VisualTrader \OmniFunds\method\unique_instance. Indicators installed here. SAVE and SAVE AS BUTTONS (for new) OMNIFUNDS PROJECT Settings are saved in VisualTrader/OmniFunds with a folder for each method. On-the-fly editing of indicators is supported. The indicators defined for a method can be edited and re-compiled at any time, even while a simulation is running. Just click PAUSE in the PlayBack interface, edit your OmniFunds Indicator, compile and then resume.
OmniFunds Development Approach A Rapid Prototype Environment Web site programming is difficult and time-consuming. If we were to attempt to implement OmniFunds on a web site first, users would not see initial funds for months. OmniFunds is a rapid prototype development project based on the VisualTrader platform. By using VisualTrader as the test platform, we can implement and test new ideas quickly. OmniFunds is Unique Technology We have never had a product like OmniFunds before. OmniFunds is designed to select an allocate to different investments based on what the market and those instruments are doing. It s a powerful paradigm. The OmniFunds Fast Track The steps of our plan are shown to the right. We will take what we have learned in the prototype (VisualTrader) to create a stand-alone OmniFunds program. Then we will take the same code and port it to an OmniFunds web site that is dedicated to OmniFunds. Then, we plan to make it possible for users to see and use their OmniFunds with their OmniVest portfolios, in OmniVest. Please submit YOUR ideas! We see this as a major collaborative effort. If you are one of the users experimenting with OmniFunds, please submit ideas for new switching algorithms in the VisualTrader/OmniFunds forum, or send them to Ed Downs ed@nirvsys.com. If possible, we will create a new OmniFunds method that meets your specification. We know that the OmniFunds approach will produce powerful fund management results with lower risk than other methods provide. By implementing first on the VisualTrader platform, we can quickly try different indicator combinations, Trade Plans, Allocation methods and other controls to arrive at great new OmniFunds Methods. The OmniFunds Fast Track VisualTrader OmniFUNDS Prototype Application OmniFUNDS Platform (PCbased) OmniFUNDS Web Site OmniVEST Integration
Experiencing the Power of OmniFunds The main thing we want new users to see is just how powerful this prototype is. Ultimately, it will become a web site, but this implementation enables us to have maximum visibility into effective switching methodologies. Having it run in VisualTrader means you can do all kinds of things like Define Indicators in the OmniFunds project and Plot them. This enables you to verify that switching is happening at the right time, and to tune the indicators. Right-Click, Add Indicator, OmniLanguage, OmniFunds, Indicator Plot all the open positions to see how they are doing, and why some are causing draw downs. Do this from the Positions Window. Sort on an indicator in the Focus List, so you can examine the relative goodness of symbols to establish a Ranking function. In StrongETFs, use BOTH Mode, so it can sort the symbols in each ETF. Make sure you set the Symbol Ranking value to blank if you want to use the Focus List for Ranking Order. Bring up the Account interface and examine Open Positions, Closed Positions, Orders for the next bar, and anything else in that interface, PLUS get an Equity Curve (it doesn t update dynamically right now we re working on that). Bring up the Market to see how it is behaving relative to your switching paradigm, and identify the right Market Filter to stop trading (and optionally exit all positions) if the Market starts to falter. Change any Indicator, at will, before/after/during a Simulation to see the effects. Work with list Sorts to establish symbol ranking. If no Ranking indicator is specified, it will use the sort of the upper list in VisualTrader for the order of symbol selection. You can even change this while it s running! Experiment with Allocation Formulas. The default is to divide up Equity into N equal parts. But you can write an Allocation Formula that returns a percentage, and that percentage will be used. Experiment with Trade Plans. If you specify a Trade Plan, you probably want to turn OFF the check box that says [x] Close Trades at Switching Interval. ALL features are available. You can close trades, move stops, add indicators, patterns, anything that VT supports to simulate. The time frame of the program is what is used for switching, and Real Time bars are supported. What would happen if we switched in Real Time? Nirvana Club Members: We just implemented ARM4 Indicators that use Neural Network blocks in Strategies to return NN Score Values. This feature will soon be released. We think the implications of this are truly awesome!