Convexity, Concavity and their use

Discussion in 'Technical Analysis' started by TSOKAKIS, Sep 26, 2003.

  1. An ideal sinusoidal has 4 phases:

    Convex AND Ascending;// colorDarkGreen
    Concave AND Ascending;// colorTurquoise
    Concave AND Descending;// colorDarkRed
    Convex AND Descending;// colorPink

    The AFL* code illustrates the example

    // The 4 phases of an ideal sinusoidal
    freq = 1;
    y=sin( Cum( freq/10 ) );
    t=1;
    Convex=(y-Ref(y,-t))/t>=(y-Ref(y,-(t+1)))/(t+1);
    Concave=NOT(Convex);
    Ascending=y>=Ref(y,-1);
    Descending=NOT(ascending);
    Bullstart=Convex AND Ascending;
    Bullend=Concave AND ascending;
    Bearstart=Concave AND Descending;
    Bearend=Convex AND Descending;
    Color=IIf(Bullstart,colorDarkGreen,IIf(Bullend,colorTurquoise,IIf(Bearstart,colorDarkRed,colorPink)));
    Plot(y,"",Color,8);

    [see sin.gif]
    We shall use a smoothing procedure [IIR2 filter **] as close to the sinusoidal as possible. [see IIR2.gif]
    Of course the trend characteristics do not give the [-1, +1] oscillation, but the convexity/concavity are still detectable.
    The superimpose of actual price candles gives a more descriptive picture of the 4 phases.
    [see 4phases.gif]
    The full AFL* code is

    // The 4 phases of a stock graph
    // A. Smothing procedure
    function IIR2( input, f0, f1, f2 )
    {
    result[ 0 ] = input[ 0 ];result[ 1 ] = input[ 1 ];
    for( i = 2; i < BarCount; i++ )
    {
    result[ i ] = f0 * input[ i ] + f1 * result[ i - 1 ] + f2 * result[ i - 2 ];
    }
    return result;
    }
    C1=C;
    k=0.3;
    RD=IIR2( C1, 0.3, 1.2+K, -0.5-K);
    // B. Convexity definition
    y=RD;
    t=1;
    Convex=(y-Ref(y,-t))/t>=(y-Ref(y,-(t+1)))/(t+1);
    Concave=NOT(Convex);
    Ascending=y>=Ref(y,-1);
    Descending=NOT(ascending);
    // C. Trend phases
    Bullstart=Convex AND Ascending;// from A to B
    Bullend=Concave AND ascending;// from B to C
    Bearstart=Concave AND Descending;// from C to D
    Bearend=Convex AND Descending;// from D to E
    // D. Application
    Color=IIf(Bullstart,colorDarkGreen,IIf(Bullend,colorTurquoise,IIf(Bearstart,colorDarkRed,colorPink)));
    Plot(y,"",Color,8+styleThick);
    Plot(C,"",47,64);GraphXSpace=5;

    *AFL stands for Amibroker Formula Language, from amibroker.com
    **IIR2 stands for Infinite Impulse filter 2nd order, as described in Amibroker 4.40 User´s guide
     
  2. The bullish movement begins with an ascending convex. [darkgreen area]
    Before the end, the bulish pressure diminishes and the smoothing line becomes concave.[turquoise area]
    The Inflection point gives the signal for the curvature change.
    Exit two days later for a quick profit taking.
    Since you know the exit day in advance, you may sell at Close, delay=0.
    ^NDX is the module array to apply the IIR2 smoothing and the concavity/convexity principle.
    96/101 N100 stocks were profitable for this [bullish] year


    Settings

    Initial Equity: 10000 Periodicity/Positions: Daily/Long
    Commissions: 0.25 % Annual interest rate: 0.00%
    Range: 1/1/2003 00:00:00 - 30/9/2003 Apply to: Filter
    Include Filter Exclude Filter
    Market - Market -
    Group Group 254 Group -
    Sector - Sector -
    Industry - Industry -
    Watch list - Watch list -
    Index - Index -
    Favourite - Favourite -
    Margin requirement: 100 Futures mode: No
    Def. round lot size: 0 Def. Tick Size 0
    Drawdowns based on: High/Low prices
    Long trades
    Buy price: Open Sell price: Close
    Buy delay: 1 Sell delay: 0
    Short trades
    Short price: Open Cover price: Open
    Short delay: 1 Cover delay: 1
    Stops
    Maximum loss: disabled Profit target: disabled
    Value: 50.00 Value: 20.00
    Exit at stop? yes Exit at stop? yes

    Trailing stop: disabled
    Value: 5.00
    Exit at stop? yes

    Formula


    Z1=LastValue(Cum(1));
    function IIR2( input, f0, f1, f2 )
    {
    result[ 0 ] = input[ 0 ];result[ 1 ] = input[ 1 ];
    for( i = 2; i < BarCount; i++ )
    {
    result[ i ] = f0 * input[ i ] + f1 * result[ i - 1 ] + f2 * result[ i - 2 ];
    }
    return result;
    }
    SetForeign("^NDX");
    C1=C;
    k=0.45;
    RD=IIR2( C1, 0.3, 1.2+K, -0.5-K);
    y=RD;
    t=1;
    Convex=(y-Ref(y,-t))/t>=(y-Ref(y,-(t+1)))/(t+1);
    Concave=NOT(Convex);
    Ascending=y>=Ref(y,-1);
    Descending=NOT(ascending);
    Bullstart=Convex AND Ascending;
    Bullend=Concave AND ascending;
    Bearstart=Concave AND Descending;
    Bearend=Convex AND Descending;
    Color=IIf(Bullstart,colorDarkGreen,IIf(Bullend,colorTurquoise,IIf(Bearstart,colorDarkRed,colorPink)));
    Buy=BULLSTART AND Ref(BEAREND,-1);
    Sell=Ref(BULLEND AND Ref(BULLSTART,-1),-2);



    Overall performance summary

    Total net profit: 397055.54 Total commissions paid: 86943.91
    Return on account: 39.31 % Open position gain/loss 0.00
    Buy&Hold profit: 377566.31 Bars (avg. days) in test: 18887 (271)
    Buy&Hold % return: 37.38% System to Buy&Hold index: 5.16%

    Annual system % return: 56.29% Annual B&H % return: 53.38%

    System drawdown: -3667.89 B&H drawdown: -4183.06
    Max. system drawdown: -4803.97 B&H max. drawdown: -10382.31
    Max. system % drawdown: -43.14% B&H max. % drawdown: -49.10%
    Max. trade drawdown: -4531.67
    Max. trade % drawdown: -33.83%
    Trade drawdown: -3544.00

    Total number of trades: 1515 Percent profitable: 63.1%
    Number winning trades: 956 Number losing trades: 559
    Profit of winners: 668304.02 Loss of losers: -271248.49
    Total # of bars in winners: 5267 Total # of bars in losers: 2914
    Commissions paid in winners: 55873.75 Commissions paid in losers: 31070.16

    Largest winning trade: 4316.82 Largest losing trade: -2928.74
    # of bars in largest winner: 6 # bars in largest loser: 5
    Commission paid in largest winner: 101.96 Commission paid in largest loser: 43.27

    Average winning trade: 699.06 Average losing trade: -485.24
    Avg. # of bars in winners: 5.5 Avg. # bars in losers: 5.2
    Avg. commission paid in winner: 58.45 Avg. commission paid in loser: 55.58
    Max consec. winners: 12 Max consec. losers: 4

    Bars out of the market: 10706 Interest earned: 0.00

    Exposure: 43.3% Risk adjusted ann. return: 129.96%
    Ratio avg win/avg loss: 1.44 Avg. trade (win & loss): 262.08
    Profit factor: 2.46


    For IB use the
    Z1=LastValue(Cum(1));
    function IIR2( input, f0, f1, f2 )
    {
    result[ 0 ] = input[ 0 ];result[ 1 ] = input[ 1 ];
    for( i = 2; i < BarCount; i++ )
    {
    result[ i ] = f0 * input[ i ] + f1 * result[ i - 1 ] + f2 * result[ i - 2 ];
    }
    return result;
    }
    SetForeign("^NDX");
    C1=C;
    k=Optimize("k",0.45,0.1,0.5,0.01);
    RD=IIR2( C1, 0.3, 1.2+K, -0.5-K);
    y=RD;
    t=1;
    Convex=(y-Ref(y,-t))/t>=(y-Ref(y,-(t+1)))/(t+1);
    Concave=NOT(Convex);
    Ascending=y>=Ref(y,-1);
    Descending=NOT(ascending);
    Bullstart=Convex AND Ascending;
    Bullend=Concave AND ascending;
    Bearstart=Concave AND Descending;
    Bearend=Convex AND Descending;
    Color=IIf(Bullstart,colorDarkGreen,IIf(Bullend,colorTurquoise,IIf(Bearstart,colorDarkRed,colorPink)));
    Plot(y,"y",Color,8);
    Plot(C,"C",1,64);
    PlotShapes((BULLEND AND Ref(BULLSTART,-1))*shapeHollowSmallDownTriangle,colorOrange);
    Buy=BULLSTART AND Ref(BEAREND,-1);
    Sell=Ref(BULLEND AND Ref(BULLSTART,-1),-2);
    PlotShapes(shapeDownArrow*Sell,colorRed);Graphxspace=2;

    to see the basic ^NDX chart, the Inflection points [small orange triangle] and the SellTheMarket exits.
    Dimitris Tsokakis