Skip to content

Commit

Permalink
git
Browse files Browse the repository at this point in the history
  • Loading branch information
hyunyulhenry committed Jan 19, 2021
1 parent 90b57ca commit 4bb6b0e
Show file tree
Hide file tree
Showing 16 changed files with 3,164 additions and 3,187 deletions.
780 changes: 408 additions & 372 deletions CORPCODE.xml

Large diffs are not rendered by default.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5,116 changes: 2,558 additions & 2,558 deletions data/corp_list.csv

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions data/reg_table.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,22 @@
<tr><td colspan="2" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Mkt_excess</td><td>-0.262<sup>***</sup></td></tr>
<tr><td style="text-align:left"></td><td>(0.016)</td></tr>
<tr><td style="text-align:left"></td><td></td></tr>
<tr><td style="text-align:left">SMB</td><td>-0.349<sup>***</sup></td></tr>
<tr><td style="text-align:left">SMB</td><td>-0.346<sup>***</sup></td></tr>
<tr><td style="text-align:left"></td><td>(0.036)</td></tr>
<tr><td style="text-align:left"></td><td></td></tr>
<tr><td style="text-align:left">HML</td><td>-0.098<sup>***</sup></td></tr>
<tr><td style="text-align:left"></td><td>(0.033)</td></tr>
<tr><td style="text-align:left"></td><td></td></tr>
<tr><td style="text-align:left">UMD</td><td>0.081<sup>***</sup></td></tr>
<tr><td style="text-align:left"></td><td>(0.027)</td></tr>
<tr><td style="text-align:left"></td><td>(0.026)</td></tr>
<tr><td style="text-align:left"></td><td></td></tr>
<tr><td style="text-align:left">Constant</td><td>0.003<sup>***</sup></td></tr>
<tr><td style="text-align:left"></td><td>(0.001)</td></tr>
<tr><td style="text-align:left"></td><td></td></tr>
<tr><td colspan="2" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Observations</td><td>377</td></tr>
<tr><td colspan="2" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Observations</td><td>378</td></tr>
<tr><td style="text-align:left">R<sup>2</sup></td><td>0.638</td></tr>
<tr><td style="text-align:left">Adjusted R<sup>2</sup></td><td>0.634</td></tr>
<tr><td style="text-align:left">Residual Std. Error</td><td>0.013 (df = 372)</td></tr>
<tr><td style="text-align:left">F Statistic</td><td>164.000<sup>***</sup> (df = 4; 372)</td></tr>
<tr><td style="text-align:left">Residual Std. Error</td><td>0.013 (df = 373)</td></tr>
<tr><td style="text-align:left">F Statistic</td><td>164.300<sup>***</sup> (df = 4; 373)</td></tr>
<tr><td colspan="2" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"><em>Note:</em></td><td style="text-align:right"><sup>*</sup>p<0.1; <sup>**</sup>p<0.05; <sup>***</sup>p<0.01</td></tr>
</table>
115 changes: 54 additions & 61 deletions docs/04-crawling.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,26 +126,26 @@ print(data_title)


