Áö³­´Þ¿¡ ¸¸µç ÇãÁ¢ÇÑ ÅõÀÚ ºÐ¼®±â¿Í ±× ¼Ò½º, ÀÚ·áµéÀÔ´Ï´Ù.

 

(Å©±â ¶§¹®¿¡ ÆÄÀÏ Ã·ºÎ°¡ ¾ÈµÅ ºí·Î±×±Û¿¡ ÷ºÎÇØ ³õ¾Ò½À´Ï´Ù. URL·Î ÷ºÎ¸¦ Çصµ ¿À·ù°¡ ³ª³×¿ä¤Ñ.¤Ñ)

 

http://blog.naver.com/neobundy/130008657559

 

(°¡Ä¡ ÁöÇ¥ µ¥ÀÌŸ¸¸ ÇÊ¿äÇÑ ºÐÀº ¿©±â ÷ºÎÇÑ ¿¢¼¿ÆÄÀϸ¸ ¹ÞÀ¸¼Åµµ µË´Ï´Ù.)

 

¾ÐÃàÀ» Ç®¸é ¼Ò½º ÆÄÀÏ°ú ÇÔ²² data µð·ºÅ丮 ¾È¿¡ ¿¢¼¿ ÆÄÀÏ ¹× MySQL dump ÆÄÀÏ(data.sql)ÀÌ ¸¸µé¾îÁý´Ï´Ù.

 

ÇÊ¿ä¿¡ µû¶ó ´ÙÀ½Ã³·³ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

MySQL ¹× Python Áö½ÄÀÌ ÀüÇô ¾ø´Â ÀÏ¹Ý ÅõÀÚÀÚ

 

data µð·ºÅ丮¾È¿¡ ÀÖ´Â ¿¢¼¿ ÆÄÀϵéÀ» È°¿ëÇÏ½Ã¸é µË´Ï´Ù. FnGuide.com µî¿¡¼­ ¼öÁýÇÑ 2005³â ~ 2006³â 2/4ºÐ±â±îÁö ½ÇÀû µ¥ÀÌŸ µîÀÌ Æ÷ÇԵŠÀÖ½À´Ï´Ù.

 

ƯÈ÷, fundamentals_200606.xls (º» ±Û¿¡µµ ÷ºÎ)´Â ÅõÀںм®±â¸¦ ÅëÇØ ¸¸µé¾îÁø ±â¾÷ÀÇ ÆÝ´õ¸àÅ» ¿¢¼¿ÆÄÀÏ(2006³â 2/4ºÐ±â ½ÇÀû µ¥ÀÌŸ ¹× 2005³â ¹è´ç±Ý ¹× 2006³â 9¿ù 8ÀÏ Á¾°¡ ±âÁØ)À̸ç PBR ´ë ROE ÇÁ¸®¹Ì¾öÀ¸·Î °è»êÇÑ ¸ñÇ¥ÁÖ°¡ ±«¸®À² ¼øÀ¸·Î ¼ø¼­°¡ ¸Þ°ÜÁ® ÀÖ½À´Ï´Ù. ¹°·Ð, ¿¢¼¿¿¡¼­ Çì´õ¸¦ ÀÌ¿ëÇØ ´Ù¸¥ ÁöÇ¥ ¼øÀ¸·Î Á¤·ÄÇÒ ¼öµµ ÀÖ½À´Ï´Ù,

 

¸ñÇ¥ÁÖ°¡ °è»ê¿¡ ´ëÇÑ ¹è°æ ³í¸®´Â http://blog.naver.com/neobundy/130008061534 ¿¡ ³ª¿Í ÀÖ½À´Ï´Ù. ¾ÆÁÖ º¸¼öÀûÀΠ§µ¹ÀÌ ¸ñÇ¥ÁÖ°¡¶ó ¿©±â½Ã¸é µË´Ï´Ù.

 

MySQL Áö½ÄÀÌ ÀÖ´Â ÅõÀÚÀÚ

 

MySQL 5.0 ÀÌ»óÀ» ¼³Ä¡ÇÏ°í data/data.sql ´ýÇÁ ÆÄÀÏÀ» MySQL Administrator¿¡¼­ import Çϸé stocks ¶ó´Â µ¥ÀÌŸº£À̽º ¹Ø¿¡ ¿©·¯ stored procedures/functions°¡ ¸¸µé¾î Áý´Ï´Ù. ¹°·Ð, 2005³â1/4ºÐ±â¿¡¼­ 2006³â 2/4ºÐ±â±îÁöÀÇ ½ÇÀû µ¥ÀÌŸ ¹× 2004³â/2005³â ¹è´ç±Ý µ¥ÀÌŸ, ±â¾÷ Á¤º¸ µ¥ÀÌŸ, 2006³â 9¿ù 8ÀÏ Á¾°¡ µ¥ÀÌŸ±îÁö ¸ðµÎ import µË´Ï´Ù.

 

