콘텐츠로 이동

블로그

[2020-07-16] 카카오(035720) 종목분석

최근 언택트 대표주로 매섭게 주가가 상승한 카카오(035720) 종목에 대한 기본적, 기술적, 수급, 딥러닝 분석 정보를 공유합니다.

카카오의 재무제표와 대표적인 지표들을 살펴보겠습니다.

kakao_finstate

매출이 가파르게 상승하는 모습입니다. 다만 순이익은 낮았었는데 매출이 더욱 오르면서 이익이 발생할 것으로 예상됩니다. 자산 규모도 자본과 부채 모두 증가하면서 커질 것으로 보입니다. 현금흐름을 보면 영업활동현금흐름이 커지면서 매출이 늘어날 것으로 보입니다. 다만 투자활동은 공격적이지 않은 것 같습니다.

kakao_perpbrroe

PER는 상당히 올라와 있는데 EPS가 증가될 것으로 예상되어 PER는 낮아질 것으로 컨센서스가 맞춰져 있습니다. BPS도 증가할 것으로 보이나 가격 상승에 비해 약할 것으로 보여서 PBR은 높아질 것으로 예상됩니다. ROE는 현재 마이너스인데 다시 플러스 전환 될 것으로 보입니다.

다음은 카카오 일봉 차트를 보여줍니다. 여기에 이동평균선, 볼린저밴드, MACD, RSI를 추가로 보여줍니다. 이 보조지표들에 대한 상세한 설명은 이 포스트를 참고해 주세요.

kakao

카카오 일봉차트의 볼린저밴드 윗부분에서 주가흐름을 보이고 있습니다. 요 며칠 동안은 코로나19 백신 기대로 주가가 하락했습니다. 주가도 높고 언택트 메리트가 약해졌다고 판단한 투자자들이 많았나 봅니다.

이평선들이 많이 벌어져 있어서 당분간은 횡보하지 않을까 조심스럽게 생각해 봅니다.

MACD는 시그널을 아직 하방돌파하지는 않았습니다. 그러나 RSI는 70을 넘기고 있어서 과열 양상을 보입니다.

다음 바차트는 카카오의 일봉 수급 점수입니다. 0보다 크면 매수세가 강했고 0보다 작으면 매도세가 강했음을 의미합니다.

kakao_dem

최근 60일, 20일, 10일 수급점수는 매수세가 점점 강해져왔음을 보이고 있습니다. 그러나 최근 5일의 수급점수는 매도세가 강해져서 수급점수가 점점 낮아질 것 같습니다.

다음 차트는 딥러닝 모델의 점수입니다. 진한 검정색 선은 카카오 종목의 종가이고 연한 회색 선이 딥러닝 모델이 산출한 카카오 종목 점수입니다.

kakao_score

카카오 주가가 상승을 시작한 3월 중순쯤 딥러닝 모델의 점수가 치솟았습니다. 이후 점수가 조금식 떨어졌는데 최근 다시 약상승 중입니다.

위 분석 내용들은 어디까지나 참고사항 입니다. 투자에 있어서 절대적인 것은 없습니다. 항상 본인의 철학을 지키며 투자하시길 바랍니다.

카카오의 성장과 투자자들의 성투를 응원합니다.

[2020-H1] 딥러닝 주식종목 랭킹모델 백테스팅

이번 포스트에서는 최근 구축한 주식종목 랭킹모델의 2020년 상반기 백테스팅 결과를 정리합니다.

백테스팅 환경은 이 포스트에 정리한 것과 같습니다.

비교 대상(baseline)은 코스피 인덱스로 잡았습니다.

백테스팅 결과

진한 선이 포트폴리오 가치(PV)이고 연한 선이 코스피입니다. 변화율을 y축으로 정했습니다. 0.2는 20%라는 뜻입니다.

2020년 상반기 백테스팅 결과를 보면 퀀티랩 PV 수익률은 약 +20.3%에 달하고 코스피 수익률은 약 -3.1% 입니다.

Maxium Drawdown(MDD)은 퀀티랩 딥러닝 모델은 약 -23.1%, 코스피는 -35.7%로 퀀티랩 딥러닝 모델의 위험이 더 작았습니다.

2020년 상반기 퀀티랩 딥러닝 주식투자 모델의 백테스팅의 매매 내역은 다음과 같습니다.