```
## [1] "거래소, 시장정보포털 'KRX 정보데"
## [2] "거래소, 상장사 ESG 정보공개 가이"
## [3] "美 바이든 정부 공식 출범…韓 조정 "
## [4] "금감원, 삼성증권 종합검사 이르면 1"
## [5] "포모증후군?, 증시 변동성 높아져도."
## [6] "3년간 공매도 수익 9170억…개미 "
## [7] "엠씨넥스에 대한 기대감이 솔솔 높아지"
## [8] "바이든 정부 공식 출범…지수 상승 부"
## [9] "대작 줄줄이 개봉...CGV 웃을 수"
## [10] "[fn마켓워치] 변동성 커진 두산인프"
## [11] "거래소, `KRX 정보데이터시스템` "
## [12] "거래소, `ESG 정보공개 가이던스`"
## [13] "한국거래소, 시장정보포털 'KRX정보"
## [14] "컴투스, 신작 줄줄이 출시…‘백년전쟁"
## [15] "'ESG 정보공개 가이던스' 제정…온"
## [16] "한국거래소, ESG 투자 활성화 속도"
## [17] "증권·파생상품시장 정보 한 눈에..."
## [18] "뜨거운 증시만큼 달궈진 IPO 시장 "
## [19] "한국거래소 'ESG 정보공개 가이던스"
## [20] "주식 정보 여기서 다 본다…거래소, "
## [1] "[주식 초고수는 지금] 씨아이에스·현"
## [2] "코스피, 장중 3060선 회복…삼성전"
## [3] "아시아증시 혼조세…상해종합↓·니케이2"
## [4] "해덕파워웨이, 신규 사외이사 3명 선"
## [5] "저평가 손보주, 날개 펼치나"
## [6] "中 경제 턱밑 추격, 바이든의 선택은"
## [7] "[특징주]에이스토리, 글로벌 성장 기"
## [8] "[특징주] 실적 고고행진…빅히트 장중"
## [9] "조정장은 기회…경기민감·실적개선株 주"
## [10] "달러-엔 103.880엔(11시09분"
## [11] "[공시] 푸본현대생명보험, 4580억"
## [12] "에이피티씨, 작년 영업익 83.7% "
## [13] "에이디테크놀로지, 374.6억원 규모"
## [14] "韓, 무디스 ESG 평가서 中, 日 "
## [15] "윈텍, 22억원 규모 전자부품 마운터"
## [16] "예탁원 \"기관간 레포 거래금액 2.2"
## [17] "[표]유럽 주요기업 주가(1/18)"
## [18] "[특징주]삼진엘앤디, 삼성SDI 롤스"
## [19] "대신증권, 오픈뱅킹 서비스 이용시 최"
## [20] "[올댓차이나] 홍콩 증시, 中 경제회"
```

### 기업공시채널에서 오늘의 공시 불러오기
Expand Down Expand Up @@ -415,27 +415,20 @@ print(head(table))
```

```
## N 종목명 현재가 전일비 등락률 액면가
## 1 NA
## 2 1 삼성전자 88,000 1,700 -1.90% 100
## 3 2 SK하이닉스 127,500 3,000 -2.30% 5,000
## 4 3 LG화학 979,000 31,000 -3.07% 5,000
## 5 4 삼성전자우 77,600 1,200 -1.52% 100
## 6 5 삼성바이오로직스 804,000 12,000 -1.47% 2,500
## 시가총액 상장주식수 외국인비율 거래량 PER
## 1 NA <NA>
## 2 5,253,409 5,969,783 55.57 33,117,980 24.03
## 3 928,203 728,002 50.20 4,763,450 32.34
## 4 691,099 70,592 43.59 442,295 91.47
## 5 638,560 822,887 80.52 3,116,433 21.19
## 6 531,967 66,165 10.40 136,954 149.69
## ROE 토론실
## 1 <NA> NA
## 2 8.69 NA
## 3 4.25 NA
## 4 1.84 NA
## 5 N/A NA
## 6 4.77 NA
## N 종목명 현재가 전일비 등락률 액면가 시가총액
## 1 NA
## 2 1 삼성전자 86,900 1,900 +2.24% 100 5,187,741
## 3 2 SK하이닉스 130,500 500 +0.38% 5,000 950,043
## 4 3 LG화학 992,000 28,000 +2.90% 5,000 700,276
## 5 4 삼성전자우 75,800 1,200 +1.61% 100 623,748
## 6 5 현대차 257,500 16,500 +6.85% 5,000 550,196
## 상장주식수 외국인비율 거래량 PER ROE 토론실
## 1 NA <NA> <NA> NA
## 2 5,969,783 55.51 23,522,814 23.73 8.69 NA
## 3 728,002 50.21 1,943,415 33.11 4.25 NA
## 4 70,592 43.52 169,494 92.68 1.84 NA
## 5 822,887 80.40 4,706,589 20.70 N/A NA
## 6 213,668 31.01 3,096,888 61.53 4.32 NA
```

이 중 마지막 열인 토론실은 필요 없는 열이며, 첫 번째 행과 같이 아무런 정보가 없는 행도 있습니다. 이를 다음과 같이 정리해줍니다.
Expand All @@ -449,26 +442,26 @@ print(head(table))

```
## N 종목명 현재가 전일비 등락률 액면가
## 2 1 삼성전자 88,000 1,700 -1.90% 100
## 3 2 SK하이닉스 127,500 3,000 -2.30% 5,000
## 4 3 LG화학 979,000 31,000 -3.07% 5,000
## 5 4 삼성전자우 77,600 1,200 -1.52% 100
## 6 5 삼성바이오로직스 804,000 12,000 -1.47% 2,500
## 10 6 현대차 240,000 10,500 -4.19% 5,000
## 2 1 삼성전자 86,900 1,900 +2.24% 100
## 3 2 SK하이닉스 130,500 500 +0.38% 5,000
## 4 3 LG화학 992,000 28,000 +2.90% 5,000
## 5 4 삼성전자우 75,800 1,200 +1.61% 100
## 6 5 현대차 257,500 16,500 +6.85% 5,000
## 10 6 삼성바이오로직스 794,000 6,000 +0.76% 2,500
## 시가총액 상장주식수 외국인비율 거래량 PER
## 2 5,253,409 5,969,783 55.57 33,117,980 24.03
## 3 928,203 728,002 50.20 4,763,450 32.34
## 4 691,099 70,592 43.59 442,295 91.47
## 5 638,560 822,887 80.52 3,116,433 21.19
## 6 531,967 66,165 10.40 136,954 149.69
## 10 512,804 213,668 30.95 3,863,728 57.35
## 2 5,187,741 5,969,783 55.51 23,522,814 23.73
## 3 950,043 728,002 50.21 1,943,415 33.11
## 4 700,276 70,592 43.52 169,494 92.68
## 5 623,748 822,887 80.40 4,706,589 20.70
## 6 550,196 213,668 31.01 3,096,888 61.53
## 10 525,350 66,165 10.37 76,151 147.83
## ROE
## 2 8.69
## 3 4.25
## 4 1.84
## 5 N/A
## 6 4.77
## 10 4.32
## 6 4.32
## 10 4.77
```

이제 필요한 정보는 6자리 티커입니다. 티커 역시 개발자 도구 화면을 통해 tbody → td → a 태그의 href 속성에 위치하고 있음을 알고 있습니다. 티커를 추출하는 코드는 다음과 같습니다.
Expand All @@ -493,8 +486,8 @@ print(head(symbol, 10))
## [6] "/item/board.nhn?code=051910"
## [7] "/item/main.nhn?code=005935"
## [8] "/item/board.nhn?code=005935"
## [9] "/item/main.nhn?code=207940"
## [10] "/item/board.nhn?code=207940"
## [9] "/item/main.nhn?code=005380"
## [10] "/item/board.nhn?code=005380"
```

