fbpx

EPS YOY Q ที่ติดลบแก้ยังไงครับ

  • ผู้สร้าง
    กระทู้
  • #10401
    neo_potato_th
    Participant

    ผมมาเพิ่มในdatadeclarationใส่EPSเข้าไปดังนี้

    {//EPS

    for( i = 0; i < BarCount; i++ )//Quarterly

    {

    if( i > 0 )

    {

    if( SQQE[ i ] == 1 AND SQEPS[ i ] != SQEPS[ i – 1 ] ) SQEPS_Q1[ i ] = SQEPS[ i ];

    else SQEPS_Q1[ i ] = SQEPS_Q1[ i – 1 ];

     

    if( SQQE[ i ] == 2 AND SQEPS[ i ] != SQEPS[ i – 1 ] ) SQEPS_Q2[ i ] = SQEPS[ i ];

    else SQEPS_Q2[ i ] = SQEPS_Q2[ i – 1 ];

     

    if( SQQE[ i ] == 3 AND SQEPS[ i ] != SQEPS[ i – 1 ] ) SQEPS_Q3[ i ] = SQEPS[ i ];

    else SQEPS_Q3[ i ] = SQEPS_Q3[ i – 1 ];

     

    if( SQQE[ i ] == 4 AND SQEPS[ i ] != SQEPS[ i – 1 ] ) SQEPS_Q4[ i ] = SQEPS[ i ];

    else SQEPS_Q4[ i ] = SQEPS_Q4[ i – 1 ];

    }

    else

    {

    SQEPS_Q1[ i ] = SQEPS_Q2[ i ] = SQEPS_Q3[ i ] = SQEPS_Q4[ i ] = 0;

    if( SQQE[ i ] == 1 ) SQEPS_Q1[ i ] = SQEPS[ i ];

    if( SQQE[ i ] == 2 ) SQEPS_Q2[ i ] = SQEPS[ i ];

    if( SQQE[ i ] == 3 ) SQEPS_Q3[ i ] = SQEPS[ i ];

    if( SQQE[ i ] == 4 ) SQEPS_Q4[ i ] = SQEPS[ i ];

    }

    }

    for( i = 0; i < BarCount; i++ )//Accumulated

    {

    if( i > 0 )

    {

    if( SQQE[ i ] == 1 AND SQEPS[ i ] != SQEPS[ i – 1 ] ) SQEPS_ACC[ i ] = SQEPS_Q1[ i ];

    else

    {

    if( SQQE[ i ] == 2 AND SQEPS[ i ] != SQEPS[ i – 1 ] ) SQEPS_ACC[ i ] = SQEPS_Q1[ i ] + SQEPS_Q2[ i ];

    else

    {

    if( SQQE[ i ] == 3 AND SQEPS[ i ] != SQEPS[ i – 1 ] ) SQEPS_ACC[ i ] = SQEPS_Q1[ i ] + SQEPS_Q2[ i ] + SQEPS_Q3[ i ];

    else

    {

    if( SQQE[ i ] == 4 AND SQEPS[ i ] != SQEPS[ i – 1 ] ) SQEPS_ACC[ i ] = SQEPS_Q1[ i ] + SQEPS_Q2[ i ] + SQEPS_Q3[ i ] + SQEPS_Q4[ i ];

    else SQEPS_ACC[ i ] = SQEPS_ACC[ i  – 1 ];

    }

    }

    }

    }

    else SQEPS_ACC[ i ] = SQEPS[ i ];

    }

    SQEPS_ROLL= SQEPS_Q1 + SQEPS_Q2 + SQEPS_Q3 + SQEPS_Q4;//Rolling Last 4 Quarters

    SQEPS_ANN= ValueWhen( SQQE == 4 AND ( SQEPS != Ref( SQEPS, -1 ) ), SQEPS_ACC );//Annual

    SQEPS_QoQ= ValueWhen( SQEPS != Ref( SQEPS, -1 ), ROC( SQEPS, 1, True ) );//Quarter on Quarter

    SQEPS_Q1YoY= ValueWhen( SQEPS_Q1 != Ref( SQEPS_Q1, -1 ), ROC( SQEPS_Q1, 1, True ) );//Quarter 1 Year on Year

    SQEPS_Q2YoY= ValueWhen( SQEPS_Q2 != Ref( SQEPS_Q2, -1 ), ROC( SQEPS_Q2, 1, True ) );//Quarter 2 Year on Year

    SQEPS_Q3YoY= ValueWhen( SQEPS_Q3 != Ref( SQEPS_Q3, -1 ), ROC( SQEPS_Q3, 1, True ) );//Quarter 3 Year on Year

    SQEPS_Q4YoY= ValueWhen( SQEPS_Q4 != Ref( SQEPS_Q4, -1 ), ROC( SQEPS_Q4, 1, True ) );//Quarter 4 Year on Year

    for( i = 0; i < BarCount; i++ )//Year on Year

    {

    if( i > 0 )

    {

    if( SQEPS_Q1YoY[ i ] != SQEPS_Q1YoY[ i – 1 ] ) SQEPS_YoY[ i ] = SQEPS_Q1YoY[ i ];

    else

    {

    if( SQEPS_Q2YoY[ i ] != SQEPS_Q2YoY[ i – 1 ] ) SQEPS_YoY[ i ] = SQEPS_Q2YoY[ i ];

    else

    {

    if( SQEPS_Q3YoY[ i ] != SQEPS_Q3YoY[ i – 1 ] ) SQEPS_YoY[ i ] = SQEPS_Q3YoY[ i ];

    else

    {

    if( SQEPS_Q4YoY[ i ] != SQEPS_Q4YoY[ i – 1 ] ) SQEPS_YoY[ i ] = SQEPS_Q4YoY[ i ];

    else SQEPS_YoY[ i ] = SQEPS_YoY[ i – 1 ];

    }

    }

    }

    }

    else SQEPS_YoY[ i ] = Null;

    }

    }

    }