dateactioncodenamepriceamountprofitlosseval
20200102buy028300에이치엘비101,3159899,998,511
20200102buy005930삼성전자55,20018199,997,012
20200102buy140410메지온193,8005199,995,529
20200102buy196170알테오젠69,80014399,994,032
20200102buy032500케이엠더블유57,30017499,992,537
20200103buy000660SK하이닉스94,50010598,904,030
20200103buy068270셀트리온177,5005698,902,539
20200103buy002360SH에너지화학1,1258,88898,901,039
20200103buy053800안랩76,00013198,899,546
20200103buy005380현대자동차116,0008698,898,050
20200108sell002360SH에너지화학1,6208,88844.00%99,729,899
20200108buy078130국일제지5,3501,86999,728,400
20200219sell196170알테오젠98,50014341.12%107,025,215
20200219buy096530씨젠34,900286107,023,718
20200306sell096530씨젠48,35028638.54%104,062,865
20200313sell053800안랩49,750131-34.54%92,553,090
20200316buy140410메지온112,900191,114,960
20200318buy000660SK하이닉스73,100188,061,293
20200423buy196170알테오젠97,900102106,097,159
20200511sell196170알테오젠168,40010272.01%115,562,596
20200615sell078130국일제지5,4201,8691.31%116,858,954
20200619buy053800안랩51,400194119,638,858
20200625buy229000젠큐릭스21,650461120,262,761

코스피200 선물과 현물

이번 포스트에서는 코스피200 현물과 선물의 상관관계 분석 결과를 다룹니다.

코스피200 선물은 코스피200 현물 지수가 앞으로 어떻게 될지 예상하여 거래하는 가격입니다. 앞으로 코스피200이 상승할 것 같다고 판단한 투자자가 우세하면 선물 가격은 상승하고 코스피200이 하락할 것 같다고 판단한 투자자가 우세하면 선물 가격은 하락합니다.

즉, 선물 가격이 현물 가격을 선행한다고 할 수 있는데 정말 그런지 확인해보고자 합니다. 그렇다면 선물의 움직임을 보고 현물 투자에 참고하면 될테니 말입니다.

코스피200 선물과 현물의 상관관계

섹션 제목: “코스피200 선물과 현물의 상관관계”

다음 관계가 통계적으로 만족하는지 확인하고자 합니다.

  • 선물 가격 상승 -> 현물 가격 상승
  • 선물 가격 하락 -> 현물 가격 하락

선물과 현물의 증감을 시계열로 구한 뒤 상관관계(correlation)을 확인해봅니다.

코스피200 선물과 현물 값의 차이(basis)

섹션 제목: “코스피200 선물과 현물 값의 차이(basis)”

선물과 현물의 가격 차이를 베이시스(basis)라고 합니다. 코스피200의 베이시스를 구해보면 다음과 같습니다.

BASIS = KOSPI200F – KOSPI200
  • KOSPI200F: 코스피200선물 가격
  • KOSPI200: 코스피200현물 가격

1

베이시스가 양수일 때는 현물보다 선물의 가격이 높다는 뜻으로 현물이 앞으로 상승할 것 같다는 의견이 우세한 것입니다. 반대로 베이시스가 음수이면 현물이 떨어질 것 같다는 의견이 우세한 것입니다.

코스피200 현물 지표와 코스피200의 베이시스를 그려보면 다음과 같습니다.

2

대체적으로 베이시스는 양수인 경우가 많은 것을 알 수 있습니다.

종종 큰 값의 베이시스가 발생하는 부분을 살펴보며 현물의 움직임을 보면 그다지 밀접한 상관성이 보이지는 않습니다.

코스피200 현물과 베이시스의 상관관계 분석

섹션 제목: “코스피200 현물과 베이시스의 상관관계 분석”

다양한 해석이 가능하므로 참고만 하시기 바랍니다.

이견이 있으시면 자유롭게 댓글이나 메일 주시면 감사하겠습니다.

Correlation 분석 결과를 그려보면 다음과 같습니다.

3

이 결과를 다음과 같이 해석해 볼 수 있습니다.

  • 3일 뒤의 선물이 현재 현물과 가장 비슷하다.
  • 선물 가격 변화 다음날은 오히려 현물이 반대로 움직인 경우가 많다.
  • 확률적으로 선물 가격 변화 방향으로 2, 3일 뒤 현물 가격이 따라 가는 경우가 많다.

