Tuesday, January 9, 2018

System Trading Full Year Performance 2017

Happy new year 2018! Time flies and it is another new year! It is time to review previous full year performance of my trading system which I am currently trading live. 

This is a momentum and trend following strategy which I didn't have any post about it before in this blog. It is one of my best trading system, based on 10 years backtesting from 2007 to 2016, the average annual return is around 30% with 19% maximum draw-down. From the equity curve it is the most stable system which I have developed, hence I choose this system as my first trading system to trade. 

Let's examine the full years performance of 2017 below

Automated Trading System 2017 Performance

From the charts and table above the trading system annual return is about 79% and maximum draw-down is about 10%. From the "Profix Table" it made consistent profit every month except May.  The performance certainly exceeds my expectation and I have to thanks to the bull market in 2017. I will continue trading this system live and follow it strictly in year 2018.   

Note: The result above is forward testing or real performance (almost, I admitted that I have fixed some minor issues but I don't think the fixes affect the result that much).

Thursday, August 17, 2017

Which KLSE sector is hot?

Experienced traders should be aware of sector rotation strategy in share market. From economy and government policy perceptive, certain economic conditions and government policies favor certain sectors or industries. For example, low exchange rate of Malaysia Ringgit to US Dollar benefits the stock of companies in export related business. It is not surprised that stock price of some of these companies increased several folds few years ago when Malaysia Ringgit was dropping drastically against US Dollar. Another example is, earlier this year, all of the technology and semiconductor industry related shares were running hot due to demand of mobile phones and IOT devices. Buying a stock which is in rising sector not only increases the probability to win but we could potentially win "big" by riding on the wave of big up trend of the sector.

To identify sector trend, we could group stocks which are in same industry/sector and create a index for the sector. However, to simplify the process, we could actually use the bursa sector index series which are readily available. The EOD data of the indexes should be available too if you subscribe to any EOD data service. The sector index series are


  • Construction
  • Consumer Product
  • Finance
  • Industrial Product
  • Mining
  • Plantation
  • Property
  • Technology
  • Trading/Services
  • Industrial
Then, in Amibroker we create a new watch list and add the indexes above to the watch list. In Analysis windows we set the filter to the watch list as in image below


After that we can just write a few line of code to identify the trend of each sector below by using Amibroker Analysis "Explore" feature
The code is as below:

Filter = 1;

AddTextColumn(FullName(), "Sector Name");
AddColumn(C > MA(C, 200), "Long");
AddColumn(C > MA(C, 100), "Medium");
AddColumn(C > MA(C, 10), "Short");

Note that in the code above, we use MA 200, 100, and 10 to gauge long, medium and short term trends respectively. Whenever the index is above the MA line, we classify the index as uptrend and vise versa. The following is the sample of "Explore" result.


From the "Explore" result, we could see that Technology, Mining and Industrial Product sectors are in long, medium and short term up trend. This could help us to make better trading decision. 

Of cause we would argue that the scan might not help much because Bursa sector index series do not provide us fine grain industry index for example Wood based/furniture producers stock index, steel products producers stock index and etc. To solve this problem, as I mentioned earlier, we could categorize the stock based on our own defined sectors and derived sector indexes from that. Amibroker has some nice features to help us to create our own index but it is out of topic for this post.

Sector trend scan will be run and result will be post to KLSE stock scanners section automatically every week. Please visit KLSE stock scanners section regularly to view the scan results of other scanners too and I am sure you will find them very useful.   

  




Sunday, August 13, 2017

KLSE Sector Trend Scanner

Sector scanner scans sector index for long, medium and short term trend.

Sector scanner result updated on 1/06/2018.

SectorLong TermMedium TermShort Term
KLSE ConsumerUp TrendUp TrendDown Trend
KLSE FinanceUp TrendDown TrendDown Trend
KLSE Ind-ProductDown TrendDown TrendDown Trend
KLSE IndustrialDown TrendDown TrendDown Trend
KLSE MiningUp TrendUp TrendUp Trend
KLSE PlantationDown TrendDown TrendDown Trend
KLSE PropertyDown TrendDown TrendDown Trend
KLSE TechnologyDown TrendDown TrendUp Trend
KLSE Trad/ServDown TrendDown TrendDown Trend
KLSE ConstructionDown TrendDown TrendDown Trend

Friday, August 11, 2017

KLSE 52 Weeks High Stocks

52 weeks high stocks are stocks which hit new high or on high of 260 trading days (52 weeks) period. Warrants are excluded from this scan. 52 weeks high scan result updated on 1/06/2018.

Stock NamePrice
CICB1.280
CLIQ0.720
CLOUD0.350
MSPORTS0.035
PETONE0.055
POLYMER0.170
SONA0.475

Friday, July 7, 2017

KLSE 52 Weeks Low Stocks

52 weeks low stocks are stocks which hit new low or on low of 260 trading days (52 weeks) period. Warrants are excluded from this scan (However, as this scan runs and update automatically, due to data issue, some warrants could be included). 52 weeks low scan result updated on 1/06/2018.

Stock NamePrice
AMTEL0.610
AMVERTON0.910
ARK0.285
ASIAPLY0.085
ASTINO0.760
AT0.065
BLDPLNT8.010
CENSOF0.165
CHEETAH0.380
CHINHIN0.750
CIHLDG1.850
CLIQ0.720
CME0.035
COASTAL1.080
CSL0.010
CVIEW1.360
DIGISTA0.085
DRBHCOMC500.020
DRBHCOMC550.030
EITA1.310
EKSONS0.680
EMETALL0.460
EMICO0.185
FCW0.830
FINTEC0.075
GENTINGC460.010
GENTINGC470.025
GENTINGC490.005
HHGROUP0.185
HLCAP9.790
ICON0.095
IDMENSN0.040
IHS04600082497.500
JADI0.045
JAYCORP0.850
KAREX0.540
KGROUP0.060
KIMHIN1.280
KIMLUN1.460
KINSTEL0.005
KNM0.180
LAFMSIA2.950
LBICAP0.830
LEBTECH1.070
LKL0.140
LNGRES0.135
MALAKOFC100.045
MAYBANKC390.085
MCLEAN0.120
MENTIGA0.510
MGB0.940
MITRA0.465
MPCORP0.060
MSPORTS0.035
MTDACPI0.170
MUDAJYA0.500
NAIM0.610
NETX0.025
OKA1.130
PASUKGB0.115
PELIKAN0.615
PERDANA0.185
PESONA0.265
PETONE0.055
PHB0.025
PPG0.435
PTARAS2.900
REDIDEA0.350
RSAWIT0.290
SAPNRGC500.005
SAPNRGC520.005
SAPNRGC530.005
SAPNRGC540.005
SAPNRGC550.005
SAPNRGC560.005
SAPNRGC570.005
SAPNRGC650.085
SCBUILD0.025
SCOMIES0.070
SEDANIA0.185
SHH0.740
SHL2.460
SKBSHUT0.500
SOLUTN0.140
SONA0.475
SSEB304.567
SYMLIFE0.600
TAFI0.300
TANCO0.095
TASEK7.020
TECGUAN0.910
TGL0.880
TIENWAH1.350
TNLOGIS0.970
TRC0.430
TRIVE0.025
TURIYA0.150
ULICORP1.470
YFG0.005

Thursday, July 6, 2017

KLSE Uptrend Stock List

Uptrend scanner scans stocks which are in long, medium and short term uptrend with decent trading volume.

Uptrend Scan result updated on 1/06/2018.

Stock NamePrice
BPLANT1.300
HIBISCS0.900
KPSCB0.650
LEESK0.890
OPCOM0.805
SCIB0.710
SENDAI0.925

Sunday, July 2, 2017

How to find Uptrend Stocks in KLSE?

Trend following is one of the simplest way to make money in stock market. You identify shares which are in good trend, buy and follow it until the trend change and exit the position. The assumption is: if a share is in good trend now and in the past, it is possible that the trend will continue in future. The entry point is usually not very important and the holding period is from medium to long term. Therefore, trend trading is suitable for beginner and part-time traders.

The winning rate usually is not high but if you manage to catch some of the shares which the trends extended for long time,  the profit will be more than enough to cover your loss in other trades. 

Let's implement a Amibroker trend scanner in this post, yes it should be up-trend to be exact because we can only trade long in KLSE. 

The code is as below:

uptrend = C > EMA(C, 30) AND EMA(C, 30) > MA(C, 50) AND MA(C, 50) > MA(C, 200);
decentVolume = (MA(V, 20) * C) > 3500;
priceRange = C >= 0.5 AND C <= 1.5;
Filter = uptrend AND decentVolume AND priceRange;   

The scanner consists of only 4 lines of code. As I explained in other post before, C represents close price and V represents volume in Amibroker. First line of code filters the stocks which are in short, medium and long term up trend. We do this by mainly using moving average with different periods. The code should be self explanatory. Of cause moving average is only one of the simplest way to identify trends, you can using any other indicator or technique which is suitable. 

Second line of code is just an extra filter to make sure the shares we filtered are trading with good volume so that they are liquid enough to trade. Third line of code filters the price range of the share, in this example, we are only interested in share between RM 0.5 to RM 1.5.   

Last line of code combines all of the conditions together and assigns it to Filter variable which will be used by Amibroker exploration feature to filter the stocks.