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 : ํค์ ์ฆ๊ถ ํน์ ๋์ ์ฆ๊ถ์ ์ข
๋ชฉ ๊ฒ์ ์ฌ์ฉ (๊ท์น์ ์ ์ฅํ ์ ์์)
* ๊ฐ ํ์ฌ๋ง๋ค ์์ง์ด ๋ฌ๋ผ์ ์ค์ ๋ก ์ถ์ถ๋๋ ์ข
๋ชฉ์ด ์กฐ๊ธ์ฉ ๋ค๋ฆ