[2019] 딥러닝 주식종목 랭킹모델 백테스팅

이번 포스트에서는 최근 구축한 주식종목 랭킹모델의 2019년도 1년치 백테스팅 결과를 정리합니다.

퀀티랩의 주식종목 랭킹모델은 PER/PBR/ROE 등의 기본적 분석 지표, OHLCV/MACD/RSI 등의 기술적 분석 지표, 수익률, 변동성, 거래규모 등을 종합적으로 고려하여 학습했습니다.

이렇게 학습한 모델의 출력 값이 높을 수록 매수 고려 대상 종목이 되는 매매 전략을 세웠습니다. 매수, 익절, 손절 등의 기준은 다음과 같습니다.

  • 매수: 종목 랭킹 결과 Top 5 종목
  • 익절: 60%
  • 손절: -60%
  • 청산: 과거 평가 수익 고점 대비 -20%
  • …

이러한 기준으로 종가 매매를 진행하며 최대 10개 종목을 보유할 수 있도록 제한했습니다.

자본금은 1억원으로 정하고 종목당 1천만원까지 매수할 수 있도록 했습니다.

매수/매도 거래 비용을 다음과 같이 현실적으로 적용했습니다.

  • 거래세: 0.25%
  • 매매 수수료: 0.015%

비교 대상(baseline)을 코스피 인덱스로 정하여 백테스팅 결과를 차트로 그려보면 다음과 같습니다.

백테스팅 결과

진한 검정 선이 포트폴리오 가치(PV)를, 연한 회색 선이 코스피 인덱스를 보여줍니다.

동일한 스케일로 표시하기 위해 PV, 코스피 인덱스의 처음 값을 0으로 두고 변화율을 표시했습니다.

그 결과 퀀티랩 주식 종목 랭킹 모델은 약 15% 수익을, 코스피 Buy & Hold 전략 수익률은 약 9% 로 구해졌습니다.

백테스팅 과정에서 매매한 종목들의 내역은 다음과 같습니다.