1. `read_html()` 함수를 통해 HTML 정보를 읽어오며, 인코딩은 EUC-KR로 설정합니다.
Expand Down Expand Up @@ -524,8 +517,8 @@ print(head(symbol, 10))
## "051910" "051910"
## /item/main.nhn?code=005935 /item/board.nhn?code=005935
## "005935" "005935"
## /item/main.nhn?code=207940 /item/board.nhn?code=207940
## "207940" "207940"
## /item/main.nhn?code=005380 /item/board.nhn?code=005380
## "005380" "005380"
```

`sapply()` 함수를 통해 symbol 변수의 내용들에 `function()`을 적용하며, `stringr` 패키지의 `str_sub()` 함수를 이용해 마지막6자리 글자만 추출합니다.
Expand All @@ -539,8 +532,8 @@ print(head(symbol, 10))
```

```
## [1] "005930" "000660" "051910" "005935" "207940"
## [6] "005380" "006400" "035420" "068270" "035720"
## [1] "005930" "000660" "051910" "005935" "005380"
## [6] "207940" "035420" "006400" "068270" "035720"
```

`unique()` 함수를 이용해 중복되는 티커를 제거하면 우리가 원하는 티커 부분만 깔끔하게 정리됩니다. 해당 내용을 위에서 구한 테이블에 입력한 후 데이터를 다듬는 과정은 다음과 같습니다.
Expand Down
2 changes: 1 addition & 1 deletion docs/05-crawling_practice.md
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ print(biz_day)
```
```
## [1] "20210113"
## [1] "20210115"
```
1. 페이지의 url을 저장합니다.
Expand Down
86 changes: 43 additions & 43 deletions docs/06-crawling_actual.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ print(price)

```
## [,1]
## 2021-01-17 NA
## 2021-01-19 NA
```

1. data 폴더 내에 KOR_price 폴더를 생성합니다.
Expand All @@ -96,12 +96,12 @@ print(head(data_html))
```

