extqnt - modrpc/info GitHub Wiki
๊ฐ๋จํ ์ฌ์ฉ ์ค๋ช ์
1. QuantKim ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ ๊ณผ๊ฑฐ data ์๋ฎฌ๋ ์ด์
1.1. python cewaaRun.py ? : ์ฌ์ฉํ ์ ์๋ argument๋ฅผ ๋ณด์ฌ์ค
- quiet : ์ฌ๋งํ๋ฉด ์ฌ์ฉ - debug, verbose๋ ์๋ฎฌ ๊ธฐ๊ฐ์ ์ขํ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋์ง (์ด๋ค ์์ผ๋ก ์๋ฎฌ๋ ์ด์ ์ด ์งํ๋๋์ง ์งํ ๊ณผ์ ์ ๋ณผ ์ ์๋๋ฐ, ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ ์ดํ์๋ ์ฌ์ฉํด์ผ ํ ํ์์ฑ์ด ๋๊ฐ์ ๊ฒฝ์ฐ ์์) - report๋ ์ข ๋ชฉ ์ถ์ถ ํด๋ก ์ธ ์ ์์ - plot, plotlog : ์์ต๋ฅ ์ ์ ํ ํน์ ๋ก๊ทธ ์ค์ผ์ผ๋ก ๋ณด์ฌ์ค, ์๋ ๊ทธ๋ฆผ์ Kospi - d=startDate,endDate : ์๋ฎฌ๋ ์ด์ ๊ธฐ๊ฐ, ์ : 2004/01 ~ 2016/12 -> d=04/01,16/12 d=startDate,baseDate,endDate : baseDate์ ์ ์ ํ ์ข ๋ชฉ๋ค์ ์ฌ์ & ์ฌํ ์์ต๋ฅ ๋ณํ ๋ณด์ฌ์ค - useFnguide : QuantKim ๋ฐ์ดํฐ๊ฐ ์๋ fnGuide ๋ฐ์ดํฐ ์ฌ์ฉ QuantKim ๋ฐ์ดํฐ๋ ~ 2016/12 ๊น์ง, fnGuide ๋ฐ์ดํฐ๋ ์ ๋ฃ(๋ถ๊ธฐ์ 10๋ง์), 2011/09 ~ ์ ํจํจ - cyc=i : ๋งค๋งค ๊ต์ฒด ๊ธฐ๊ฐ (๊ฐ์), default๋ 3 - mcap=i,j : ์์ด ํํฐ, sales=i,j : ๋งค์ถ์ก ํํฐ, asset=i,j : ์ด์์ฐ ํํฐ ๋จ์ ์ต์, default๋ 100์ต์ ~ 900์กฐ์, ํ์ฌ ๊ท๋ชจ๋ฅผ ์ง์ ํ๋ ๋ํ์ ์ธ ๋ฐฉ๋ฒ - debtr=i : ๋ถ์ฑ๋น์จ ์ต๋์น, ์ฆ <= debtr, ๋จ์ %, defalut๋ 100% - crntr=i : ์ ๋๋น์จ ์ต์์น, ์ฆ >= crntr, ๋จ์ %, default๋ 200% - roe=i,j : ROE ๋ฒ์, ๋จ์ %, ๋ํ๋ฉด 1 ~ 50 ์ ๋, ์ขํ๋ฉด 5 ~ 20 ์ ๋ ์ถ์ฒ roa=i,j : ROA ๋ฒ์, ๋จ์ % - incsales=i : ์ต์ ๋งค์ถ์ก ์ฆ๊ฐ์จ, ๋จ์ %, ์ฆ๊ฐ์จ์ ์ ๋ถ๊ธฐ ๋๋น, ์ ๋ ๋ ๋๋ถ๊ธฐ ๋๋น, ์ ๋ ๋ ๋๊ธฐ (1๋ ๋์ ) ๋๋น์ ์ ๋ชจ๋ ๋น๊ต incprofit=i : ์ต์ ์์ ์ด์ต ์ฆ๊ฐ์จ, ๋จ์ %, ์ฆ๊ฐ์จ ๋น๊ต๋ ์์ ๋์ผ incebitda=i : ์ต์ EBITDA ์ด์ต ์ฆ๊ฐ์จ, ๋จ์ % (fnGuide ๋ฑ์์ ์ค์ ๋ก ์ฌ์ฉํ๊ธฐ๋ ์ด๋ ค์) incearn=i : ์ต์ ์์ด์ต ์ฆ๊ฐ์จ, ๋จ์ % * incsales์ ๋ค๋ฅธ ์ธ inc ์ด์ต๋ฅ๋ ๋ ๋ฆฝ์ ์ผ๋ก ์ ์ฉ - mmt=i[,j] : ๋ชจ๋ฉํ ํํฐ, ๋จ์๋ ๊ฐ์, ์ : mmt=3 -> 3 ๊ฐ์, mmt=6,12 -> 6 ~ 12 ๊ฐ์ ํ๊ท - mmtKospi : Kospi ๋ชจ๋ฉํ ์ ํํฐ ์ฌ์ฉ (MDD๋ ํ์คํ ์ค์ง๋ง ์์ต๋ฅ ๋ ํจ๊ป ์ค๊ธฐ์ ๋น์ถ) - age : ์์ฅ ์ดํ ๊ธฐ๊ฐ, ๋จ์ ๋ - vol : ์ผ ํ๊ท ๊ฑฐ๋ ๋๊ธ, ๋จ์ ๋ฐฑ๋ง์ (๋งค์ ๋ง์ง๋ง 5 ์์ ์ผ ํ๊ท ์ผ๋ก ๊ณ์ฐํ์) - exam, exam=examStr : exam๋ง ์ฐ๋ฉด ์ฌ์ฉํ ์ ์๋ examStr๋ค์ ๋ณด์ฌ์ค - pbb=i,j : PRB ๋ฒ์, PER, POR, PCR, PSR, PDR ๋ชจ๋ ๋์ผ ํ์ EER(EV/EBITDA), MER(์์ด/EBITDA), GPA ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ ์ฉ - pbp=i,j : PBR ์์๋ฅผ ๋งค๊ฒจ์ i ~ j ๋ฒ์งธ ์ ํ, ๋๋จธ์ง ์ค๋ช ์์ ๋์ผ - pe%=i,j : PBR ์์๋ฅผ ๋งค๊ฒจ์ ๋ฒ์๋ฅผ %๋ก ์ ํ, ๋๋จธ์ง ์ค๋ช ์์ ๋์ผ - ์งํ+์งํ=i,j ์ฌ์ฉ์ : pb+mmt=i -> PBR ์์๋ฅผ ๋งค๊ธฐ๊ณ ๋ชจ๋ฉํ ์์๋ฅผ ๋งค๊ฒจ์ ๋ํด์ ๋ค์ ์ ๋ ฌ
1.2. examStr : ์กฐ๊ฑด๋ค์ ์ผ๋ถ ๋ชจ์ ์ด๋ฆ์ ๋ถ์ธ ๊ฒ๋ค
- noCond : ์กฐ๊ฑด์ด ์ฌ์ค์ ์์ (์ด๊ฒ์ผ๋ก๋ ํ๋ฝ๋๋ ์ข ๋ชฉ์ ์์) - ?PBR : ์ ํ๊ฐ ๊ฐ์น์ฃผ ์กฐ๊ฑด๋ค์ ๋ช ๊ฐ ์ํํ ๊ฒ๋ค - true? : ๊ณ ํ๊ฐ๋ ์๋ + ์์ (ํน์ EBITDA ํน์ ์) ์ด์ต 25% ์์น - hybrid : GPA (gross profit/ asset) + PBR ์ ํ๊ฐ (๊ฐํ๊ตญ ์ฐธ์กฐ) - bigmmt : ๋ํ ํ์ฌ๋ค ์ค์์ 3 ~ 12 ๊ฐ์ ๋ชจ๋ฉํ ์ด ๋์ ํ์ฌ, 3 ์ ์ด์๋ง ์๋ฏธ
1.3. ์๋ฎฌ ์์
- bat\c4.bat : 2004/01 ~ 2016/12 + %* ์ : c4 exam=3rdpbr plotlog, ์๋์ ๋์ผ python cewaaRun.py quiet d=04/01,16/12 exam=3rdpbr plotlog - bat\c3.bat : 2013/01 ~ today(month) + %* ์ : c3 exam=3rdpbr plotlog, c3.bat ๋ด์ฉ์ ๋ณด๋ฉด ์ ์ ์๋ฏ์ด fnGuide ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํจ
1.4. ๊ฒฐ๊ณผ ํด์
- i(์๋ฎฌ๋ ์ด์ ๊ธฐ๊ฐ) : i ๋ ์ค์ ๊ต์ฒด ๋งค๋งค ํ์ - C:i%(j%) : i๋ CAGR(์ฐ ์ด์จ), j๋ ์ด ์ด์จ - E:i(k%,m%,n%) : i๋ ๋ฆฌ์คํฌ ๋๋น ๊ธฐ๋์น (ํํด๋ ์ฐธ์กฐ, ํํด๋๋ ๊ทธ๋ฅ ๊ธฐ๋์น๋ผ๊ณ ๊ธฐ์ ํ์), k๋ ์น๋ฅ , m์ ์ด๊ฒผ์ ๋ ํ๊ท ์ด์ต, n์ ์ก์ ๋ ํ๊ท ์์ค - R:i%,j : i๋ MDD (maximum drawdown), j๋ MTUW (maximum time under water), ๋จ์๋ ๊ฐ์ - ํ์ฌ์[i .. j] : ๋ง ๊ทธ๋๋ก ์ ํ๋ ํ์ฌ์, ํ์ฌ ์ด๋ฆ์ ๋ณด๊ณ ์ถ์ผ๋ฉด report ์ฌ์ฉ - ํ์ฐ ํ์ฌ์ : ํ์ฌ์ ์ฃผ๊ฐ๊ฐ ๊ฐ์๊ธฐ ์ฌ๋ผ์ง ๊ฒฝ์ฐ ๊ผญ ํ์ฐ์ด ์๋๋ผ ํฉ๋ณ ๋ฑ๋ ์๋๋ฐ, ์ฒ๋ฆฌ๊ฐ ๊ท์ฐฎ์์ 0 ์ฒ๋ฆฌํจ - plot, plotlog ์ฌ์ฉ์ ๋ง์ง๋ง ๋ผ์ธ์ ๊ฐ์ ๊ธฐ๊ฐ์ Kospi ๋ฐ์ดํฐ๋ฅผ ๋ฒค์น๋งํฌ๋ก ํ์
* ๊ฑฐ๋ ๋น์ฉ (์ธ๊ธ, ์์๋ฃ, ์คํ๋ ๋ ๋ฑ) ๊ณผ ๋ฐฐ๋น์ ๊ณ์ฐ์ ํฌํจํ์ง ์์ addDvnd๊ฐ ๋ฐฐ๋น ๊ฐ์ฐ ์ต์ ์ธ๋ฐ, ๊ต์ฒด ๊ธฐ๊ฐ์ 6์์ด ๋ค์ด๊ฐ์ผ ์ ํจ (6์์ ๊ฐ์ฐ)
* ๊ณผ๊ฑฐ์ ๋ฐ์ดํฐ๋ ๊ณผ๊ฑฐ์ ๋ฐ์ดํฐ์ผ ๋ฟ, ๊ณผ์ต์ ํ๊ฐ ์๋์ง ์์ฌํด์ผ ํจ - ์ข์ ์ ๋ต : ๋จ์ด์ง ๋๋ ์ง์ ์ ๋ ํน์ ์ฝ๊ฐ ๋ ๋จ์ด์ง๋, ์ข์ ๋๋ ์ ๋ง ์ข์ ๋๊ฐ ์์ด์ผ ํจ - 2017๋ ๋ถ๊ทผ์ ํํธ ๋ฐ๋์ด ๋ถ์ด์ ๊ทธ ๋ถ๊ทผ์ ๊ฒฝ๊ณ๋ก ์ ํ๊ฐ ๊ฐ์น ์ ๋ต๋ค์ ํจ๋ ฅ์ด ๋ง์ด ๋๋น ์ก์ ๋น์ทํ ์๋ก trading์ ์์ด์, 2007๋ ์ ๊ฒฝ๊ณ๋ก ์ง์ ์ถ์ธ ์ถ์ข ์ ๋ต์ ํจ๋ ฅ์ด ํ ๋๋น ์ก์ -> ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ฝ๊ฒ ๋ฐ๋ผํ ์ ์๋ ์ ๋ต์ ์ ํจ์ฑ์ด ์ง์์ ์ผ๋ก ๋จ์ด์ง ๊ฐ๋ฅ์ฑ ์์ ๋ฌธ์ ๋ 5๋ ์ ํ ๋ฒ์ฏค ๋น๋๋ ์ ๋ต์ ๋ด๊ฐ ์ง์งํ๊ฒ ์ํํ ์ ์์๊น? ์ : bigMmt - ์ ํ๊ฐ ๊ฐ์น์ฃผ ์ ๋ต์ ์ด๊ณผ ์์ต์ด ์ฒ์ฒํ ๋จ์ด์ง๊ณ ์๋ ๊ฒ์ผ๋ก ๋ณด์ ์ํ์ฃผ์ ์ ํ๊ฐ ๊ฐ์น์ฃผ๋ ์ง์๊ฐ ์ ์ ์ ์ฐ๊ณ ํ๋ฝํ ๋ฌด๋ ต ๋ค๋ฆ๊ฒ ์ ์ ์ ์ฐ๋ ๊ฒฝํฅ์ด ์์ ์ฆ, ์ง์์ ์์ง์์ ์ฐธ์กฐํ๋ฉด ์กฐ๊ธ ๋ ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ ๊ฐ๋ฅ์ฑ์ ์์ (์ง์๊ฐ ํ์คํ ํํฅํ ๋ค์์ ์ฒญ์ฐํ๋ ์์ผ๋ก) - ์ ๋ต์ ๋ฐ๋ผ์ ์์์์ด ์ค์ํ ๊ฒฝ์ฐ๊ฐ ์์ ์ : bigMmt์ ๊ฒฝ์ฐ /01 ๋ก ์์ํ๋ ๊ฒ๊ณผ /02, /03 ์ด ์ฐจ์ด๊ฐ ๋ง์ ์ค์ ๋ฅ๋ ๋ง์ฐฌ๊ฐ์ง (ideal์ด ๊ทธ๊ฒ์ ์กฐ๊ธ ๋ ํ์ธํด ๋ณด๊ธฐ ์ํ ํ๋ผ๋ฏธํฐ) - ๊ต์ฒด ๊ธฐ๊ฐ์ 3๊ฐ์์ด ๊ธฐ๋ณธ์ธ๋ฐ, ์ ํ๊ฐ ๊ฐ์น์ฃผ์ ๊ฒฝ์ฐ ๊ธฐ๊ฐ์ ๋๋ ค๋ ์ ํจ์ฑ์ด ๋จ์ ์์ ๊ธฐ๊ฐ์ ๋๋ฆฌ๋ฉด ์ค์ ์ ๋จ์ด์ง์ง๋ง ๋์ ๊ฑฐ๋ ๋น์ฉ๋ ๊ฐ์ํ๋ ํจ๊ณผ๊ฐ ์์ - DART์ ์ฌ๋ ค์ผ ํ๋ ์๋ฌด ๊ธฐ๊ฐ : ์ ๋ ๋ : 3/31, ๊ฐ ๋ถ๊ธฐ : 5/15, 8/15, 11/15 fnGuide ์ค์ ์๋ณด์ ํ๋ฃจ ์ดํ ๋ด์ ์ทจํฉํ ์์ ์ด ์ฌ๋ผ์ค๋๋ฐ, ๋ณด๋ฆ ์ฏค ํ ๋ค๋ฆ๊ฒ ์ทจํฉ๋ ์์ ๋ณธ์ด ํ ์ฐจ๋ก ๋ ์ฌ๋ผ์ด (์ ์ ๋๋ ํ ๋ฆฌ์ ์๋ฏธ) fnGuideLib.py๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ ๋ ๋ค์ create ํ๋ ๊ฒ์ ๊ถ์ฅํจ ํ์ฌ ์ ๋ฃ๋ก ๋ฐ๋์์
2. data query
- dbq : QuantKim ๋ฐ์ดํฐ ์ฟผ๋ฆฌ, ์ฟผ๋ฆฌ ์: ์ผ์ฑ์ ์ 20151Q ํน์ 005930 20151Q - fnq : fnGuide ๋ฐ์ดํฐ ์ฟผ๋ฆฌ - qry, qryF : fnq๋ฅผ GUI๋ก ๋ง๋ค๋ฉฐ ๊ฐ๋จํ ์ข ๋ชฉ ์คํฌ๋ฆฌ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํจ
3. ์ค์ ์ข ๋ชฉ ์ถ์ถ
- Plan A : fnGuide ๋ฐ์ดํฐ ์ฌ์ฉ์ ๋จผ์ fnGuideLib.py๋ก ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ & down.bat ์คํ (๋์ ์ฆ๊ถ API - cybosPlus ์ค์น ํ์) & rpt.bat ์คํ (๊ท์น - examStr ํ์) -Plan B : ํค์ ์ฆ๊ถ ํน์ ๋์ ์ฆ๊ถ์ ์ข ๋ชฉ ๊ฒ์ ์ฌ์ฉ (๊ท์น์ ์ ์ฅํ ์ ์์) * ๊ฐ ํ์ฌ๋ง๋ค ์์ง์ด ๋ฌ๋ผ์ ์ค์ ๋ก ์ถ์ถ๋๋ ์ข ๋ชฉ์ด ์กฐ๊ธ์ฉ ๋ค๋ฆ