dateactioncodenamepriceamountprofitlosseval
20190102buy042110에스씨디1,4556,87299,998,500
20190102buy028300에이치엘비76,30013199,997,000
20190102buy095190이엠코리아7,4301,34599,995,501
20190102buy011320유니크7,7201,29599,994,002
20190103buy017900광전자2,2454,45499,188,832
20190103buy115440우리넷7,2701,37599,187,332
20190103buy225570넷게임즈9,5801,04399,185,834
20190103buy041960코미팜19,31051799,184,336
20190104buy004720우리들제약8,7701,140101,308,762
20190104buy041140넥슨지티9,7701,023101,307,262
20190110sell225570넷게임즈10,5001,0439.60%104,164,638
20190110buy039830오로라10,150985104,163,138
20190116sell041140넥슨지티12,7501,02330.50%110,248,684
20190116buy007720대명소노시즌2,5853,868110,247,184
20190117sell095190이엠코리아10,2001,34537.28%114,231,397
20190117sell011320유니크12,8001,29565.80%114,187,471
20190117buy108230톱텍9,9701,003114,185,971
20190117buy036200유니셈4,0952,442114,184,471
20190117buy007390네이처셀11,744851114,182,972
20190131sell039830오로라10,3009851.48%117,832,543
20190219sell042110에스씨디1,8956,87230.24%127,255,406
20190219buy008370원풍4,0502,469127,253,906
20190219buy250000보라티알8,6501,156127,252,406
20190308sell036200유니셈4,1252,4420.73%118,311,856
20190325sell028300에이치엘비78,0001312.23%120,028,982
20190325buy056080유진로봇4,4752,234120,027,483
20190325buy208860엔지스테크널러지6,9001,449120,025,983
20190411sell041960코미팜20,5405176.37%121,651,076
20190423sell007390네이처셀11,7448510.00%117,992,185
20190423buy097230한진중공업12,036830117,990,686
20190423buy000440중앙에너비스8,3801,193117,989,187
20190520sell017900광전자2,4354,4548.46%99,035,671
20190524sell097230한진중공업8,150830-32.29%103,109,920
20190524buy083640인콘3,2003,125103,108,420
20190524buy010660화천기계2,4904,016103,106,920
20190610sell115440우리넷9,9901,37537.41%106,821,419
20190628sell010660화천기계3,1204,01625.30%108,235,770
20190628buy004540깨끗한나라2,4154,140108,234,270
20190628buy004830덕성3,2003,125108,232,770
20190628buy019540일지테크3,1503,174108,231,270
20190708sell083640인콘2,1853,125-31.72%108,047,706
20190711sell019540일지테크4,2753,17435.71%112,418,803
20190725sell056080유진로봇3,0902,234-30.95%108,903,860
20190725buy230980솔트웍스3,8002,631108,902,361
20190725buy002070남영비비안1,5456,472108,900,861
20190726sell007720대명소노시즌1,7903,868-30.75%110,587,888
20190729sell004720우리들제약5,9601,140-32.04%112,485,768
20190729sell002070남영비비안2,6056,47268.61%112,441,090
20190729buy012700리드코프6,9501,438112,439,591
20190729buy000140하이트진로홀딩스12,000833112,438,091
20190729buy012610경인양행9,4001,063112,436,592
20190731sell004830덕성3,3003,1253.12%111,465,379
20190801sell250000보라티알9,0001,1564.05%107,712,924
20190801buy036030KTH5,3401,872107,711,424
20190801buy207760미스터블루7,4301,345107,709,925
20190801buy086980쇼박스4,0502,469107,708,425
20190805sell000440중앙에너비스5,6201,193-32.94%105,756,923
20190805sell230980솔트웍스2,4452,631-35.66%105,739,876
20190806sell208860엔지스테크널러지4,6901,449-32.03%105,802,627
20190806buy041960코미팜11,550865105,801,129
20190806buy007390네이처셀6,9001,449105,799,629
20190807sell004540깨끗한나라3,1804,14031.68%106,554,466
20190819sell207760미스터블루9,6901,34530.42%107,638,863
20190819buy006090사조오양9,6001,041107,637,364
20190819buy189860서전기전3,7902,638107,635,865
20191011sell189860서전기전3,9202,6383.43%109,339,291
20191024sell007390네이처셀9,4701,44937.25%115,558,718
20191024buy056080유진로봇3,0003,333115,557,218
20191024buy028300에이치엘비163,98460115,555,742
20191024buy039830오로라12,650790115,554,243
20191213sell028300에이치엘비87,04460-46.92%114,112,748
20191217sell012700리드코프7,1101,4382.30%113,575,584
20191219sell036030KTH5,4101,8721.31%113,394,701
20191219buy000440중앙에너비스8,6301,158113,393,202
20191219buy000520삼일제약22,700440113,391,704
20191223sell041960코미팜15,45086533.77%113,165,219

모델을 지속적으로 발전시켜 나가며 종목 랭킹 결과 및 운용 시뮬레이션 결과를 퀀티랩에서 제공할 계획입니다.

주식 양도소득세 개정 사항 요점 정리

이번 포스트에서는 2020년 6월 25일에 발표된 주식 양도소득세 개정 사항들을 정리합니다.

기존에는 대주주를 제외한 대부분의 개인투자자들에게는 양도소득세를 부과하고 있지 않았습니다. 이날 발표된 개정안에서는 개인투자자들에게도 양도세를 부과한다는 내용을 담고 있습니다.

그 내용을 정리하면 다음과 같습니다.

  • 2023년부터 주식으로 얻은 수익에 세금을 부과
  • 2,000만원 까지는 비과세
  • 수익이 2,000만원이 넘으면 세금 발생
  • 수익이 3,000만원이면 1,000만원에 대해 세금 20% 부과
  • 3억 초과분은 세율 25%
  • 손실은 최대 3년 이월공제

당장은 2,000만원의 비과세 혜택으로 대부분의 개인투자자에게 부담은 없을 것으로 보입니다. 그러나 비과세 범위가 점점 좁혀질 수 있어 우려되는 지점입니다.

거래세는 기존의 기조대로 단계적으로 인하될 예정입니다. 현행 0.25%에서 2023년까지 0.1% 인하할 예정입니다.

  • 거래세는 단계적으로 인하 (현행 0.25%)
  • 2022~2023년 0.1% 인하
  • 2022년 0.02% 인하
  • 2023년 0.08% 인하

이 개정안은 “2020년 세법 개정안”에 담겨 국회에 제출되고 7월말쯤 확정될 예정입니다.