```
## [1] "20190108|38000|39200|37950|38100|12756554"
## [2] "20190109|38650|39600|38300|39600|17452708"
## [3] "20190110|40000|40150|39600|39800|14731699"
## [4] "20190111|40350|40550|39950|40500|11661063"
## [5] "20190114|40450|40700|39850|40050|11984996"
## [6] "20190115|40050|41100|39850|41100|11492756"
## [1] "20190110|40000|40150|39600|39800|14731699"
## [2] "20190111|40350|40550|39950|40500|11661063"
## [3] "20190114|40450|40700|39850|40050|11984996"
## [4] "20190115|40050|41100|39850|41100|11492756"
## [5] "20190116|41150|41450|40700|41450|8491595"
## [6] "20190117|41700|42100|41450|41950|11736903"
```

1. `paste0()` 함수를 이용해 원하는 종목의 url을 생성합니다. url 중 티커에 해당하는 6자리 부분만 위에서 입력한 name으로 설정해주면 됩니다.
Expand All @@ -121,14 +121,14 @@ print(head(price))

```
## # A tibble: 6 x 6
## `20190108` `38000` `39200` `37950` `38100` `12756554`
## `20190110` `40000` `40150` `39600` `39800` `14731699`
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 20190109 38650 39600 38300 39600 17452708
## 2 20190110 40000 40150 39600 39800 14731699
## 3 20190111 40350 40550 39950 40500 11661063
## 4 20190114 40450 40700 39850 40050 11984996
## 5 20190115 40050 41100 39850 41100 11492756
## 6 20190116 41150 41450 40700 41450 8491595
## 1 20190111 40350 40550 39950 40500 11661063
## 2 20190114 40450 40700 39850 40050 11984996
## 3 20190115 40050 41100 39850 41100 11492756
## 4 20190116 41150 41450 40700 41450 8491595
## 5 20190117 41700 42100 41450 41950 11736903
## 6 20190118 42000 42400 41950 42300 11029256
```

readr 패키지의 `read_delim()` 함수를 쓰면 구분자로 이루어진 데이터를 테이블로 쉽게 변경할 수 있습니다. 데이터를 확인해보면 테이블 형태로 변경되었으며 각 열은 날짜, 시가, 고가, 저가, 종가, 거래량을 의미합니다. 이 중 우리가 필요한 날짜와 종가를 선택한 후 데이터 클렌징을 해줍니다.
Expand All @@ -149,12 +149,12 @@ print(tail(price))

```
## Price
## 2021-01-08 88800
## 2021-01-11 91000
## 2021-01-12 90600
## 2021-01-13 89700
## 2021-01-14 89700
## 2021-01-15 88000
## 2021-01-18 85000
## 2021-01-19 86900
```

