New OmniFunds - Nirvana Systems Inc.downloads.nirvanasystems.com/omnifunds/OmniFunds2.pdf · 2015....
Transcript of New OmniFunds - Nirvana Systems Inc.downloads.nirvanasystems.com/omnifunds/OmniFunds2.pdf · 2015....
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.
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…)
… Show all installed
OmniFunds
Bring up the
OmniFunds interface
(which right now
includes the Throttle) Throttle Icon (shortcut) to
activate the Throttle
You should see the OmniFunds Interface. In this case, the Method is “Strong ETFs”
OmniFunds Interface for “StrongETFs”
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.
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.
Select a specific
OmniFund inside
this Method here.
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
OmniFunds Interface for “StrongETFs”
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.
Common Settings
Symbol Selection approach,
Specific to this Method.
Interval Control
Dynamic Market States
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.
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).
The ORDER the Market States are evaluated can
be changed with the arrows at the bottom.
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.
Add New
Market State
Change
Priority
Delete
Current
Order of evaluation
OmniLanguage
Indicator that
defines this
Market State
OmniFunds Methods in Alpha 2.0
Strong 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
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.
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.
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.
Multi-Group Balanced
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.
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).
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.
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.
SAVE and SAVE AS
BUTTONS (for new)
OMNIFUNDS
PROJECT
Settings are saved in
VisualTrader/OmniFunds with a
folder for each method.
Indicators installed here.
The OmniFunds Fast Track
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 [email protected]. 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.
VisualTrader
OmniFUNDS
Prototype
Application
OmniFUNDS
Platform (PC-
based)
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!