[2020-05-24] 한국전력(015760) 종목분석

이번 포스트에서는 눈물없어 볼 수 없는 종목, 한국전력(015760)의 최근 데이터를 살펴보고자 합니다. 정확한 종목명은 “한국전력공사” 입니다.

한국전력은 1989년에 상장하였으며 업종은 전기업이고 주요 제품은 전력자원개발,발전,송전,전력용기자재확보 입니다.

코스피에 상장되어 있는 한국전력은 최근 엄청난 주가 추락을 보이고 있는 종목 중 하나입니다. 2017년부터 2020년 5월 22일까지의 MDD(Maximum Draw-Down)는 무려 67%에 달합니다.

chart

한전 차트, MDD, ROE

탈원전 정책에 의한 발전 비용 증가와 불경기로 인한 전기 사용 감소 등의 한두가지가 아닌 복합적인 이유들이 겹치면서 엄청난 주가 하락을 견인한 것으로 보입니다.

ROE를 보면 수익이 얼마나 악화되었는지 볼 수 있습니다. 와이즈리포트에 따르면 2020년은 수익이 어느정도 회복될 것으로 전망됩니다.

최근 한전의 주가를 보면 코로나19로 인해 한전 역시 심각한 낙폭을 겪고 반등을 하는 듯 했으나 다시 하락하는 모습을 보입니다.

chart

한전과 WTI

사상 초유의 마이너스 WTI 사태로 발전 원가 절감을 조금 기대해 볼 수 있었지만 WTI가 다시 조금씩 회복하는 모습을 보입니다.

그 때문인지 한전의 주가는 WTI가 회복하는 즈음 다시 하락국면에 접어들었습니다.

chart

한전과 코스피

이는 코스피 인덱스와도 다른 모습임을 알 수 있습니다.

한전의 투자자들 포지션을 보면 외국인과 개인의 정 반대의 모습을 확인할 수 있습니다.

chart

파란색=외인, 주황색=기관, 초록색=개인

한전 투자자들 포지션

외국인들은 근 한달간 매도 포지션을 취하며 매도량 역시 늘려나가는 모습입니다. 반대로 개인들은 최근 한전을 매수하는 모습입니다.

chart

2020, 2021, 2022년은 예측값

한전의 PBR, PER, ROE 출처: 와이즈리포트

미국의 전기업의 PBR이 1.96 정도인데 한전은 0.1~0.3 사이에서 왔다갔다 하니 PBR만 보면 당장 사고싶습니다.

엄청나게 낮은 PBR을 보이는 한전이 실적 개선을 위한 해법을 찾기를 바라며 마칩니다.

  • 듀크 에너지 (DUK): 1.36
  • Public Service Enterprise Group Inc (PEG): 1.59
  • 에디슨 인터내셔널 (EIX): 1.54
  • …

코로나19 사태에서의 코스피와 해외주식시장, 금, 원유, 환율 상관관계

코로나19 사태에서 코스피 지수와 주요 해외 주식 시장 및 금, 원유, 원달러 환율의 상관관계를 살펴보겠습니다. 코로나19 사태로 주요국 증시가 엄청난 하락폭을 보이고 있습니다.

다음은 코스피와 주요 해외 주식 시장의 종가를 같이 그린 모습입니다.

kospi_dji kospi_nas kospi_spi kospi_nii kospi_shs kospi_hsi kospi_lns kospi_pas kospi_xtr

가장 먼저 상황이 심각했던 중국의 상해종합 지수는 1월말에 급락하는 모습을 보입니다. 항셍 지수도 다른 해외 지수들보다도 더 많이 하락하는 모습입니다.

그 외의 대부분의 지수들은 코스피와 그 모습이 크게 다르지 않습니다. 미국의 경우 3월 중반에 급등과 급락을 반복하지만 결국 추세는 하락하는 모양세입니다.

다음은 코스피와 금, 원유, 달러, 일본 엔 환율을 같이 그린 모습입니다.

kospi_gold kospi_wti kospi_usdkrw kospi_jpykrw

안전자산이라 여겨지는 금이 크게 빠졌습니다. 위기일 때 보통 금 지수는 올라가기 마련인데 이번 코로나19 사태에서는 통하지 않았습니다. 금보다는 달러를 더 선호하여 달러가 급등하는 모습입니다.

