paism.ini (revised again) - 06/18/2001, Werner has added Productivity as column to PAISM.ini. Uptrends can become downtrends and vice versa so knowing that a high TR stock is also a high productivity stock is not necessarily Nirvana, but knowing that even if the trend reverses almost any momentum or trend following plan will continue to track that investment well should at least be comforting. This version of PAISM includes the Trend Ratio as well as the relative std dev of the stock/fund to the index. Relstdev gives you some idea what kind of volatility you are getting yourself into. This file is derived from the PRISM.ini file that Werner posted several months ago. Werner has added the Trend Ratio for each stock to the PAISM print table. Since stock volatilities are less consistent over time than funds or indices he reduced the averaging period for the stdev's to 1 year from 3 years. Those stocks with high Trend Ratios are more likely to trend well ahead of their daily price changes than those with low Trend Ratios. When you compare high TR (Trend Ratio) stocks to low TR stocks, more buy signals end profitably because the stock is more likely to end its rally with less daily volatility and well above the buy signal. Use with Tradefr. He prefers the Accutrack (A-chart) measure of relative strength over the R-chart so he replaced R with A. The parameters for all the charts have been shortened for use primarily with stocks and Rydex-type sector funds. The idea is to be able to filter through a large number of stocks and present a limited number of candidates that all show similar momentum characteristics. The buy condition is defined by any 3 of the 5 charts triggering buys. The sell is any 3 of 5 going to sell. For my use the buy condition is the more important because that is what gets the stock to the top of the list. Selling can be based on anything you like but the primary intent of PAISM is to narrow the field and present buy candidates. The sell is basically a mechanism for resetting the signal. Alternatively, you can use the sell signal as a line-in-the-sand to force a decision if you haven't already sold. The buy condition for both stochastic and Rsi charts are buy at 45, sell at 70. That means that any individual stock could be locked in or locked out for a while but since there are 5 charts, the other 3 can break the lock. The first output table is a summary of the number of members of the family that are on buy signals. The second table is a data summary sorted on the individual signal in the first column. The second column is the relative Stdev of the stock to the index. The third column "<S20 10d" tells you if the stochastic of the stock was below 20% during the last 10 days. The purpose is to try to identify those new buys that are recovering from deeply oversold conditions. A "1" in that column means "yes", this stock was less than 20 on the stochastic sometime during the past 10 days. This column is only relevant when looking at very recent buys. Since Werner uses this for stocks the fourth column is the price. The last two columns tell you how long the current signal has been on and the returns for the current signal. The candidates that meet both criteria, a buy signal and a recent excursion below 20 on the S chart, all look very much the same on the charts. Werner did not add the S<20 requirement to the signal because he thought that would be too limiting but you can, of course, ignore those buys that don't meet this condition. The mechanics of building stock families to use in Trade is relatively straightforward. 1. Bring the stock family of interest up in FT4Win, say S&P5002. Save the family under a different name to create a Userdef version of the stock list, say SAP500 3. Use FT4Win Export tab or Steve Munger's STK2FNU to create fnu's of the family. PAISM is set up as a TradeFR file so you run it with: Tradefr paism.ini sap500 > sap.txt Other FT stock families that might be of interest: NDQ100 - NDX100, S&PSC600 - S&P Small Cap 600, S&PMIDCA - S&P Mid Cap 400 Outputs besides the tables; Key families for viewing in FT or FR Note: "X" = family name "Xnew" = all new buys for today "Xbuy" = all current buys "XOS" = subset of "Xnew"that meet the stochastic oversold condition (note: this family is often empty. FT and FR don't react well to trying to bring up empty families so it helps to look at the table output to be sure that the families actually have current members.) onbuy.fnu - a history fnu of the third line the first table, the % of members on buys
paismscore.ini - 06/22/2001, Running PAISM with FT's S&P500 family last night generated 47 new buys. That's 10% of the S&P. (It's amazing what a strong A/D day will do.) Werner finds it difficult to cycle through 47 charts and pick the "best" one for the one open slot in the portfolio. One looks better on the MACD chart, another is coming from deeply oversold but has a lousy Trend Ratio, another has a positive but anemic looking accutrack chart.... what to do? Werner created a helper file that builds a scoring system based on conditions that presumably matter. He says "presumably" because he doesn't really have a way to confirm it other than to learn by doing but they are consistent with the way the stocks are picked in the first place. The PAISM.ini file that he has been posting creates several families. If you run it with a family named "Myfam" it will create 3 families, MyFamNw - a family of all new buys today, MyFamOS - a subset of MyFamNw that met the stoch < 20 in the past 10 days criteria, MyFamBy - a family of all current buys. If you keep the family names to 6 characters or less the suffixes will create 8 character or less family names that can be read into FastRube or FTDOS or FTOOLS. PAISMScore.ini is run after PAISM.ini and uses the family of today's new buys to create a list ranked by score. The heavy lifting in this file was done by Ed Gilbert in Fscore.ini which comes with Trade. It should be in your Trade directory. Werner adapted it to the structure used in PAISM. PAISMScore.ini is a TradeFR file and is run anytime after PAISM.ini is run. PAISMScore takes the family "MyFamNw" created by PAISM and builds a score based on 1. Accutrack Relative Strength vs SP-CP (same AT parameters as PAISM) - Weighted at 20% 2. 5 day Slope value Accutrack (gaining strength?) - Weighted at 25% 3. High Trend Ratio (trendiness) - Weighted at 25% 4. Lowest Stochastic value in past 10 days (oversold) - Weighted at 30% (Thanks to Wayne L for this one) Each parameter is weighted by Werner's guess at relative importance. The weights are coded starting on line 21. When he runs the 47 new buys through it the accutrack, slope, TR and Stoc values tend to list from good numbers at the top to bad numbers at the bottom but of course they can't all be in order. That would be too easy. Finally, PAISMScore sorts the "MyFamNW" family by the score and re-saves it. You can then bring the family up in whatever you are using to view the PAISM charts and know that as you cycle through the charts you are cycling from high scores to low scores. If you find that you don't like the top scored charts you can adjust the weights to bring the charts that you like to the top of the heap, then use those weights in the future. There was no intent for PAISMScore.ini to be used as a stand-alone ranking system. The assumption is that the input family have all already met a series of selection criteria that define a "Buy". That's why things like MACD or current Stoch or RSI are not there, they defined the buy. PAISMScore just trys to sort through the fog created by multiple buys and put them into a more useful order. However, the PAISMScore idea could be useful for any other selection system that creates multiple, equally valid candidates, like Turtle for example.
ruttrfamsig.ini (updated) - 08/03/2001, Werner has created several schemes in the past like the RUTTRfamsig.ini where each fund creates its own signal, but he has never really been able to find a way to apply it to a testable strategy. If 5 funds all trigger buys today and you need one fund, which do you buy?... should you sell an "old buy" before it sells and buy a "new buy"? He would imagine that Turtle practitioners have similar issues. This file may be the beginnings of a tool to help figure it out. Starting with RUTTRFamSig as posted today, Werner added some lines to do the following; 1. mark all funds that are on buys as "1" and all funds on a sell as "0". (Vector(famsig) + .5) 2. multiply this marker of 1's and 0's by "productivity" to create a rank : rank = (Vector(famsig) + .5) * prod This rank is either the funds productivity if it is on a buy or 0 if on a sell. The highest ranking fund is the fund on buy with the highest historical productivity when using its own stoch and macd signal. The third table in the Printout shows this rank; note that all funds on sell have zero value. The problem with this rank is that during down markets all of the funds are likely to be on sell so any mechanical trading strategy will find itself buying funds on sells. The only way around this that he has found is to signal the strategy to a sell when the number of buys falls to some minimum value, a value that ensures sufficient funds on buys to exceed the HoldMaxRank value in the trading strategy. 3. Create an A/D signal based how many members of the family are on buys. sumbuys = FamSum(Vector(famsig) + .5) buypc = sumbuys / FamSum(fund - fund + 1) buytrigger = .2 selltrigger = .8 adsig.Buy = Signal(buypc - buytrigger) Or Signal(buypc - selltrigger) adsig.Sell = Signal(buypc - selltrigger) Or Signal(buypc - buytrigger) This signal buys when the number of buys exceeds 20% of the family and sells when the number of buys drops to 80%. To prevent lockouts and lockins, the signal can rebuy if the percentage passes back above 80% after selling and it will also sell if the percentage falls back below 20% after buying. The signal produced this way, "adsig", is not half bad. This is now a completely self-contained, self-signaling trading strategy. It's performance depends entirely on interactions among the family of funds. It should be a coherent group of funds which all march to the same drummer, they just don't all march in step. Some of the tables could be merged eventually but at the moment the first two tables are unchanged from this AM, the 3rd table highlights the signal status, the % of funds on buys and then displays the ranking table. That ranking table is used to buy funds when the A/D signal is on a buy. The HoldMaxRank is 6 and the minumum number of buys to keep the signal on is 20 (20% of 100) so there will always be enough funds on buys for the ranking table to be meaningful. The last table is the trading module and it shows pretty decent results, AnnRet 53.3%, Mdd 15.5% on 08/05/98 but not better than NCalpha or Sharpe ranking schemes. The difference is that NCalpha/ Sharpe trading depend on an external signal while this plan is self-signalling. Also, this strategy does not take fund volatility into account. However, it might be worth watching for a while. It needs three more funds to go to buys for an adsig buy signal.
rutvol.ini(revised) - 08/21/2001, All of the output data in the tables assume full FT database length data. The signal does not depend on the fund that it's acting on so if you bring RYMKX up with a TTI22 chart and RUTVOL as the signal you will see S/Y of 3.8 over the life of RYMKX (199 days) with a %Risk of 21.2% and an Mr of 20.2%. That means that you make 20.2% while invested for 42 days out of the past 199 (21.2%), or a 138% annualized productivity. But it is hard to compare this to anything else unless you look at everything over the same time frame. That's why Werner has picked 4 indices that cover the entire database. The simplest way to look at trading results on specific investments (other than the FT screen above) is to add a simple [SignalPairTrade] module to the end of the file [SignalPairTrade] Fund = RYMKX Index = fdrxx Signal = rutvol Werner has been looking at how to use volume as a decision criteria for both small cap diversified funds and the techies. He posted a chart yesterday that showed the 60 day Ema of NASDAQ volume with a 40 day stochastic to track its momentum. When you compare this chart with NDX-X you find several interesting types of rallies. 1. The ideal case obviously is a rally that starts with shrinking volume on the downside, then builds up in volume throughout the rally. The rally ends with shrinking volume choking off the buying. The run from early Apr of this year to mid May is as good an example of that as any. 2. Some rallies start with high volume from the prior sell-off and just reverse direction with no noticable change in volume. The rally in late Dec '00 started that way. It ended in dying volume. 3. Some rallies transition to downtrends with no change in volume. The end of the bubble in March of '00 completed its first stage crash in mid April before the volume started to falter. It is clear that volume alone does not determine direction. Not all rallies or corrections end in lowered volume. But if you think about the above cases for a while it is clear that holding off buying into a rally until the volume picks up is a good thing to do. Also, preparing to sell quickly when the volume dries up during a rally is also a good thing to do. Run with : Trade ruttr.ini rutvol.ini > output.txt This will ensure that ruttr is updated ahead of rutvol.ini. To get NSADL that the script asks for, run FastRube or TRIN.ini
alphabeta.ini, scmcfin.fam, fbrsx.fam - 08/22/2001, Werner set up some financial stock families to work with for building an FBRSX family. Keep in mind that FT stock families must be converted to fnu's for Trade to read them. You can use the FT's Export Tab (no $ sign) or STK2FNU to create the fnu's from the family names. All of the data inputs are near the top of the file. fund = ScMcFin FamOr fbrsx.fam Delete(fbrsx, ScMcFin) index = fbrsx lookback = 126 candidates = Family(FED, BHL, MFSF, SCFS, BFD, LFIN, PCCI, PFSL, TMA, FAB, FPFC, PORT, QCBC, HIFS, PFSB, SBMC, AMFH, JXVL, WRO, KFBI, TSBK, FFFD) ScMcFin is FT's S-FINANC stock family And'd with Cap-SC-S and Cap-MD-S to leave just small and mid cap finance stocks. FBRSX.fam is the current M'star list of FBRSX's current portfolio. The first line above puts the two families together just to be sure that all relevant stocks are in the base family. The Delete command save some RAM if the families are large. It should agree with the families in the line above. It also clears FBRSX.fam from RAM so that FBRSX fund prices can be referenced later in the file without confusing Trade. Index is the target index (or fund) for the portfolio. Lookback is the number of market days used for alpha, beta, etc. Pick a number! Werner thinks it takes at least 6 months to reasonably characterize the statistics of stocks. The standard number appears to be 3 years. The Candidate family is currently the same list that is in FBRSX.fam, the current M'star list of stocks. It can be changed to any list that you want to try. The purpose of the AlphaBeta file is to create a systematic methodology for constructing this candidate list. The first table printed (sampled below) is the list of all stocks, sorted by alpha and including beta, corr., etc. Clearly there is something weird happening with FNV but the others are typical numbers. Note some negative correlations to FBRSX. Positive alpha means that the stock is outperforming the reference index, FBRSX, on a volatility-adjusted basis. Note, NHP has very low beta because of its very low correlation to FBRSX even though it is 4 times more volatile (Rel StDev), yet is performing well (alpha > 0). In effect alpha and beta of a stock are only meaningful when considering the impact of placing the stock into a portfolio based on the reference index. Alpha Beta Corr StdDev-F Rel StDv FNV Finova Group 1.63 -0.10 0.00 53.48 33.36 CIT CIT Group/Disc 0.68 -1.41 -0.13 17.49 10.91 CHFC Chemical Financial 0.29 -0.89 -0.08 17.35 10.82 NHP Nationwide Health Prope 0.26 0.09 0.02 6.75 4.21 The second table is just the current portfolio candidates extracted from the table above, summarizing the same data for easy reference. The third table is a summary of the family average of the candidate portfolio compared to the reference. The current candidates are M'Star's top 25 holdings. This group is outperforming (vol-adjusted) FBRSX itself (alpha = .02) but is slightly more volatile (Rel Stdv = 1/29). The idea is to find stocks with higher alpha and lower beta to add to (or substitute) in the candidates list, then recompute and see if things improve. 8/21/01 8/20/01 8/17/01 8/16/01 8/15/01 Alpha 0.02 0.02 0.02 0.02 0.02 Beta 1.16 1.16 1.15 1.15 1.14 Corr 0.90 0.90 0.90 0.90 0.90 StdDev-F 2.06 2.07 2.07 2.07 2.07 Rel Stdv 1.29 1.29 1.27 1.27 1.27 None of this is a guarantee of future performance of course. The terms that form beta are relatively stable over time but the returns that go into computing alpha are less likely to be stable over time. There still has to be some fundamental or technical rationale for expecting a stock to continue to perform. All MPT tells you is that if it does continue to perform as in the past, this is the likely impact of adding it to your target portfolio.
datatest.ini(revised) - 08/23/2001, This script looks for "0s" and wild swings in everything except non-price indicators, which always have large swings. If you get a zero in a bunch of indices or wild swings in compound growth indices then there is probably something wrong.
intjunk.ini - 08/30/2001, International Junk Bonds (Brady Bonds); Most international investments denominated in dollars key off the strength of the dollar. Comparing the Family Average of FT's BD-INTLJ Family (international junk bonds) to the dollar index, DXY-Z, it is clear that most rallies in these bonds trigger off downward breaks in the dollar index. Yet, once a rally starts it can continue even if the dollar recovers for a while. That calls for some kind of relative strength comparison, like accutrack. But relative strength can't help when both sides of the comparison are going down (like 1998) so an absolute trend or momentum measure is helpful. Here is a 3-chart FT screen for tracking Int'l Junk bonds. (This chart is similar to an old Bob Stern's chart and may have wider application.) The Stochastics parameters are the same ones he used in RutVol.ini. P = TTAAS(S), F = Family Avg BD-IA, I = DXY-Z, A = 5, 34; S = 41, 10, 8 Buy on the A chart supported by strength in the S chart, sell on weakness in either chart. The Trade file tests this A & S chart pair backward. It creates a signal from the A chart, intdxy.sig, a signal from the stochastic chart that buys on up-crossings of 20, 50 and 80, and sells on crossings of 80, 50, or 20, (no lockouts), intstoch.sig, and a combo signal that buys on both, sells on either, intjunk.sig. Werner isn't sure how many Int'l junk funds will tolerate the occasional whipsaws but PREMX at least has no redemption fees. The latest buy signal 8/10 was late because the stochastic didn't fall below 20 and had to wait for the 50 crossing before triggering a buy. That's a good reason for looking at the charts. The major break in the dollar was obvious by 7/26 and a buy anywhere between 7/26 and 8/3 would have been much better. Yes, the parameters are optimized. The charts and signal will work until they stop working.
bullpc2.ini, bullpc2.bat - 10/25/2001, This modified bullpc.ini, called bullpc2.ini, computes the bullish % stocks in the SP500 and NDX100 families using FastTrack stocks data and with exactly the same bullish definition, 5% above its 150 day Ema. You need at least the stocks1 database and it helps to have Steve Munger's STK2FNU so that everything can be run in batch mode. First use FT4win to create duplicate families of the SP500 and NDX families for Trade to use. They are in the Components of Indices group in FT and should be saved as sp500fnu.fam and ndxfnu.fam to be compatible with the bat file attached. These families will have to be updated periodically. The attached Tradeft file and bat file will compute the bullish % for the SP500 (spbpc.fnu) and the NDX100 (ndbpc.fnu). The bat file also runs bullpc.ini for the selects and puts all three outputs into one text file, bullpc.txt. The form of the Tradefr command to run bullpc2.ini without the bat file is: Tradefr bullpc2.ini famname XX (where XX is a two letter prefix for the fnu name. Trade will apply the "bpc" suffix). There are lots of obvious flaws here, not the least of which is that today's memberships in the SP500 and NDX100 are not the same memberships as in the past so looking back in time with an fnu is problematical. But it is what it is and may even be useful. The SP500 had the lowest bullish % in the FT database history on 21 Sept but that's not a lot of history and even that is flawed as discussed above. Currently, the SP500 Bullish % is 14.26% and the NDX bullish % is 10%. Thresholds of 15% to 20% and 80% to 85% for the stock families would seem reasonable when you look across the entire database.
cci.ini - 11/26/2001, Here is a plain vanilla Trade file that computes the CCI for any crunch period. It is slightly different from FastRube in that this file produces a "rolling crunch", ie. there is a value for every day based on the prior N-day crunch period. FastRube only produces one value for each crunch period because the charts convert to bar charts when you crunch the data so there is only one CCI datapoint per bar. The file is set up to run the select family and to output the fnu's for cci (ccind.fnu) and a smoothed cci (cciav.fnu) for FSELX. If you change the family you MUST change the name of the fund in the two WriteFile's to be members of the new family or comment them both out. The printout contains 2 tables, the first is sorted alphabetically and is the data used to get the CCI values and the second is sorted by CCI. It would seem reasonable because of the similarity with stochastics to intrepet the charts in a similar way.
rutvol.ini (revised) - 11/27/2001, Werner's original RUTVol.ini contained a typo for one or the fnu's created to help study the relationships between price and volume. the 120 Ema of Up volume fnu was screwed up. The only thing affected was the fnu itself. All of the internal signal computations are unaffected.
NCAlpha.ini (revised) - 11/30/2001, Margin rates have fallen dramatically this year, just as MM rates have fallen dramatically. The Sharpe ratio uses the cost the carrying the investment on margin as the basis for its risk assessment. Prior versions of NCAlpha.ini have been carrying 8% as the margin rate. Since rates have fallen so dramatically, using a fixed lower rate across the entire database would be unrealistic so Werner modified the code to make the margin rate 2.5% above a MM rate, like fdrxx. That way the margin rate is more realistic across the entire database. Werner also edited the strategy analysis at the end to leave out fama.fnu. Fama is the original accutrack 11 48 trading strategy computed externally by FamTradeA.ini. Putting that in seemed to cause endless problems for users. If you do run FamTradeA.ini, go to line 320 and remove the ";" in front of the FamOr statement. fund = Family(ncalp, sharp, mdsdf, losdf) ;FamOr Family(fama)
updnanalysis.ini - 12/07/2001, This script takes detailed look at the upday / downday statistics of family of funds or stocks. It computes the %updays, %downdays, Max UPday%, Max Downday %, and Avg % gain on updays and avg % loss on downdays. This data set highlights a lot of differences about how funds do business.
vixhays.ini - 12/10/2001, Werner thanks Dr. Alan Cohen for highlighting this one from Don Hays' newsletter last week. Hays was touting a shorter term signal using VIX (shorter than his usual century-long view of the universe). In simple english, buy when VIX passes up through 40, sell when VIX goes down through 20. Very nice except that this cycle has only been completed once in the history of VIX, between 8/28/98 and 23/23/98, making 19.6% on the S&P. The second signal started on 9/17 and is ongoing and profitable. Try buy on 35, sell on 25 for a little more action but not much more money.
smallcapvolume.ini, ndxvl.fnu - 01/16/2002, Here are ndxvl.fnu and SmallCapVolume.ini which will compute the difference between TVOLQ and ndxvl.fnu as an approximation for small cap volume. It looks like ndxvl has to be multiplied by 100 to be the same units as TVOLQ. Put ndxvl.fnu into your \ft\subdir..
ruttr.ini (revised) - 05/12/2002, The trade version of RUTTR contained offset filters in the MACD and Stochastic histogram which originally gave slightly improved performance over the simple FT-charts version which just had zero crossings for triggers. As had to happen sometime, now after almost 4 years of real time, the filters have caused a lockout. The MACD component went very slightly over the buy threshold on 5/3 but not high enough to reset the sell trigger. Now the stochastic and MACD are negative but the Trade version can't sell. Werner is removing all offset filters. The historical results are marginally poorer but the signal logic is now bulletproof. The FT version of RUTTR sold today, Friday. Since RUTTR is not a same day signal, a Monday sell would be consistent with the signal.
accudist.ini(refreshed) - 08/15/2002, The Accumulation and Distribution spikes are based on William O'Neils work and are produced by Werner's AccuDist.ini from a few years ago.
bottom1.ini(revised, refreshed) - 08/15/2002, ONeils "Bottom1" signal is another of Werner's keepers that Bob Stevens has edited to reflect ONeils upgrade from 1.0% to 2.0% follow through days occuring on increased volume 4-10 days after a recent 5.0% drawdown has occured.
a-sel.ini (refreshed) - 09/15/2002, This file will create a-d, a-d line, mco , and mcs on any family of funds. It is set up for select.fam and shows mymcs.fnu (the summation index) at -699 which is the same as Roy is reporting. The signal is created with crossovers of the 10d Ema and again they agree with Roy's Table. The last buy was 8/6/02. That's the good news. The bad news is the signals are not too good. For the last 5 years RUT/FDRXX shows Ann 3.8%, S/Y 6.6. It is beating B/H though.
intjunk.ini - 04/30/2003, International Junk Bonds (Brady Bonds).Most international investments denominated in dollars key off the strength of the dollar. Comparing the Family Average of FT's BD-INTLJ Family (international junk bonds) to the dollar index, DXY-Z, it is clear that most rallies in these bonds trigger off downward breaks in the dollar index. Yet, once a rally starts it can continue even if the dollar recovers for a while. That calls for some kind of relative strength comparison, like accutrack. But relative strength can't help when both sides of the comparison are going down (like 1998) so an absolute trend or momentum measure is helpful.
hedgecand.ini - 03/04/2004, Ideally we want funds that can maintain a fairly constant (and positive) relative strength to the hedging index fund in both up and down markets. The stronger and straighter the relative strength line, the higher the amount we can allocate to the managed funds and the less we have to apply to the hedge (index) position to control Mdd. It turns out that high NCAlpha and Sharpe ranked funds are often good hedging candidates but the criteria outlined above are more stringent that just good volatility-adjusted performance. We want straight relative strength lines. This file computes the best fit straight line to the funds' relative strength (vs RUT-I) and then computes the deviation from that straight-line. The "slope" column is a measure of the steepness of the slope of the best fit (linear regression) line. The second column is the standard deviation of the difference between the best fit line and the raw relative strength line. In effect a measure of straightness. The lower the number the better. The file automatically censors values greater than .11 as being too non-straight. Actually values less than .05 make some good looking charts. The starting point for the list can be any group of funds that you want to use. Werner used the same pre-selection criteria that Werner uses for NCAlpha, FamCreateA.ini, but expanded the list to 300 funds. Since the selection criteria is more severe he wanted more starting candidates.
hindenberg.ini - 10/04/2005, Published by Werner back in 2000.
Download wg-ini2.ZIP Last updated 10/04/2005