Misc. Position sizing topics
|Top Previous Next|
In general, performance suffers when you are frequently having to reject trades at the Initial Size stage due to under-capitalization.
There are two reasons trades are being rejected at this point. Either (a) there is too little capital to accommodate the specified risk per trade, or (b) you have specified too little risk to take per trade for the amount of capital in the account. In a sense, they are one in the same problem, since one or the other—or both—needs to be modified in order to avoid consistently having trades rejected.
While this may seem like a paradox at the moment, in the next section we’ll explore intentionally rejecting trades as part of various risk control strategies. One example of this would be to reject any additional trades that are presented for sizing, after a sector has already achieved a predetermined level of risk.
Let’s take a minute and discuss this keyword, which we sneaked into the previous exercise without much of an explanation.
When used in a SIZ file (Initial Size page)
When used on the Initial Size page of a SIZ file, the STARTDATE command allows you to slam on all the portfolio's currently open positions on a certain day, in order to avoid the perils of inadequate diversification that occurs as new positions are being slowly added at the beginning of a simulation, or at the start of a period of actual trading.
In other words, Mechanica looks at the STARTDATE command and puts on (initially sizes), any trades in progress as of that time. To accommodate the sizing of these slammed on positions, Mechanica looks back in time and stores the dollar risk at the inception of the trade (the initial risk), even if trade entry occurred months prior to the STARTDATE, and returns that initial risk figure via the functions NEWRISK and USERDEFINEDRISK.
This means that you get the immediate benefit of diversification when starting up a new portfolio, and reduce the chances of experiencing what otherwise might be a large drawdown while your portfolio is getting up to speed.
When used in a SIG file (Resources page)
When used on the Resources page of a SIG file, STARTDATE behaves in an entirely different manner: It simply specifies the date that Mechanica starts reading data.
Using STARTDATE in both a SIG and SIZ file
If you are just beginning to test a large portfolio that has 20+ years of data for most symbols (instruments), and you are interested in testing only from 1997 forward, then you would want to specify STARTDATE = 19970101 on the Initial Size page.
Lets further assume that you are trading a medium-term system, and that the vast majority of trades are of a duration of one year or less. Then, on the Resources page of the SIG file, you would specify STARTDATE = 19950601.
In this scenario, when you run the SIG file, Mechanica would start reading data on June 01, 1995. Then, when the Position Sizing rules are run, the system would be up to speed (in fact, it may have already entered and exited one or more trades in many markets), and Mechanica would slam on all trades in progress as of Jan 01, 1997, which is the STARTDATE specified on the Initial Size page.
Using STARTDATE in a SIG file cuts down on trade processing time if your data goes back in time significantly more years than you want to test. Using STARTDATE in a SIZ file slams on all trades in progress as of that date, and allows you to avoid the perils of under-diversification as your portfolio gets up to speed.
This mode of operation accommodates creating simulations for traders who watch the markets continuously, and will take actions that are influenced by these updated calculations, throughout the trading day.
The type of Category-related keywords that are updated during the trading day, as each new trade is processed, include TOTALRISK, SYSTEMRISK, SECTORISK, SYMBOLONGRISK, etc.
Include Today NO
In this mode, risk calculations are updated once, at the end of each trading day. This mode is for use by end-of-day traders, who base all of today’s trading decisions on the various figures available as of yesterday’s close. The difference in these two modes is demonstrated in the following section.
The SortList is covered in detail in Lesson - Misc. but a brief description is included here for the sake of continuity.
SORTLIST[n]; n = 1 to 4
SortList values are created when the Signal Rules are run; these values are later used by Initial Size when the Position Sizing rules are run.
A SortList defines the order in which trades are Initially Sized.
The System Parameters dialog is accessed via the Position Sizing menu (select Sysparam Manager), as shown above. (It is also available as an option under the Signals menu.)
SYSPARAM[n]; n = 1 to 15
The SYSPARAM[n] keyword associates a specific value with a specific system number. It is in essence a function that returns the value entered in the System Parameters table, and it internally tracks which system it is associated with. It is legal anywhere on the Initial Size or Resize page(s).
The value for each instance of SYSPARAM[n] is assigned in the System Parameters dialog box under the Sysparam Manager option (Signals or Position Sizing menu).
The System Parameters dialog box will accommodate multiple SYSPARAM[n] values for a single system (each system can have up to 15 unique SYSPARAM[n] variables). For example, your entries might look something like this:
In the example above, Systems 5 and 6 have only one value each, for SYPARAM.
System 7, on the other hand, makes use of four unique SYSPARAM[n] values.
The SYSPARAM[n] keyword might be used on the Initial Size page for uniquely weighting different systems (as shown in the example below), or on the Resize page, to resize some systems more aggressively than others.
MEMORY = (.01 * TOTALEQUITY) / NEWRISK
NEWCONTRACTS = MEMORY * SYSPARAM