กำลังดู 25 ข้อความตอบกลับ - 1 ผ่านทาง 25 (ของทั้งหมด 26)
  • ผู้เขียน
    ข้อความตอบกลับ
  • #10402
    neo_potato_th
    Participant

    เสร็จแล้วพอลองไปrunดู EPS YOY Qที่เทียบกับQเดียวกันปีก่อน ถ้าไม่มีQไหนติดลบจะไม่มีปัญหาแต่พอมีติดลบจะเป็นspike

    #10403
    neo_potato_th
    Participant

    #10405
    neo_potato_th
    Participant

    จะเห็นว่าQที่เทียบกับ Qก่อนที่มีเครื่องหมายลบจะมีปัญหา ไม่แน่ใจว่าแก้ยังไงครับ

    #10407
    neo_potato_th
    Participant

    ลองไปเทียบในงบเวปset ถ้าYOYไม่มีอันไหนติดลบก็จะตรงกันดีไม่มีปัญหา

     

    #10408
    neo_potato_th
    Participant

    PTLQ42015

    NP=194mil

    Q42014

    NP=-6.862

     

    NPYOY=+2934%

    คำนวนจาก
    (194-(-6.8))*100/6.8 =+2934%

    #10409
    Amibroker Platform
    Participant

    ผมขอไล่ Code หน่อยคับ ถ้าเขียนภาษาไทยกำกับ Code มาด้วยจะดีมากคับจะได้ช่วยได้เร็วขึ้น เพราะ Code ยาวมากคับ

     

     

    #10410
    Amibroker Platform
    Participant

    ผมเข้าใจถูกมั้ยคับว่า code ของทีมงาน SQ ไม่ได้แก้อะไรเลย เเค่เปลี่ยนเอา EPS เข้าไป

    #10411
    neo_potato_th
    Participant

    Codeคือcode ของSQDeclarationเลยครับ
    แล้วเพิ่มส่วนของEPS YoYเข้าไป แก้ SQNPเป็นSQEPS
    แต่งงทำไมค่ามีปัญหาตรงตัวหารติดลบ

    #10412
    neo_potato_th
    Participant

    SQEPS_QoQ= ValueWhen( SQEPS != Ref( SQEPS, -1 ), ROC( SQEPS, 1, True ) );//Quarter on Quarter

    SQEPS_Q1YoY= ValueWhen( SQEPS_Q1 != Ref( SQEPS_Q1, -1 ), ROC( SQEPS_Q1, 1, True ) );//Quarter 1 Year on Year

    SQEPS_Q2YoY= ValueWhen( SQEPS_Q2 != Ref( SQEPS_Q2, -1 ), ROC( SQEPS_Q2, 1, True ) );//Quarter 2 Year on Year

    SQEPS_Q3YoY= ValueWhen( SQEPS_Q3 != Ref( SQEPS_Q3, -1 ), ROC( SQEPS_Q3, 1, True ) );//Quarter 3 Year on Year

    SQEPS_Q4YoY= ValueWhen( SQEPS_Q4 != Ref( SQEPS_Q4, -1 ), ROC( SQEPS_Q4, 1, True ) );//Quarter 4 Year on Ye

    ตรงนี้ก็SET ROC เป็น absolute=trueแล้ว

    #10413
    neo_potato_th
    Participant

    if absmode = False the value returned is 100*( array – ref( array, -periods ) )/ref( array, -periods ) <br style=”color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: small; line-height: normal;” />if absmode = True the value returned is 100*( array – ref( array, -periods ) )/abs( ref( array, -periods ) )

    #10414
    Amibroker Platform
    Participant

    ไมได้คับ EPS เป็นเเบบสะสม SQNP เป็นเเบบเฉพาะไตรมาส Data คนล่ะเเบบคับ

    #10415
    neo_potato_th
    Participant

    เข้าใจแล้วครับ555 โง่อยู่ตั้งนาน

    #10416
    neo_potato_th
    Participant

    อยากได้EPSรายไตรมาสมีทางแก้มั้ยครับ

    #10417
    Amibroker Platform
    Participant

    แก้ได้คับ เเต่เดียวผมขอเล่น Data ให้ครบก่อนคับ

    หรือถ้ามีใครเขียนเเล้วเอามาเเชร์ๆกันก็ได้คับ

    #10418
    neo_potato_th
    Participant

    EPS growth YoY=goal

    #10422
    chaipod
    Participant

    ส่วน Spike เกิดจาก Error ของ Data ของ SQ ที่ผมได้แจ้งให้แก้ไขในกระทู้…. รับฟังข้อเสนอแนะ SQ Hybrid Database ver2…ครับ

    อย่างในรูปของ PTL  จะเห็นสาเหตุของ spike ครับ

    #10424
    Amibroker Platform
    Participant

    คุณ chaipod ผมเช็คเเล้วไม่มีปัญหาอะไรคับปกติดี ตอน Explore ให้ใช้ทศนิยม 2 ตัวพอคับเเล้ว ถ้าใช้ 4 ตัวมันจะเป็นเเบบที่คุณ chaipod บอกคับ

    มันก็เหมือนกับ indicator บางตัวคับที่มีปัญหากับเลขทศนิยมหลายๆตัวคับ

     

    #10426
    neo_potato_th
    Participant

    ทำได้แต่แบบนี้ EPS ที่spikeขึ้นมาเป็นไปตามงบรายQ ทำไงให้เป็นplotต่อเนื่องเหมือนขั้นบันได้ครับ

    #10428
    neo_potato_th
    Participant

    for( i = 0; i < BarCount; i++ )  //SQEPSQ

    {

    if( i >0 )

    {

    if( SQQE[ i ] == 1 AND SQEPS[ i ] != SQEPS[ i – 1 ] ) SQEPSQ[ i ] = SQEPS[ i ];

    if( SQQE[ i ] == 2 AND SQEPS[ i ] != SQEPS[ i – 1 ] ) SQEPSQ[ i ] = SQEPS[ i ]-SQEPS[ i -1];

    if( SQQE[ i ] == 3 AND SQEPS[ i ] != SQEPS[ i – 1 ] ) SQEPSQ[ i ] = SQEPS[ i ]-SQEPS[ i -1];

    if( SQQE[ i ] == 4 AND SQEPS[ i ] != SQEPS[ i – 1 ] ) SQEPSQ[ i ] = SQEPS[ i ]-SQEPS[ i -1];

     

    ประมาณนี้แล้วก็plot SQEPSQ

    ติดปัญหาตรงจะassignค่าตามนี้

    else SQEPSQ[ i ] = SQEPSQ[ i – 1 ];
    ไม่รุ้จะไปใส่ไว้ตรงไหนครับงง

    #10429
    chaipod
    Participant

    ดังนั้นถ้าคุณ amibroker plateform บอกว่าใช้ทศนิยม 2 ตำแหน่งไม่มีมีปัญหาต้องแก้ code
    ให้เหลือแค่ทศนิยม 2 ตำแหน่งก่อนครับ เช่น
    int( 100 * SPEPS [i] ) /100 != int( 100 * SPEPS [i-1] ) / 100
    ประมาณนี้ครับ

     

    #10432
    neo_potato_th
    Participant

    ทศนิยมไม่น่ามีปัญฆาครับ พอดีจะสร้างตัวแปรใหม่ให้เป็น EPSรายQ แต่ยังทำไมไ่ด้

    #10435
    chaipod
    Participant

    แต่การใช้ทศนิยม 2 ตำแหน่ง อาจมีปัญหากับบริษัทที่มี EPS ต่ำๆ
    อาจลองใช้วิธีอื่นเช่น
    1.เนื่องจาก error ของ data มีค่าน้อยมาก อาจเพิ่มเงื่อนไขให้ ROC>1 เข้าไปตามตัวอย่างข้างล่าง
    2.จะสังเกตุ error มักเกิดในวันแรก  อาจใช้วิธีดึง data ของวันที่ 2 หรือ 3 แทนวันที่ 1
    แต่ทั้งหมดเป็นการแก้ปัญหาที่ปลายเหตุ วิธีแก้ที่ดีที่สุดคือ แก้ Data ให้ถูกต้องครับ

    ตัวอย่างเพิ่มเงื่อนไข ROC>1 เข้าไป

    if( i > 0 )

    {

    if( SQQE[ i ] == 1 AND SQEPS[ i ] != SQEPS[ i – 1 ]  AND  (abs(100*(SQEPS[ i ] – SQEPS[ i – 1 ])/SQEPS[ i – 1 ]) > 1 ) SQEPS_Q1[ i ] = SQEPS[ i ];

    else SQEPS_Q1[ i ] = SQEPS_Q1[ i – 1 ];

    if( SQQE[ i ] == 2 AND SQEPS[ i ] != SQEPS[ i – 1 ]   AND  (abs(100*(SQEPS[ i ] – SQEPS[ i – 1 ])/SQEPS[ i – 1 ]) > 1 ) SQEPS_Q2[ i ] = SQEPS[ i ];

    else SQEPS_Q2[ i ] = SQEPS_Q2[ i – 1 ];

    if( SQQE[ i ] == 3 AND SQEPS[ i ] != SQEPS[ i – 1 ]   AND  (abs(100*(SQEPS[ i ] – SQEPS[ i – 1 ])/SQEPS[ i – 1 ]) > 1 ) SQEPS_Q3[ i ] = SQEPS[ i ];

    else SQEPS_Q3[ i ] = SQEPS_Q3[ i – 1 ];

    if( SQQE[ i ] == 4 AND SQEPS[ i ] != SQEPS[ i – 1 ]   AND  (abs(100*(SQEPS[ i ] – SQEPS[ i – 1 ])/SQEPS[ i – 1 ]) > 1 ) SQEPS_Q4[ i ] = SQEPS[ i ];

    else SQEPS_Q4[ i ] = SQEPS_Q4[ i – 1 ];

    }

    จากนั้นปรับ EPS แบบสะสมเป็นแบบราย Quarter

    epsQ1 = SQEPS_Q1;
    epsQ2 = SQEPS_Q2 – SQEPS_Q1;
    epsQ3 = SQEPS_Q3 – SQEPS_Q2;
    epsQ4 = SQEPS_Q4 – SQEPS_Q3;

    จากนั้นเอาค่า EPS ราย Quarter ไปใช้ต่อไปครับ
    (ช่วยลองเช็คความถูกต้องด้วยเพราะผมเขียนบน notepad ไม่ได้เขียนบน amibroker )

    ประมาณนี้ครับ…

    #10436
    neo_potato_th
    Participant

    มันขึ้นว่าตัวนี้SQEPS_Q1[ i ]  ไม่ได้ประกาศตัวแปร

    #10442
    chaipod
    Participant

    ผมลองเขียนให้ โดยใช้ ROC>2 (ยอมให้ data error สูงสุด 2%)

    #include_once “C:\SiamQuant\SQ Library\SQ AFL V.1.0.2.0\SQ Include\SQ – Include Data Declaration.afl”

    for( i = 0; i < BarCount; i++ )        //Quarterly
    {
    if( i > 0 )
    {
    if( SQQE[ i ] == 1 AND SQEPS[ i ] != SQEPS[ i – 1 ] AND abs(100*(SQEPS[ i ]-SQEPS[ i – 1 ])/SQEPS[ i – 1 ])>2 ) SQEPS_Q1[ i ] = SQEPS[ i ];
    else SQEPS_Q1[ i ] = SQEPS_Q1[ i – 1 ];

    if( SQQE[ i ] == 2 AND SQEPS[ i ] != SQEPS[ i – 1 ] AND abs(100*(SQEPS[ i ]-SQEPS[ i – 1 ])/SQEPS[ i – 1 ])>2 ) SQEPS_Q2[ i ] = SQEPS[ i ];
    else SQEPS_Q2[ i ] = SQEPS_Q2[ i – 1 ];

    if( SQQE[ i ] == 3 AND SQEPS[ i ] != SQEPS[ i – 1 ] AND abs(100*(SQEPS[ i ]-SQEPS[ i – 1 ])/SQEPS[ i – 1 ])>2 ) SQEPS_Q3[ i ] = SQEPS[ i ];
    else SQEPS_Q3[ i ] = SQEPS_Q3[ i – 1 ];

    if( SQQE[ i ] == 4 AND SQEPS[ i ] != SQEPS[ i – 1 ] AND abs(100*(SQEPS[ i ]-SQEPS[ i – 1 ])/SQEPS[ i – 1 ])>2 ) SQEPS_Q4[ i ] = SQEPS[ i ];
    else SQEPS_Q4[ i ] = SQEPS_Q4[ i – 1 ];

    }
    else
    {
    SQEPS_Q1[ i ] = SQEPS_Q2[ i ] = SQEPS_Q3[ i ] = SQEPS_Q4[ i ] = 0;
    if( SQQE[ i ] == 1 ) SQEPS_Q1[ i ] = SQEPS[ i ];
    if( SQQE[ i ] == 2 ) SQEPS_Q2[ i ] = SQEPS[ i ];
    if( SQQE[ i ] == 3 ) SQEPS_Q3[ i ] = SQEPS[ i ];
    if( SQQE[ i ] == 4 ) SQEPS_Q4[ i ] = SQEPS[ i ];
    }
    }

    lastQ1 = ValueWhen(SQQE==2 AND SQEPS != Ref( SQEPS, -1 ) AND  abs(ROC( SQEPS, 1))>2, SQEPS_Q1,1);
    lastQ2 = ValueWhen(SQQE==3 AND SQEPS != Ref( SQEPS, -1 ) AND  abs(ROC( SQEPS, 1))>2, SQEPS_Q2,1);
    lastQ3 = ValueWhen(SQQE==4 AND SQEPS != Ref( SQEPS, -1 ) AND  abs(ROC( SQEPS, 1))>2, SQEPS_Q3,1);

    epsQ1 = SQEPS_Q1;
    epsQ2 = SQEPS_Q2 – lastQ1;
    epsQ3 = SQEPS_Q3 – lastQ2;
    epsQ4 = SQEPS_Q4 – lastQ3;

    epsQ = IIf(SQQE==1 , epsQ1,
    IIf(SQQE==2, epsQ2,
    IIf(SQQE==3, epsQ3,
    epsQ4
    )
    )
    );

    SQEPS_QoQ         = ValueWhen( epsQ != Ref( epsQ, -1 ), ROC( epsQ, 1, True ) );

    Plot(SQEPS_QoQ, “SQEPS_QoQ”, colorOrange, styleLine);

    ที่เหลือลองเข่ียนต่อดูนะครับ

     

     

    #10460
    neo_potato_th
    Participant

    ขอบคุณครับ

กำลังดู 25 ข้อความตอบกลับ - 1 ผ่านทาง 25 (ของทั้งหมด 26)
  • คุณต้องเข้าสู่ระบบเพื่อตอบกลับกระทู้นี้