1. 날짜에 해당하는 첫 번째 열과, 종가에 해당하는 다섯 번째 열만 선택해 저장합니다.
Expand Down Expand Up @@ -589,7 +589,7 @@ print(price)
```
```
## [1] 88000
## [1] 85000
```
1. url을 입력한 후, `GET()` 함수를 이용해 데이터를 불러오며, 역시나 user_agent를 추가해 줍니다.
Expand Down Expand Up @@ -664,7 +664,7 @@ print(data_value)
```
## PER PBR PCR PSR
## 24.429 1.998 11.576 2.280
## 23.596 1.930 11.181 2.202
```
분자에는 현재 주가를 입력하며, 분모에는 재무 데이터를 보통주 발행주식수로 나눈 값을 입력합니다. 단, 주가는 원 단위, 재무 데이터는 억 원 단위이므로, 둘 사이에 단위를 동일하게 맞춰주기 위해 분모에 억을 곱합니다. 또한 가치지표가 음수인 경우는 NA로 변경해줍니다.
Expand Down Expand Up @@ -882,7 +882,7 @@ print(codezip_data)
```
## Response [https://opendart.fss.or.kr/api/corpCode.xml?crtfc_key=b1a630e527b0e5ff5bd58ed81b49825017fa80b8]
## Date: 2021-01-17 05:38
## Date: 2021-01-19 02:23
## Status: 200
## Content-Type: application/x-msdownload
## Size: 1.4 MB
Expand Down Expand Up @@ -924,7 +924,7 @@ print(nm)
```
## Name Length Date
## 1 CORPCODE.xml 16073037 <NA>
## 1 CORPCODE.xml 16074227 <NA>
```
1. `tempfile()` 함수 통해 빈 .zip 파일을 만듭니다.
Expand Down Expand Up @@ -996,7 +996,7 @@ nrow(corp_list)
```
```
## [1] 83370
## [1] 83376
```
```r
Expand All @@ -1013,7 +1013,7 @@ head(corp_list)
## 6 00179984 연방건설산업
```
종목수를 확인해보면 83370 개가 확인되며, 이 중 stock 열이 빈 종목은 거래소에 상장되지 않은 종목입니다. 따라서 해당 데이터는 삭제하여 거래소 상장 종목만을 남긴 후, csv 파일로 저장하도록 합니다.
종목수를 확인해보면 83376 개가 확인되며, 이 중 stock 열이 빈 종목은 거래소에 상장되지 않은 종목입니다. 따라서 해당 데이터는 삭제하여 거래소 상장 종목만을 남긴 후, csv 파일로 저장하도록 합니다.
```r
Expand Down Expand Up @@ -1069,27 +1069,27 @@ head(notice_data)
```
```
## corp_code corp_name stock_code corp_cls
## 1 00186452 릭스솔루션 029480 K
## 2 00231372 롯데관광개발 032350 Y
## 3 00105138 파라텍 033540 K
## 4 01437186 ESR켄달스퀘어리츠 365550 Y
## 5 00249502 더블유에프엠 035290 K
## 6 00188380 유진자산운용 E
## report_nm
## 1 최대주주변경을수반하는주식담보제공계약체결
## 2 유상증자또는주식관련사채등의발행결과(자율공시)
## 3 최대주주변경을수반하는주식담보제공계약해제ㆍ취소등
## 4 자본잠식50%이상또는매출액50억원미만사실발생
## 5 기타시장안내(최대주주의의무보유관련)
## 6 [기재정정]증권신고서(집합투자증권-신탁형)(유진지수연계증권투자신탁76호(온라인전용)[ELS-파생형])
## rcept_no flr_nm rcept_dt rm
## 1 20210115900736 릭스솔루션 20210115 코
## 2 20210115800737 롯데관광개발 20210115 유
## 3 20210115900735 파라텍 20210115 코
## 4 20210115800731 ESR켄달스퀘어리츠 20210115 유
## 5 20210115900726 코스닥시장본부 20210115 코
## 6 20210113000532 유진자산운용 20210113
## corp_code corp_name stock_code corp_cls
## 1 00159795 한국카본 017960 Y
## 2 00542898 하이소닉 106080 K
## 3 00160588 한화 000880 Y
## 4 01142075 핑거 E
## 5 00138321 신한금융투자 008670 E
## 6 01142075 핑거 E
## report_nm rcept_no
## 1 주식등의대량보유상황보고서(일반) 20210119000046
## 2 주식등의대량보유상황보고서(약식) 20210119000044
## 3 타법인주식및출자증권취득결정(자율공시) 20210119800139
## 4 [기재정정]투자설명서 20210119000043
## 5 증권발행실적보고서 20210119000042
## 6 [발행조건확정]증권신고서(지분증권) 20210119000041
## flr_nm rcept_dt rm
## 1 조문수 20210119
## 2 최영호 20210119
## 3 한화 20210119 유
## 4 핑거 20210119
## 5 신한금융투자 20210119
## 6 핑거 20210119
```
`fromJSON()` 함수를 통해 JSON 데이터를 받은 후 list를 확인해보면 우리가 원하는 공시정보, 즉 일주일 전부터 100건의 공시 정보가 다운로드 되어 있습니다.
Expand Down
2 changes: 1 addition & 1 deletion docs/08-data_analysis.md

Large diffs are not rendered by default.

Loading

0 comments on commit 4bb6b0e

Please sign in to comment.