stored procedures ¹× functions ¼Ò½º¸¦ ÈȾ¸é ÃæºÐÈ÷ È°¿ëÇÒ ¼ö ÀÖÀ» °Ì´Ï´Ù.

 

 

 
stocks µ¥ÀÌŸº£À̽º ½ºÅ°¸¶
 
 
 
stored procedures
 
 
stored functions ÀϺÎ

 

¿¹:

 

select getPBR('A015750') -> ¼º¿ìÇÏÀÌÅØ PBR ¾ò±â (Á¾¸ñ ÄÚµå´Â 'A015750' ½ÄÀ̾î¾ßÇÔ. )

 

call ListMarketFundamentals() -> Àüü ±â¾÷ ÆÝ´õ¸àÅ» ÁöÇ¥(fundamentals_200606.xls ¿Í °°Àº) ¾ò±â

 

select * from market_fundamentals order by discount_ratio desc -> ¾Õ call ListMarketFundamentals() ¿¡¼­ »Ì¾Æ³½ ÁöÇ¥°¡ market_fundamentals Å×À̺íÀ» ¾÷µ¥ÀÌÆ® ÇϹǷΠ¾î¶² ÁöÇ¥¼øÀ¸·Îµµ Á¤·ÄÇØ »Ì¾Æº¼ ¼ö ÀÖÀ½

 

call addToPortfoilo('A015750') -> ¼º¿ìÇÏÀÌÅØ Æ÷Æ®¿¡ ´ã±â

call deleteFromPortfoilo('A015750') -> ¼º¿ìÇÏÀÌÅØ Æ÷Æ®¿¡¼­ Á¦°Å

 

call ListPortfolioFundamentals() -> ³» Æ÷Æ®Æú¸®¿À ÆÝ´õ¸àÅ» ÁöÇ¥ »Ì¾Æº¸±â

 

µîµî...

 

MySQL ¹× Python/wxPython Áö½ÄÀÌ ÀÖ´Â ÇÁ·Î±×·¡¸Ó

 

Python ¼Ò½º´Â µ¥ÀÌŸ ÀÓÆ÷Æ® ¿ëÀ¸·Î¸¸ »ç¿ëÇÏ°í µ¥ÀÌŸ Àӽà ½ºÅ丮Áö ¹× ±âº» Ãâ·ÂÀº ¿¢¼¿(COMÀ¸·Î ¿¬°á)À» È°¿ëÇÕ´Ï´Ù.

 

°¢ ¼Ò½ºÀÇ db »ç¿ëÀÚ¸í°ú ¾ÏÈ£´Â °¢°¢ 'root', '1234'·Î µÅ Àִµ¥ »ç¿ëÀÚ¿¡ ¸Â°Ô ¼öÁ¤ÇØ¾ß ÇÕ´Ï´Ù.

 

°¢ ¼Ò½º¿Í µ¥ÀÌŸ ÆÄÀÏÀº ´ÙÀ½°ú °°À¸¸ç FnGuide.com ¿¡¼­ ºÐ±âº°·Î ¹ßÇ¥ÇÏ´Â ÀڷḦ 'ºÐ±â' µ¥ÀÌŸ¸¸ ³²µµ·Ï ¾à°£ ÆíÁýÇØ¾ß ÇÔ. ±â Á¦°øµÈ °¢ ¿¢¼¿ µ¥ÀÌŸ ÆÄÀÏ Çü½Ä°ú °°¾Æ¾ß ÇÔ. (¿¹: 200606_quarterly_report.xls ´Â 2006³â 2/4ºÐ±â ½ÇÀû µ¥ÀÌŸÀ̹ǷΠÀÌ¿Í ¶È°°ÀÌ 200609_quarterly_report.xls ¸¦ ¸¸µé¾î 3/4ºÐ±â ½ÇÀû µ¥ÀÌŸ¸¦ importÇÒ ¼ö ÀÖÀ½.)

 

    cwkCompanyImporter.py -> data/companies.xls (±â¾÷ ±âº» Á¤º¸)
    cwkQuarterlyReportImporter.py -> data/606_quarterly_report.xls (±â¾÷ ºÐ±â ½ÇÀû)
    cwkStockQuoteGetter.py -> data/stock_quotes.xls (ÇöÀç Á¾°¡)
    cwkStockImporter.py -> data/60630_½Ã°¡ÃѾ×.xls (¹ßÇàÁֽļö Á¤º¸)
    cwkDividendImporter.py -> data/5_dividends.xls (¹è´ç±Ý Á¤º¸)
    cwkMarketCapFileStockCodeGetter.py -> ±â¾÷ÄÚµå/±â¾÷¸í ¸ÅĪ
    cwkExportTool.py -> ¿¢¼¿ export ¿ë ¼Ò½º ÅÛÇø´
   

 

