OP
Newbie
Joined: Apr 2021
Posts: 19
|
Hi, I'm testing the following script and I've encountered a problem: the transaction costs (787 trades / $16758 total costs = $21 per trade) in the performance report (especially rollover costs -> $12155) seem way too high to me. Especially compared to the costs that are shown to me in the Z12 (4807 trades / $8864 total costs = $1.9 per trade) script. Here is the source code of the script:
function tradeCounterTrend()
{
TimeFrame = frameSync(4);
vars Prices = series(price());
vars Cycles = series(BandPass(Prices,30,2));
vars Signals = series(FisherN(Cycles,500));
var Threshold = optimize(1,0.8,1.2,0.1);
LifeTime = 4*optimize(100,50,150,10);
Trail = Stop = optimize(10,4,20,2)*ATR(100);
MaxLong = MaxShort = -1;
var Regime = FractalDimension(Prices,100);
var RegimeThreshold = optimize(1.5,1.3,1.7,0.1);
if(Regime > RegimeThreshold)
{
if(crossUnder(Signals,-Threshold))
enterLong();
else if(crossOver(Signals,Threshold))
enterShort();
}
}
function tradeTrend()
{
TimeFrame = 1;
vars Prices = series(price());
vars Trends = series(Laguerre(Prices,optimize(0.05,0.02,0.15,0.01)));
Stop = optimize(10,4,20,2)*ATR(100);
Trail = 0;
LifeTime = 0;
MaxLong = MaxShort = -1;
var MMI_Period = optimize(300,100,400,100);
vars MMI_Raws = series(MMI(Prices,MMI_Period));
vars MMI_Avgs = series(SMA(MMI_Raws,MMI_Period));
if(falling(MMI_Avgs)) {
if(valley(Trends))
enterLong();
else if(peak(Trends))
enterShort();
}
}
function run()
{
set(PARAMETERS+FACTORS+LOGFILE+TESTNOW+PLOTNOW);
StartDate = 2010; // further back due to WFO
EndDate = Now; // fixed simulation period
BarPeriod = 60; // 1 hour bars
LookBack = 4*500; // needed for FisherN()
Capital = 10000;
if(Train) Detrend = TRADES;
assetList("AssetsGP-org");
NumWFOCycles = 10; // activate WFO
NumCores = -1; // multicore training (Zorro S only)
ReTrainDays = 147;
if(ReTrain) {
UpdateDays = -1; // update price data from the server
SelectWFO = -1; // select the last cycle for re-optimization
reset(FACTORS);
}
// portfolio loop
for(listed_assets) {
while(algo(loop("TRND","CNTR"))) {
asset(Asset);
// method 1: invest 1% of the balance in any trade
//Margin = 0.01 * (Capital + ProfitClosed);
// method 2: invest 50% of Optimal-F
//Margin = 0.5 * OptimalF * (Capital + ProfitClosed);
// method 3: invest the square root of the component profit
Margin = 0.5 * OptimalF * Capital * sqrt(1 + ProfitClosed/Capital);
if(Algo == "TRND")
tradeTrend();
else if(Algo == "CNTR")
tradeCounterTrend();
}
}
} Here is my asset list: Name,Price,Spread,RollLong,RollShort,PIP,PIPCost,MarginCost,Leverage,LotAmount,Commission,Symbol
AUD/USD,0.72503,0.00003,0.0241,-0.0581,0.0001,0.1,-1,0,1000,0.8,AUD/USD
EUR/CHF,1.1304,0.00011,0.0694,-0.1845,0.0001,0.101,-1,0,1000,0.8,EUR/CHF
EUR/USD,1.1702,0.00003,-1.1774,0.4444,0.0001,0.1,-1,0,1000,0.8,EUR/USD
GBP/USD,1.3189,0.00009,-0.7095,0.2335,0.0001,0.1,-1,0,1000,0.8,GBP/USD
USD/CAD,1.2951,0.00008,0.1074,-0.2356,0.0001,0.076,-1,0,1000,0.8,USD/CAD
USD/CHF,0.96595,0.00009,0.6245,-0.9765,0.0001,0.101,-1,0,1000,0.8,USD/CHF
USD/JPY,112.37,0.005,0.3485,-0.924,0.01,0.09,-1,0,1000,0.8,USD/JPY
XAG/USD,14.18,0.008,-0.003,0.00138,0.01,0.5,-1,0,50,0.8,XAG/USD
XAU/USD,1202.74,0.05,-0.0121,0.00275,0.01,0.01,-1,0,1,0.8,XAU/USD
GER30,12181.07,1.27,-0.32,-0.08,0.01,0.011702,-1,0,1,0.8,GER30
NAS100,7498.5,1.6,-0.54,0.06,0.01,0.01,-1,0,1,0.8,NAS100
SPX500,2905.3,0.4,-0.59,0.06,0.01,0.01,-1,0,1,0.8,US500
UK100,7294.1,2,-0.6,0.32,0.01,0.013188,-1,0,1,0.8,UK100
US30,26283.3,2.5,-1.46,0.12,0.01,0.01,-1,0,1,0.8,US30 Here is the Performance Report: WFA Test Test
Simulated account AssetsGP-org
Bar period 1 hour (avg 86 min)
Total processed 98854 bars
Simulation period 2010-05-03..2021-04-14 (66302 bars)
Test period 2014-07-22..2021-04-14 (40685 bars)
Lookback period 2000 bars (17 weeks)
WFO test cycles 9 x 4520 bars (38 weeks)
Training cycles 10 x 25617 bars (220 weeks)
Montecarlo cycles 200
Simulation mode Realistic (slippage 5.0 sec)
Capital invested 10000$
Gross win/loss 172524$ / -133319$ (+143168p)
Average profit 5825$/year, 485$/month, 22.40$/day
Max drawdown -17516$ 44.7% (MAE -18534$ 47.3%)
Total down time 59% (TAE 99%)
Max down time 74 weeks from Jan 2019
Max open margin 3602$
Max open risk 9422$
Trade volume 24771238$ (3680543$/year)
[b]Transaction costs -1857$ spr, -410$ slp, -12155$ rol, -2336$ com[/b]
Capital required 3109$
Number of trades 787 (117/year, 2/week)
Percent winning 46.0%
Max win/loss 8193$ / -1618$
Avg trade profit 49.82$ 181.9p (+1740.4p / -1145.5p)
Avg trade slippage -0.52$ -1.9p (+16.5p / -17.5p)
Avg trade bars 342 (+424 / -272)
Max trade bars 3189 (27 weeks)
Time in market 663%
Max open trades 11
Max loss streak 11 (uncorrelated 11)
Annual growth rate 26.71%
Profit factor 1.29 (PRR 1.17)
Sharpe ratio 0.70 (Sortino 0.75)
R2 coefficient 0.000
Ulcer index 14.2%
Scholz tax 27041 EUR For comparison the performance report with Z12 script (same asset list, same time period): WFA Test Z12 (TICKS)
Simulated account AssetsGP-org
Bar period 4 hours (avg 338 min)
Total processed 24044 bars, 184654056 ticks
Simulation period 2010-04-29..2020-12-24 (16561 bars)
Test period 2013-09-26..2020-12-24 (11238 bars)
Lookback period 500 bars (16 weeks)
WFO test cycles 19 x 591 bars (19 weeks)
Training cycles 20 x 5323 bars (178 weeks)
Montecarlo cycles 200
Simulation mode Realistic ticks (slippage 5.0 sec)
Gross win/loss 108085€ / -74941€ (+1198083p)
Virtual win/loss 115521€ / -82039€
Average profit 4576€/year, 381€/month, 17.60€/day
Max drawdown -2976€ 9.0% (MAE -3149€ 9.5%)
Total down time 67% (TAE 95%)
Max down time 24 weeks from Oct 2018
Max open margin 1300€
Max open risk 650056€
Trade volume 18149080€ (2505904€/year)
[b]Transaction costs -1272€ spr, -2.64€ slp, -5650€ rol, -1940€ com[/b]
Capital required 3215€
Number of trades 4807 (664/year, 13/week, 3/day)
Percent winning 51.3%
Max win/loss 926€ / -924€
Avg trade profit 6.89€ 249.2p (+1583.1p / -1158.2p)
Avg trade slippage -0.0005€ -0.0p (+19.3p / -20.4p)
Avg trade bars 41 (+44 / -38)
Max trade bars 1204 (40 weeks)
Time in market 1792%
Max open trades 41
Max loss streak 21 (uncorrelated 12)
Annual return 142%
Profit factor 1.44 (PRR 1.38)
Sharpe ratio 1.29 (Sortino 1.34)
Kelly criterion 1.16
Annualized StdDev 111.13%
R2 coefficient 0.920
Ulcer index 3.0%
Scholz tax 8742 EUR
Cycle performance 1.35 1.48 1.48 1.46 Can anyone see what is causing the high transaction costs in the script? Greetings and thanks for your help, Simon
Last edited by simonkrebs; 04/15/21 08:55.
|