상관관계 순으로 보면 다음과 같습니다.

TargetCorrelation
NII@NI2250.9709107854451309
DJI@DJI0.9698340438431805
XTR@DAX300.969026490653162
PAS@CAC400.9688738794309948
LNS@FTSE1000.9642702121797924
SPI@SPX0.9605159313835816
HSI@HSI0.9403151549240741
NAS@IXIC0.9396642438028351
WTI0.9072223139452107
SHS@0000010.5638300683413756
Gold0.15738037237527366
USDKWR-0.8553774707185525
JPYKRW-0.9009982462185702

일본 니케이와 미국 다우 지수와 매우 높은 상관관계를 보입니다. 물론 일본과는 시차가 없어서 특별히 높은 상관관계를 가질 수 있습니다. 그에 비하면 미국 시장과 상관관계가 매우 높다고 볼 수 있습니다. 그리고 전체적으로 주가가 급락하면서 달러와 엔의 가치가 높아진 것을 확인할 수 있습니다.

금은 이미 가격이 너무 많이 올라가 있었던 터라 조정을 받은게 아닐까 싶습니다.

포트폴리오 평가 척도(Portfolio Performance Measures)

이 포스트에서는 주식 투자 등의 금융 투자에서 포트폴리오를 평가하는 주요 척도(Portfolio Performance Measures)를 요약 정리합니다.

포트폴리오의 실현 손익을 의미합니다. 가장 직관적이면서 기본적인 포트폴리오 평가 지표이지만 손익률만으로 포트폴리오를 평가하는 것은 위험할 수 있습니다. 이어서 알고 있으면 좋은 몇 가지 대표적인 포트폴리오 리스크 평가 지표들을 소개합니다.

알파는 시장 대비 주식 포트폴리오 손익률을 의미합니다. 만약 시장(코스피, 코스닥 등) 손익률이 10%이고 포트폴리오 손익률이 15%라면 알파는 5%가 됩니다. 반면 포트폴리오 손익률이 5%라면 알파는 -5%가 됩니다.

베타는 주식 종목 손익률과 시장 손익률의 공분산의 시장 손익률 분산 대비 비율입니다. 베타는 주식 종목과 시장의 방향성이 얼마나 비슷한지를 알려줍니다, 수식은 다음과 같습니다.

특정 기간에서 는 종목 손익률 시계열이고 은 시장 손익률 시계열 입니다. 여기서 분모는 시장 손익률의 분산, 분자는 시장 손익률과 종목 손익률의 공분산입니다.

샤프 비율은 무위험(risk-free) 자산의 손익률 대비 기대 초과 손익률을 의미합니다. 수식은 다음과 같습니다.

포트폴리오 손익률 에 무위험 자산 손익률 를 빼고 위험으로 해석할 수 있는 포트폴리오 손익률의 표준편차 를 나눈 값입니다.

소르티노 비율은 샤프 비율과 비슷한 척도입니다. 소르티노 비율에서는 포트폴리오 손익률 시계열의 표준편차인 대신에 시계열에서 하락(downside) 부분에서의 표준편차 를 분모로 사용합니다. 이는 변동성 중에서 급등과 같은 상승 변동성은 좋은 것으로 여기고 하락 변동성만을 부정 요소로 반영하는 것입니다. 수식은 다음과 같습니다.

아무리 수익률이 높더라도 MDD가 크면 좋은 포트폴리오라고 할 수 없을 것입니다. 실전 투자에서 낙폭이 크면 손절을 하기 쉽상이므로 안정적인 포트폴리오가 필요합니다.

윈도우에서 리눅스(우분투) 사용하자! WSL(Windows Subsystem for Linux) 소개

개발을 주로 리눅스에서 하는 개발자들이 많을 것입니다. 여러모로 리눅스는 개발 편의성과 생산성을 높여 줍니다. 그러나 개발 외적으로는 리눅스가 불편한 점이 많아 윈도우를 포기할 수도 없습니다. 윈도우를 포기할 수 없는 이유 3가지를 들어 보겠습니다.

  1. 한국의 많은 사이트들(특히 공공기관 사이트들)이 윈도우에서만 사용가능하거나 윈도우에서 편리하다. (Ex. 연말정산)
  2. 윈도우에 최적화된 MS Office를 꼭 써야 한다.
  3. 게임…