´ë°³ ºÐ±âº°·Î ºÐ±â½ÇÀû ¿¢¼¿ÆÄÀÏ°ú ¿¬°£ ¹è´ç±Ý Á¤º¸, ÁöÇ¥ °è»êÀ» ÇÏ´Â ³¯ ÇöÀç Á¾°¡ Á¤µµ ¾÷µ¥ÀÌÆ® ÇÊ¿ä.

 

Á¾°¡ µ¥ÀÌŸ´Â ³×À̹öÀÇ ½Ã¼¼ ȨÆäÀÌÁö¸¦ Á¤±Ô½Ä ÆĽÌ. ³×Æ®¿öÅ© ¿¡·¯½Ã (timeout) 5ȸ Àç½Ãµµ.


Á¤¸®µµ Á¦´ë·Î ¾ÈµÈ ÇãÁ¢ÇÑ ¼Ò½ºÁö¸¸... ¶óÀ̼¾½º´Â GPL :-)

 

ÅõÀÚ ºÐ¼®±â Ư¡°ú ´ÜÁ¡

 

 - ¹«Á¶°Ç ÇöÀç ºÐ±âºÎÅÍ °ú°Å 4ºÐ±â µ¥ÀÌŸ¸¦ ¿¬È¯»êÇÏ¿© ÁöÇ¥ »êÃâ (¿¹¿Ü: ListQuarterFundamentals() ´Â ÃÖ±Ù ºÐ±â µ¥ÀÌŸ¸¸ »ç¿ëÇØ 1ºÐ±â ÁöÇ¥ »êÃâ)

 

- °ú°Å µ¥ÀÌŸ¸¦ ÃæºÐÈ÷ ±¸ÇÒ ¼ö ¾ø¾î °¢ ÁöÇ¥ÀÇ ¾ÈÁ¤¼ºÀº È®º¸ÇÒ ¼ö ¾øÀ½. µû¶ó¼­ ±âº»ÀûÀÎ ±â¾÷ ÇÊÅ͸µ¿¡¸¸ ÀûÇÕÇÏ°í ³ª¸ÓÁö´Â ÅõÀÚÀÚÀÇ ¼öÀÛ¾÷ ÇÊ¿ä.

 

- ¸ñÇ¥ÁÖ°¡´Â ROE¿Í PBRÀ» ±âÁØÀ¸·Î 3³âÄ¡ ÇÁ¸®¹Ì¾öÀ» °è»êÇÔ. ¿¹¸¦ µé¾î ¼º¿ìÇÏÀÌÅØÀÇ °æ¿ì 23%ÀÇ ROE¸¦ 3³â°£ À¯ÁöÇÑ´Ù´Â ÀüÁ¦ÇÏ¿¡ PBR 1 ¼öÁØ¿¡¼­ 3³âÄ¡ ÇÁ¸®¹Ì¾öÀ» °è»êÇØ 9500¿ø.

 

¸ñÇ¥ÁÖ°¡ °è»ê °ø½Ä (getTargetPrice() stored function ¼Ò½º ÀϺÎ):

 

SET target_price = bps;
my_loop: REPEAT
    IF years >= num_years THEN
 LEAVE my_loop;
    END IF;
   
    SET target_price = target_price + (roe * target_price);
    SET years = years + 1;


UNTIL years >= num_years
END REPEAT my_loop;

 

- ¾×¸éºÐÇÒÀ̳ª ÇÕº´, À¯¹«»óÁõÀÚ µîÀ¸·Î ÀÎÇÑ ¿À·ù°¡ ¹ß»ýÇÒ ¼ö ÀÖÀ½. ¿¹: ¹«¸²SP

 

