PureBytes Links
Trading Reference Links
|
Hello,A new beta version (4.46.1) of AmiBroker
has just been released.Includes enhancements allowing to auto-adjust data
from Yahoo andability to display tommorrows trades recommendations in
portfolio backtesterwhen using one bar delay.It is available for
registered users only from the members area at:<A
href=""><FONT
size=2>http://www.amibroker.com/members/bin/ab4461beta.exe<FONT
size=2>and<A
href=""><FONT
size=2>http://www.amibroker.net/members/bin/ab4461beta.exe<FONT
size=2>(File size: 516 350 bytes, 516 KB)If you forgot your user
name / password to the members areayou can use automatic reminder service
at: <FONT
size=2>http://www.amibroker.com/login.htmlThe
highlight of this new version is multiple time frame support in AFL.The
instructions are available below and in the "ReadMe" file( Help->Read Me
menu from AmiBroker )
CHANGES FOR VERSION 4.46.1 (as compared to 4.46.0)
scoreNoRotate now works again
small fix in regarding month boundary handling in "Use local time for
daily compression" mode.
AA settings, new switch: "Add artificial future bar". When checked
AmiBroker adds tommorrow's bar and this enables you to see tommorrow's (or
next bar) trade recommendations when your system uses one bar delay.
Artificial future bar is a copy of last available data bar but has of course
incremented date and volume set to zero.
two functions (where present in 4.46.0 but not
documented)IsFavourite() - returns 'true' if current symbol belongs to
favoritesIsIndex() - returns 'true' if current symbol belongs to index
category
CHANGES FOR VERSION 4.46.0 (as compared to 4.45.0)
New AFL functions
added NumToStr as synonum of WriteVal (as this function
did not 'write' anything, just returned string)
added StrToNum( string ) - converts string to numbe
added StrFind( string, substring ) - finds first
occurrence of substring in string. returns 0 if not found, otherwise returns
character index (one-based) of first occurrence
added StrFormat( formatstr, ... ) that performs
sprintf-like formatting and returns string
CategoryGetName( category, number) function - returns
name of category (market/group/sector/industry/watchlist)
CategoryGetSymbols( category, number ) added - synonym
to GetCategorySymbols
CategoryAddSymbol( symbol, category, number ); - adds
the symbol to given category, note that for markets, groups, industries
'adding' means moving from one category to another, since the symbol is
assigned always to one and only one market, group, industry and sector. This
limitation does not apply to watchlists, favorites, and index categories.
When symbol string is empty ("") then current symbol is used.
CategoryRemoveSymbol( symbol, category, number ); -
removes the symbol to given category, note that for markets, groups,
industries 'removing' means moving from given category to category with
number zero, since the symbol is assigned always to one and only one market,
group, industry and sector. This limitation does not apply to watchlists,
favorites, and index categories. When symbol string is empty ("") then
current symbol is used.
added new AFL functions for output/file handling (almost exactly like in C
run-time):
printf( formatstr, ... ) - output formatted text to the
commentary/interpretation (note 1: for numbers always use %f, %e or %g
formatting, %d or %x will not work because there are no integers in AFL,
note 2: as of now only numbers and arrays can now be printed. For arrays
'selected value' is printed)
fopen( filename, mode ) - opens file, returns
filehandle . Mode can be "r" - for reading, "w" for writing, "a" for
appending (and all other regular C-runtime library modes)
fclose( filehandle ); - closes file
fputs( string, filehandle ) - puts (writes) string to
file
fgets( filehandle ) - gets (reads) string from file
(returns string)
feof( filehandle ) - detects end-of-file marker ( gives
True - if end of file reached )
PositionScore table is now shifted according to buy trade delay in regular
mode too. (it was shifted so in rotational mode already). Caveat: make sure to
set long and short delays to the same values if you are trading both long and
short sides, otherwise only long trades get correct ranks. Note 2:
PositionSize is not and was never shifted with trade delaysto allow code
for purchasing N stocks working with any delay, example PositionSize = 5 *
BuyPrice
added new option to File->Database Settings->Intraday settings "Use
local time for daily compression".All previous versions used exchange or
data vendor time to do build daily bars (this means that regardless of your
time shift settings daily bars looked the same because they used exchange or
data source time (for example if you are using QuoteTracker it was US EST
time) - this caused problems for Australian users using QuoteTracker as data
source because QuoteTracker reported ASX quotes with US time that lead to
invalid daily bars. Now if you check "Use local time for daily compression"
AmiBroker will use your local time (according to 'time shift' setting) to
build daily bars. Note that switching this on means that daily bars may look
different when you change time zone (i.e. time shift setting)
ASCII importer: support for importing unadjusted Yahoo data performing
adjustment on the fly:
new field ADJCLOSE - to read adj. close column from
Yahoo. Works _only_ in conjunction with CLOSE field. When both CLOSE and
ADJCLOSE are present in the ASCII format definition then importer calculates
split factor by dividing ADJCLOSE/CLOSE. It then multiples OPEN, HIGH, LOW
and CLOSE fields by this factor and divides VOLUME field by this factor.
This effectively converts unadjusted prices to split adjusted prices. Split
ratio gets locked once ADJCLOSE drops below 0.05.
new command $ROUNDADJ decimaldigits - causes
split-adjusted prices (see above) to be rounded to 'decimaldigits'
precision. By default no rounding is done.
new command $RECALCSPLITS 1 - (off by default) causes
that splits are recalculated by AmiBrokerby the algorithm that tries to
construct correct adjusted price, based on inaccurate information provided
by Yahoo.Note that Yahoo provides only 2 decimal digits in adj. close
field therefore the more adj. close approaches zero due to adjustements the
error grows. The option $RECALCSPLITS 1 is intended to address this problem
(at least partially).It works as follows:1. for each bar ratio
ADJCLOSE/CLOSE is calculated2. if the ratio changes in two consecutive
bars by more than 10% it means thatsplit happened that bar. True split
ratio is guessed by matching true fractionin the format of X/Y, where X
and Y = 1..9, to the change in ratios.3. Then true split ratio is used
to adjust all past bars until new split is detected.
new command $RAWCLOSE2OI 1 - (off by default) - causes
that OpenInterest field gets assigned CLOSE (raw close) field value
multiplied by 100
new aqh.format file included in "formats" subfolder using new ASCII
importer commands to import and adjust prices from Yahoo. Compatible with
existing AmiQuote versions. Best regards,Tomasz
JaneczkoHope this helps.
AmiBroker 4.46.1 Beta Read Me
October 23, 2003 17:38
THIS IS A BETA VERSION OF THE SOFTWARE. EXPECT BUGS !!!
Backup your data files and entire AmiBroker folder
first!
INSTALLATION INSTRUCTIONS
IMPORTANT: This archive is update-only. You have to install full
version 4.40 first.
Just run the installer and follow the instructions.
Then run AmiBroker. You should see "AmiBroker 4.46.1 beta" written in the
About box.
See CHANGE LOG below for detailed list of changes.
HELP ON NEW FEATURES
New backtest report
New report is hugely enhanced compared to old one. It includes separate
statistics for all, long and short sides as well as large number of new metrics.
You can get short help on given figure by hovering your mouse over given field
name. You will see the description in the tooltip. Short explanations are
provided also below:
Exposure % - modified since last release
-'Market exposure of the trading system calculated on bar by bar basis. Sum of
bar exposures divided by number of bars. Single bar exposure is the value of
open positions divided by portfolio equity.
Net Risk Adjusted Return % - Net profit % divided by
Exposure %
Annual Return % - Compounded Annual Return % (CAR)
Risk Adjusted Return % - Annual return % divided by Exposure
%
Avg. Profit/Loss - (Profit of winners + Loss of
losers)/(number of trades)
Avg. Profit/Loss % - '(% Profit of winners + % Loss of
losers)/(number of trades)
Avg. Bars Held - sum of bars in trades / number of
trades
Max. trade drawdown - The largest peak to valley decline
experienced in any single trade
Max. trade % drawdown - The largest peak to valley
percentage decline experienced in any single trade
Max. system drawdown - The largest peak to valley decline
experienced in portfolio equity
Max. system % drawdown - The largest peak to valley
percentage decline experienced in portfolio equityRecovery
Factor - Net profit divided by Max. system
drawdownCAR/MaxDD - Compound Annual % Return divided by
Max. system % drawdown
RAR/MaxDD - Risk Adjusted Return divided by Max. system %
drawdown
Profit Factor - Profit of winners divided by loss of
losers
Payoff Ratio - Ratio average win / average
lossStandard Error - Standard error measures chopiness
of equity line. The lower the better.
Risk-Reward Ratio - Measure of the relation between the risk
inherent in a trading the system compared to its potential gain. Higher is
better. Calculated as slope of equity line (expected annual return) divided by
its standard error.
Ulcer Index - Square root of sum of squared drawdowns
divided by number of bars
Ulcer Performance Index - (Annual profit - Tresury notes
profit)/Ulcer Index'>Ulcer Performance Index. Currently tresury notes profit
is hardcoded at 5.4. In future version there will be user-setting for this.
Sharpe Ratio of trades - Measure of risk adjusted return of
investment. Above 1.0 is good, more than 2.0 is very good. More information <A
href="">http://www.stanford.edu/~wfsharpe/art/sr/sr.htm
. Calculation: first average percentage return and standard deviation of returns
is calculated. Then these two figures are annualized by multipling them by ratio
(NumberOfBarsPerYear)/(AvgNumberOfBarsPerTrade). Then the risk free rate of
return is subtracted (currently hard-coded 5) from annualized average return and
then divided by annualized standard deviation of
returns.K-Ratio - Detects inconsistency in returns.
Should be 1.0 or more. The higher K ratio is the more consistent return you may
expect from the system. Linear regression slope of equity line multiplied by
square root of sum of squared deviations of bar number divided by standard error
of equity line multiplied by square root of number of bars. More information:
Stocks & Commodities V14:3 (115-118): Measuring System Performance by Lars
N. Kestner
Optimization in new portfolio backtester
|