다행히도 윈도우에서 리눅스를 사용할 수 있는 다양한 방법이 있습니다.

  1. Virtual Machine: VMWare, Virtual Box 등
  2. Docker Container
  3. WSL (Windows Subsystem for Linux)

여기서 Virtual Machine을 이용한 방법은 많은 분들이 이미 알고 계실거라 생각합니다. 그러나 Virtual Machine에게 컴퓨터의 리소스를 나눠줌으로써 (정말 고사양 컴퓨터가 아니라면) 성능 문제가 생기기 쉽습니다.

Docker Container는 개발 환경을 독립적으로 유지하기에 좋지만 번거로운 감이 있습니다.

그래서 이 포스트에서는 WSL을 이용하여 윈도우에서 우분투를 쉽게 사용하는 방법을 소개하고자 합니다.

먼저 WSL을 활성화 시켜야 합니다. 윈도우 설정 > 앱 > 프로그램 및 기능 > Windows 기능 켜기/끄기로 갑니다. 아니면 윈도우 키 > "Windows 기능 켜기/끄기" 검색해도 됩니다.

Windows 기능 켜기/끄기

이렇게 WSL을 설치하고 나면 Microsoft Store에서 Ubuntu를 설치할 수 있습니다.

Microsoft Store

Ubuntu는 가장 최신의 LTS 버전이므로 가장 왼쪽에 있는 Ubuntu를 설치하면 됩니다. 버전이 명시되어 있는 Ubuntu를 설치해도 됩니다.

Ubuntu를 설치하고 나면 다음과 같이 bash 터미널을 띄울 수 있습니다.

ubuntu bash

이제 윈도우에서도 우분투를 맘껏 사용하시면 됩니다. 글을 쓰는 시점에서 아직 하나 아쉬운 점은 WSL에서 tensorflow-gpu를 사용할 수 없다는 것입니다. 이 부분에 대해서는 MS에서 GPU 관련 개선을 진행중이라 하니 기다려보면 되겠습니다.

WSL 우분투의 파일시스템은 C:\Users\<사용자이름>\AppData\Local\Packages 아래에 CanonicalGroupLimited.Ubuntu로 시작하는 폴더를 찾아보면 됩니다. 이 폴더에서 LocalState\rootfs를 보면 우분투 bash에서 보던 파일 구조를 확인할 수 있습니다.

장고(Django) 환경의 Jupyter Notebook 실행하기

Django로 웹개발을 하다보면 Django의 ORM(Object-relational Mapping)을 자주 사용하게 됩니다. Django의 ORM 관련 문서는 여기를 참고해 주세요.

from django.db import models 모듈의 Model 클래스로 DB를 쉽게 구축할 수 있습니다. 그럼에도 DB 구축 과정에서 테스트성 작업도 필요하게 됩니다. 예를들어, 테스트 데이터를 생성해 보거나, 모델을 이용하여 질의(Query)를 만들어 보거나, 데이터를 수정해 보거나, 테스트로 입력한 데이터들을 삭제하거나 등입니다. 즉, 데이터 CRUD(Create, Retrieve, Update, Delete)를 테스트 해볼일이 많습니다.

Django 설정이 로딩된 상태에서만 모델들을 사용할 수 있습니다. 이들을 테스트하기 위해서 Django View에서 테스트 코드를 작성하고 GET 호출을 하는 번거롭고 비효율적인 방법으로 테스트할 수도 있습니다만, 보다 효과적인 방법을 소개합니다.

Terminal window
python manage.py shell

이렇게 Django 프로젝트의 설정이 로딩된 쉘을 실행하고, 이 위에서 모델들을 다룰 수 있습니다.

먼저 django-extensions를 설치합니다.

Terminal window
pip install django-extensions

그리고 settings.py에서 INSTALLED_APPS 리스트에 django_extensions를 추가합니다.

INSTALLED_APPS = [
...
'django_extensions',
]

이제 다음과 같이 shell_plus를 실행하면 관련있는 Django 모듈들을 자동으로 임포트해 줍니다.

Terminal window
python manage.py shell_plus

3. django-extensions의 shell_plus + Jupyter Notebook

섹션 제목: “3. django-extensions의 shell_plus + Jupyter Notebook”

Django 환경을 Jupyter Notebook(Lab)으로 사용할 수 있습니다.

Terminal window
python manage.py shell_plus --notebook