- ÀϽÃÀû ÀÌÀÍÀ¸·Î ÀÎÇÑ ROE µî ÁöÇ¥ ¿Ö°îÀÌ ¹ß»ýÇÒ ¼ö ÀÖÀ½. ¿¹: ¾ÆÀÌÁîºñÀü

 

ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½ ÅõÀÚ ºÐ¼®±â ÇÁ·ÎÁ§Æ® ÀÏÁö Âü°í

 

    ÅõÀںм®±â ÇÁ·ÎÁ§Æ® 1: http://blog.naver.com/neobundy/130007774974
    ÅõÀںм®±â ÇÁ·ÎÁ§Æ® 2: http://blog.naver.com/neobundy/130007872168
    ÅõÀںм®±â ÇÁ·ÎÁ§Æ® 3: http://blog.naver.com/neobundy/130007912077
    ÅõÀںм®±â ÇÁ·ÎÁ§Æ® 4: http://blog.naver.com/neobundy/130008004920
    ÅõÀںм®±â ÇÁ·ÎÁ§Æ® 5: http://blog.naver.com/neobundy/130008243589

 

ÁÖÀÇ ¹× ´çºÎ ¸»¾¸

 

ºÐ¸í µ¥ÀÌŸ ¿À·ù, ³í¸®Àû ¿À·ù°¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. Áö³­ ÇÑ´Þ°£ Æ÷Æ®Æú¸®¿À ÀçÆíÀ» À§ÇØ È°¿ëÇÑ °á°ú 1Â÷ÀûÀ¸·Î ±â¾÷ ÇÊÅ͸µÀ» ÇÏ´Â µ¥´Â Å« ¹«¸®°¡ ¾ø¾î º¸¿´½À´Ï´Ù. ÇÏÁö¸¸, ÅõÀÚÀÚÀÇ Áö½Äµµ ÇÊ¿äÇÏ°í ¼öÀÛ¾÷µµ ÀÌ°÷ Àú°÷ ÇÊ¿äÇÕ´Ï´Ù.

 

ƯÈ÷, ÀûÀÚ ±â¾÷Àº °¡Ä¡ ÁöÇ¥ °è»ê¿¡¼­ ¸ñÇ¥ÁÖ°¡¸¦ »ÌÀ» ¼ö ¾ø±â ¶§¹®¿¡ ÇöÀç ÀûÀÚ½ÃÇöÁßÀÎ ÅϾî¶ó¿îµå ±â¾÷ Àâ±â´Â Èûµì´Ï´Ù.

 

(ºÐ¼®±â ¸¸µé°í ±× ÀڷḦ Åä´ë·Î Æ÷Æ®¸¦ ÀçÆíÇߴµ¥... ¿À´Ã ´Ù½Ã µ¹·Áº¸´Ï ±× ´ç½Ãº¸´Ù ÁÖ°¡°¡ ¸¹ÀÌµé ¿Ã¶ú±º¿ä^^)

 

µ¥ÀÌŸ ¿À·ù´Â... Àúµµ ¾î¿ ¼ö ¾ø´Â ºÎºÐÀÌ°í FnGuide.com À» µ·ÁÖ°í ¾²Áö ¾Ê´Â ÀÌ»ó (¿£°£ÇÏ¸é ¾²°í ½ÍÀº »ç¿ë·á°¡ Çæ...) ... ³í¸®»óÀÇ ¿À·ù¸¦ ¹ß°ßÇØÁֽô ºÐµéÀÌ °è½Ã¸é °í¸¿°Ú½À´Ï´Ù^^ ¿ÀǼҽº ÇÁ·Î±×·¡¸Ó±âµµ ÇÏÁö¸¸ ³í¸®»ó ¿À·Á Àâ´Â°Ô »ç½Ç ÁÖµÈ °ø°³ ÀÌÀ¯±âµµ Çϳ׿ä :-)

 

»ç¿ëÀÚ Ä£È­ÀûÀÌÁö ¾ÊÀº ºÐ¼® µµ±¸¶ó ¾ó¸¶³ª ¸¹Àº ºÐÀÌ »ç¿ëÇϽÇÁö ¸ð¸£°ÚÁö¸¸... ±×³É ¿ø·¡ ¸¸µé¶§ Àǵµ´ë·Î °ø°³ÇÏ°í º¾´Ï´Ù. ÇÁ·Î±×·¥Àº ¹¹µç ¸¸µé¸é °ø°³ÇÏ´Â ³ÑÀ̶ó....