소프트웨어 스펙의 모든 것 - 프로젝트를 성공으로 이끄는 소프트웨어 스펙(SRS) 작성법
김익환.전규현 지음 / 한빛미디어 / 2021년 1월
평점 :
장바구니담기


개인적으로 프로젝트에 돌입할 때마다 스펙이라는 문서를 읽고 쓸 기회를 접하며, 덕질하는 시간에는 오픈 소스 문서 번역등에 기여해 본 경험이 있기에 언제고 기회가 되면 소프트웨어 스펙 작성법에 대해 진지하게 배우고 고민해봐야 겠다는 생각을 했는데 마침 적합한 책이 등장하여 리뷰를 남긴다.

본 책의 메인 주제인 SRS란 소프트웨어 요구 명세를 의미하며 스펙이라고도 부른다. 구체적인 실체를 알고 싶다면 아래 링크를 클릭하여 저자가 소개하는 템플릿을 다운로드 하여 확인하기 바란다.

SRS Template 다운로드SRS1
SRS2

이 책은 SRS를 작성하는 방법을 다루는 책으로 Who, What, How 등 다각도에서 고민해보며 기업 문화까지 스펙에 녹이고자 노력하는 진솔함이 돋보이는 책이다.

저자는 2000년 초반에 출간된 “대한민국에는 소프트웨어가 없다.” 책의 저자이기도 하다. 당시 대한민국의 찍어내기식 사농공상 문화에 회의를 느꼈기에 책을 읽으며 많은 생각을 하였다.

S/W 중심의 대한민국의 경쟁력 향상을 위해 개발자, 정부, 기업 등에 강한 일침을 가한 내용이 인상적이었는데 20년 가까이 지나 당시의 조언에 실리콘밸리식 문화와 커리어가 가미된 본 도서를 읽게 되니 감회가 새로웠다.

컴퓨터 공학을 전공한 사람이라면 대부분 소프트웨어 공학 만큼 재미없는 전공 과목을 찾기도 어려울 것이다. 코딩을 통해 눈으로 결과를 보는 과정도 없고 실무 경험도 전무한 대학생이 사상 누각 형태로 장님이 코끼리 다리 만지듯 저 위에 떠 있는 실체없는 공학을 이해하고자 노력하는 것은 정말 답답한 노릇이 아닐 수 없다.

문제는 이 현상이 기업에 입사하여 시니어가 되어도 지속된다는 점에 있다. 하나의 프로젝트를 모두 총괄하는 사람이 되어보기 전까지는 이런 총체적인 눈을 필요로 하지 않기 때문이다. 게다가 경험 미숙으로 스펙에 대한 내용이 구체적으로 와 닿을리도 만무하다.

그런 측면에서 본 도서는 스펙을 작성하는 일이 따분함을 넘어서 왜 어려운지, SRS의 실체는 무엇인지 설명하기 위해 많은 지면을 할애한다.

스펙에 대한 회사 구성원의 오해는 어떤 것들이 있는지, 스펙과 유사한 설계 및 요구사항과의 차이점은 무엇인지, 현재 스펙과 관련된 악습과 관행은 무엇인지, 기업 문화가 스펙에 왜 반영되어야 하는지, 스펙을 제대로 작성하지 못해 발생하는 실제 사례들은 어떤 것이 있는지 살펴본다. 2부에서는 실제 사례를 중심으로 SRS를 작성하는 예시도 소개된다.

스펙이 작성하기 어렵다는 것은 저자도 충분히 공감하고 인정하기에 이를 작성하는 딱딱한 매뉴얼에서 벗어나 예시, 차이, 관점의 변화, 기업 문화, 영향 사례를 다각도로 짚어보며 스펙을 최대한 알기 쉽게 설명하고자 노력한 점이 책의 백미이다.

이 책에는 SRS의 작성법 외에 또 다른 가치가 숨어있다. PM, 아키텍트 이상의 관리자에게 필수적인 프로젝트가 실패하는 이유, SRS를 통해 소프트웨어를 최단 시간 내 개발하는 법, 기업 문화와 사람 관리에 대한 방법에도 포커싱을 맞추고 있다.

사실 이 모든 내용들이 올바른 방향으로 선행되어야 의미있는 SRS를 작성할 수 있음을 강조하고 있다. 그저 작성 요령만 갖출것이 아니라 개발문화, 관행, 습관, 프로세스, 원리, 원칙들이 모두 녹아있어야 좋은 SRS를 작성할 수 있다는 의미이다.

SRS의 중요성을 인식하기 위해 책에서 제시하는 여러 예시 중 특히 인상 깊었던 것 2개를 꼽아보려 한다. 하나는 모든 프로젝트 이해관계자를 연결하는 중심이라는 점이다. 이 덕분에 제품이 완성되지 않아도 영업팀은 사전 판매에 돌입할 수 있으며, 인증도 사전에 취득할 수 있게 된다.이해관계자

다음은 1:10:100 규칙에 대한 설명이다. 스펙이 변경될 경우 요구분석 단계에서의 비용이 1이라는 가정하에 유지보수 단계로 넘어갈수록 200배에 가까운 비용이 낭비된다. 시간이 흐를수록 얼마나 큰 비용이 발생하는지 구성원 전부 명확히 인식할 필요가 있으며, 그렇기에 스펙이 정확히 작성되어야 하는 것이 얼마나 중요한지를 보여주는 사례이다.규칙

가장 인상깊었던 파트는 6장(프로세스)과 9장(How) 파트이다. SRS를 작성하는 매우 구체적인 방안과 예시가 소개되고 있으며 코드 리뷰처럼 스펙을 리뷰하는 방법이나 협업의 방향을 다루고 있어 조직의 발전을 위한 방향을 엿볼 수 있다.

더불어 소스코드 및 유닛 테스트를 통한 스펙을 작성하는 실전법이나 인터페이스 개선 및 정의 부분은 수십년 간 경험을 축적한 저자의 내공을 느낄 수 있는 파트였다.

10장 도구 편에는 SRS를 작성하는데 도움이 되는 툴들이 소개되는데 미처 몰랐던 유용한 Tip들이 다양하게 소개되어 있어 실전에 유용하게 사용할 수 있다.

2부에서는 SRS 작성을 위한 구체적인 예시가 등장한다. 1부에서 익힌 감에 현 직장의 문화를 더해 실전처럼 적용해 볼 수 있는 구성이 마음에 들었다. 다만 한가지 아쉬운 점은 하나의 특정 개발 사례를 중심으로 일관성있게 소개되었다면 더욱 템플릿을 이해하기 쉽지 않았을까 싶다.

소프트웨어 공학에 대한 책 중 이론을 설명하거나 번역서는 그래도 자주 접할 수 있다. 하지만 국내 저자가 국내 정서를 반영하여 작성했다는 점, 지극히 실전적이고 구체적인 예시를 든다는 점, 수십년 간의 전문적인 커리어가 반영되었다는 점에서 이 책은 관련 서적 중 매우 귀중한 희소성을 띈다 할 수 있다.

PM, 아키텍트 이상의 관리자에게는 SRS 작성법은 물론 프로젝트의 성공과 올바른 기업 문화의 정착을 위해 필독서일 것이다.

그 외 구성원에게 있어서도 이론으로만 존재했던 소프트웨어 공학의 실체를 느끼고, 개발 및 조직 문화를 이해하며, 프로젝트의 일원으로서 커뮤니케이션 능력을 향상 시키는데 도움이 되므로 어느 정도의 경험이 쌓인 개발자라면 반드시 일독할 것을 권하고 싶다.



소프트웨어, Sw, 스펙, Srs, 사례연구, 기업문화, 프로세스, 도구, 체크리스트, 인터페이스, 프로세스, 프로젝트


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
통계의 아름다움 - 인공지능 시대에 필요한 과학적 사고
리찌엔.하이언 지음, 김슬기 옮김, 김재광 감수 / 제이펍 / 2020년 11월
평점 :
장바구니담기


이 책의 최고 장점을 꼽으라면 단연 96가지의 예시들이다. 통계학에 어울리는 귀납적인 예시를 통해 저 위에 추상적으로 존재하는 딱딱하고 어려운 통계의 개념을 96가지나 되는 예제로 비추어 일상의 언어로 끌어내리는 탁월한 가독성과 폭 넓은 저자의 박학다식에 극찬을 아낄 수 없다. 먼저 그 예시들이 무엇인지 몇 가지 소개해 보려 한다.

  • 로또 복권 당첨 숫자로 지금까지 1 ~ 20의 숫자가 많이 등장했다면 다음 회차에는 21 ~ 45의 숫자가 많이 등장할까?

물론 “아니다”. 조금만 생각해보면 동전 던지기에서 앞면이 여러번 등장했다고 다음번에 뒷면이 등장할 확률이 높아지는 것은 아님을 알 수 있다. 그런데 왜 가끔 우리는 직관적으로 이런 오답을 내리는 것일까?

정도의 차이가 있을 뿐 우리는 모두 정규분포라는 단어를 알고 있다. 중학교 때 부터 이미 배운 용어이기 때문이다. 그런데도 이 단어가 친숙하지 않은 이유는 무엇일까? 아마도 분포라는 단어보다는 “정규”라는 단어 때문일 것이다. 그런데 정규라는 단어는 정상(Normal)이라는 뜻이다. 한 마디로 정상적인 분포라는 뜻이다. 자연계에는 정규 분포가 더 많이 나타나기에 상식적으로 흔한 쪽에 정상이라는 단어를 부여한 것일 뿐이다.

아래 그림은 책에 등장하는 정규분포와 균등분포의 차이이다. 일상에는 정규분포가 훨씬 많은데 우리의 직관은 균등분포가 당연하다고 착각한다.정규분포 시각화

아래 라오의 실험 결과를 보면 정규분포와 균등분포의 착각에 대한 감을 잡기 더 쉬워진다. 단지 3번의 쉬운 조사를 표로 정리한 결과이다.

  • 병원에서 1,000명 신생아의 성별(남/여) 기록
  • 동전을 1,000번 던져서 앞면/뒷면 기록
  • 상상 속에서 동전을 1,000번 던져서 앞면/뒷면 기록
  • 마지막으로 각 3개 유형의 기록을 5개씩 모아 앞면 혹은 남자의 등장 횟수를 기록한다.라오의 실험

실험1(병원데이터)와 실험2(실제 동전 던지기)는 자연계의 확률 현상으로 지극히 정상적으로 정규 분포를 띄고 있음을 알 수 있다. 그런데 실험3(상상 속 동전 던지기)를 보면 우리의 인식은 판이하게 다르다. 즉, 균등분포에 대한 확률 집착을 떨치기 어려워진다. 앞/뒷면의 비율이 깨질까 염려되어 비슷한 횟수로 앞/뒷면을 맞추고자 노력하기 때문이다.

정규분포의 학문적 정의를 내리기 이전에 이 시각화 자료와 로또 복권의 예시를 먼저 배워야 하지 않을까? 바로 이 책이 지식을 전달하는 방식처럼 통계, 과학, 수학의 개념을 위와 같이 예시, 시각화 자료, 일상의 언어를 통해 먼저 이해를 도와야 한다는 말이다.

책에 등장한 모든 예시들에 대하여 위처럼 발견한 인사이트를 자세히 다뤄보고 싶지만, 리뷰라는 특성 상 영감을 돋궈주는 몇가지 재미있는 예시 및 인용구들을 짧게 나열해 보겠다.

  • 아주 오래전부터 인류는 확률성 사고를 가지고 있었다. 심지어 “역경”의 점치기도 확률 숫자 시드(Seed)를 설정해야 했다.

  • 상금 배분 문제
    • 규칙 : 이긴사람에게 10점을 부여. 60점을 먼저 획득한 사람이 승리.
    • 상황 : A가 50점, B가 30점인 상태에서 불가피 하게 게임이 중단될 경우 상금을 어떻게 배분해야 공정할까?
    • 가능성이라는 개념이 등장한다.
  • 중국 우한 시민 서민 아파트 공개 추첨
    • 우한시 : 5141명 중 124명 당첨. 그 중 6명의 아파트 증명 번호가 연속된 숫자로 드러나 자격 박탈.
    • 라우허코우시 : 1138명 중 514명 당첨. 그 중 14명이 연속된 숫자였지만 자격 유지.
    • 어떤 차이가 있을까? 여기에서 귀납법 계산과 몬테카를로의 인사이트를 얻을 수 있다.
  • 몬티홀 문제
    • 3개의 문이 있다. 1개의 문 뒤에는 차(Car), 나머지 2개의 문 뒤에는 염소가 있다. 차를 고르면 상품으로 주어진다.
    • 참가자가 하나를 고르면 사회자가 문 뒤에 나머지 하나를 열어 염소를 보여준다.
    • 참가자는 문을 고를 기회가 다시 주어지는데 “선택을 유지할지 vs 다른 문을 선택할지”의 상황에서 어떤 선택이 유리할까?
    • 조건부확률과 베이즈 추론을 이해하는데 이만한 예제가 없다.
  • 차(茶)를 맛보는 여인
    • “차를 먼저 따르고 우유를 나중에 따른다. vs 우유를 먼저 따르고 차를 나중에 따른다.” 중 어느 차가 더 맛있을까?
    • 통계 추론에서 매우 중요한 가설 검증, 귀무가설, 유의수준을 쉽게 이해할 수 있다.
  • 검은 공의 비율은?
    • 상자안에 흰공, 검은공이 전체 N개 있다. 1개를 꺼낸 후 다시 상자에 집어넣는다고 가정하고 10회 반복했을 때 1개가 검은공이라면 상자안 검은공의 비율p는 얼마인가?
    • 최대우도를 이해할 수 있다.
  • 식스시그마의 결함률은?
    • 정규분포, 표준편차, 귀무가설을 이해할 수 있다.
  • 뉴턴의 사과
    • 연역적 : F = G * (m1 * m2) / r^2
    • 귀납적 : F = f(m1, m2, r) + e
    • 적합(fitting), 학습, 오차의 이해
  • 명목, 서열, 등간, 비율 척도
    • 명목척도 : =, != 연산만 가능
    • 서열척도 : >, < 연산도 가능
    • 등간척도 : +, - 연산도 가능
    • 비율척도 : *, / 연산도 가능
    • 구차한 설명없이 수학으로 직관적인 설명이 가능하다.
  • 제노의 패러독스
    • 상황 : 아킬레우스의 속도가 거북이의 10배. 100m 앞에서 도망치는 거북이를 아킬레우스가 잡을 수 없다.
    • 이유 : 아킬레우스가 100m 쫓아가면 거북이는 10m 앞서 간다. 다시 아킬레우스가 10m 쫓아가면 거북이는 1m를 앞서 간다. 무한 반복되어 영원히 거북이를 잡지 못한다.
    • 시간의 연속이라는 개념이 등장하며 극한과 급수를 이용해 이 오류를 해결할 수 있다.
  • 설계행렬(Design Matrix = Data Frame)
    • 일반적인 행렬(Matrix = Numpy)와는 다른 개념
    • 개체의 관점 : 행이 기본단위
    • 분석의 관점 : 열이 기본단위
    • 수학적 관점 : 벡터가 기본단위
    • 기하학적 관점 : 공간의 표본점(열과 행은 차원)설계행렬
  • 시각화와 역사상 가장 좋은 통계 그래프(나폴레옹 원정)
    나폴레옹모션차트
    • 시각화의 모든 역사, 발전과정, 극좌표와 직각좌표 간 선형변환 등을 알 수 있다.
  • 머신러닝과 딥러닝의 모델에 관한 대부분의 지식과 직관적 예시

  • 통계학에서부터 빅데이터까지의 주요 개념 및 도구들의 변화

  • 데이터의 함정
    • 중국 IT 업계의 대부들은 모두 전갈자리 생일을 갖고 있다?
    • 승자의 저주 / 여신과의 인연 / 이름의 중요성 / 미국의 대선 / 행운아의 전설 / 하버드 총장의 해고 / 심슨의 패러독스

신의 언어를 인간의 언어로 표현하는 방법 중에 구체적인 예시만한 것이 또 있을까?

소크라테스의 문답법, 성경이나 고대 경전을 보면 직관적으로 이해하기 힘든 난해한 개념을 설명할 때 극단적인 보기를 들어 예시를 들곤 한다.

앞서 언급했듯 통계라는 딱딱하고 난해한 개념을 쉽게 표현하기 위해 이 책에는 정말 많은 예시들이 등장한다. 직접 세보진 않았지만 역자의 머리글을 읽어보면 무려 96가지의 예시가 등장한다고 한다. 통계학을 다루는 서적답게 귀납적인 예시를 통해 통계를 설명하는 구성이 흥미롭다.

책은 그저 예시만 다루는 것이 아니다. 2장 데이터와 수학 편을 보면 선형대수의 메타지식을 물흐르듯 설명하는데 그간 배워온 선형대수 지식에 등고선이 생기며 무엇이 중요하고 파트별로 데이터 분석이나 통계에 어떤 방식으로 활용되는지 입체적으로 이해할 수 있었다. 뒷장에는 현대에 각광받는 머신러닝, 딥러닝은 물론 시각화와 데이터의 함정까지 다루고 있어 추천사에서 읽은 바와 같이 통계학의 고전부터 최신까지 거시적 이론 프레임에 대한 저자의 이해도가 느껴진다.

학창시절 처음 통계라는 말을 들었을 때 느꼈던 이미지를 회상해 보면 “숫자 덩어리, 복잡함, 아저씨, 재미없음” 정도의 느낌이었다. 하지만 그 때 이 책을 만났더라면 난 주저없이 통계학을 전공으로 선택했을 것이다.

지금와서 느끼는 통계는 책의 제목만큼이나 꽤 아름다운 학문이고 진리의 끝에 도달하고 싶어 노력했던 여정의 기록이라는 생각도 든다. 이런 통계의 의미는 늘 곁에 있었지만 내 안목은 좁아 미리 알지 못했고 알파고가 등장한 이후에야 조금이나마 제대로 느낄 수 있었을 뿐이다.

AI, 빅데이터, 4차 산업혁명 거창한 말을 시작하기에 앞서 진정 AI 분야로 발을 들이고 싶은 학생이나 입문자가 있다면 꼭 이 책으로 시작하라는 말을 드리고 싶다. 철학, 과학, 수학, 그리고 저자의 인생이 모두 녹아있어 스스로 이 분야의 적성에 적합한지 검증하는데 도움이 될 것이다. 더불어 통계의 첫 인상을 복잡한 숫자 덩어리로 인식하는 것이 나을지 일상의 흔한 흥미로운 퀴즈로 인식하는 것이 나을지 첫만남, 첫인상을 생각해 본다면 이 책으로 시작하는 것이 얼마나 행운일지 알게 될 것이다.

아울러 이미 데이터 분석, 과학 업무에 종사하는 이들에게도 추천하고 싶다. AI 세계의 무협지처럼 - 실제로 무협지의 예시도 자주 등장한다. - 흥미 진진하여 업무를 중단하고 머리 식히기에 이만큼 재미있는 책을 찾기 힘들 것이며, 통계와 데이터 과학의 세계는 너무나도 광범위하므로 분명 몰랐던 인사이트를 얻어 현재의 실력을 업그레이드 할 수 있는 좋은 인사이트를 제공할 것이기 때문에 필독을 권하는 바이다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
통계의 아름다움 - 인공지능 시대에 필요한 과학적 사고
리찌엔.하이언 지음, 김슬기 옮김, 김재광 감수 / 제이펍 / 2020년 11월
평점 :
장바구니담기


이 책의 최고 장점을 꼽으라면 단연 96가지의 예시들이다. 통계학에 어울리는 귀납적인 예시를 통해 저 위에 추상적으로 존재하는 딱딱하고 어려운 통계의 개념을 96가지나 되는 예제로 비추어 일상의 언어로 끌어내리는 탁월한 가독성과 폭 넓은 저자의 박학다식에 극찬을 아낄 수 없다.

댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
R을 이용한 퀀트 투자 포트폴리오 만들기 - 데이터 크롤링 및 분석, 퀀트 전략을 활용한 투자 종목 선정까지, 개정판
이현열 지음 / 제이펍 / 2021년 2월
평점 :
장바구니담기


퀀트 포트폴리오 전략의 기초에서 백테스트에 이르기까지 데이터 사이언스가 금융 도메인 지식을 만났을 때 필요로하는 핵심 지식들을 깔끔하고 이해하기 쉽게 정리한 책이다.

구현 과정은 R 언어를 활용하는데 요소요소 R의 강점을 잘 표현하고 있어 R을 제대로 쓰기에도 좋은 지침서라는 생각이 든다. 크롤링 과정으로 R의 Tidyverse 철학을 느껴볼 수 있고, 8장의 dplyr 데이터 분석 패턴이라는 징검다리를 건너, 각종 논문에 등장하는 수식을 통계 패키지를 활용해 한두줄의 코드로 깔끔하게 분석하는 과정을 통해 R을 어떻게 사용해야 하는지 거침없이 표현하고 있다.

책을 읽으며 느꼈던 장점과 단점을 중심으로 리뷰를 시작해보겠다.


  • 책의 백미, 퀀트의 기초
    본 도서의 백미는 9 ~ 13장에 이르는 퀀트의 기초 내용을 간결하고 쉽게 정리한 점이다. 퀀트를 제대로 이해하려면 금융 공학에 대한 기본 지식, 논문 등의 연구 자료, 수식 및 도출 과정들이 모두 포함되어야 할 텐데 이들을 모두 포함하면 너무 난잡해지거나 분량 측면에서 감당하기 어려운 책이 되었을 것이다.

    위 필수 내용들이 하나도 빠지지 않으면서도 설명은 전체 맥락을 이해하는데 필수적인 부분만 다루고 수식 또한 논문 수준의 수식보다는 직관적으로 일반인들이 이해하기 쉬운 형태의 전개로 표현하는 등 짧은 지면에 핵심을 잘 간추리는 저자의 전달력에 놀랐다. 마치 논문과 구현의 경계에서 가장 쉬운 지름길을 찾아가는 과정 같았다.

    증권사에서 핀테크 스타트업에 이르기까지 풍부한 실전 경험을 바탕으로 패스트캠퍼스에서 R과 퀀트 투자 강의를 맡으며 퀀트 투자의 대중화를 위해 노력한다는 저자의 소개가 무색하지 않게 실력이 뛰어난 고수가 전달력까지 좋으면 이런 멋진 책이 탄생하는 구나 라는 생각이 들었다.

    그동안 퀀트 관련 여러 책들을 읽어봤고 논문들도 찾아봤는데 블랙-숄즈 방정식과 같이 이미 고전이 되어버린 방정식을 구현해본다던가, 기초를 건너뛰고 최근 주류인 딥러닝의 CNN, GAN 같은 기술을 접목할 때마다 기본 실력이 부족해서 답답했던 기억이 있다.

    반면 본 도서에서는 포트폴리오 운용 전략에 해당하는 종목 선정, 포트폴리오 구성, 백테스트 및 평가에 이르는 일련의 기초 과정의 핵심이 잘 정리되어 있어 그동안 내가 어떤 기초가 부족했던 것인지 일종의 미싱 링크를 찾은 느낌이었다.


본 서에서 다루는 퀀트의 기초 내용을 간단히 소개하면 다음과 같다.

  • 종목선정
    • 팩터(Factor) : 수익률에 영향을 미치는 요소
    • 베타(Beta) : 개별 주식이 전체 주식시장 변동에 반응하는 정도
    • 저변동성 효과 : 변동성이 낮은 종목들의 수익률이 높은 효과
    • 모멘텀 : 추세. 상승 추세는 지속적으로 상승하고, 하락 추세는 지속적으로 하락하는 관점
    • 밸류 : 기업의 가치. PER, PBR, PCR, PSR 등
    • 퀄리티 : 기업의 우량성. F-ScoreFSCORE_211
    • 섹터 중립 포트폴리오 : 모멘텀 등 팩터들이 특정 섹터의 호황기에 동일 섹터의 모든 종목이 함께 움직이는 경향인 쏠림 현상을 제거한 포트폴리오 구성 방법
    • 조엘 그린블라트 마법의 공식 구현
    • 멀티팩터 포트폴리오 : 위에서 배운 모든 팩터들과 이론들을 결합하여 지표를 설정해보는 과정으로 복습에도 도움이 되고 데이터 사이언스가 금융이라는 도메인을 만났을 때 어떤 작업이 이루어지는지 기본 흐름을 맛볼 수 있었다.
  • 포트폴리오 구성
    • 최소분산 포트폴리오 : 변동성이 최소인 포트폴리오로 고정된 분산-공분산 행렬에 대한 변동성이 최소가 되는 가중치 w를 찾는 최적화 문제최소분산_266
    • 최대분산효과 포트폴리오 : 상관관계가 낮아질수록 포트폴리오의 변동성이 낮아진다는 효과를 이용하여 분산효과를 최대로 하는 포트폴리오 구성 방법최대분산_267
      최대분산_277
    • 위험균형 포트폴리오 : 특정 자산의 비중을 증가시켰을 때 전체 포트폴리오의 위험성 증가 여부를 확인하여 위험 기여도를 산정. 편미분 개념.
    • 인덱스 및 인핸스트 인덱스 포트폴리오 : 액티브, 패시브 전략별 포트폴리오
  • 포트폴리오 백테스트
    • 현재 전략을 과거부터 실행 시 어떤 성과가 발생하는지 테스트해보는 과정
    • 60대 40 포트폴리오 백테스트 : 주식과 채권에 각각 60%, 40% 투자를 가정
    • 시점 선택 전략 백테스트 : 메브 파버의 논문을 활용한 전략으로 과거 10개월 이평선을 활용
    • 동적 자산배분 백테스트 : 지금까지 배운 모든 것들을 응용해보는 과정인데 이 파트가 없었으면 반쪽자리 백테스트가 되었을 것이다. 이 책이 가치있다고 생각한 부분 중 하나이며 앞서 배웠던 것들을 유기적으로 연결해볼 수 있다.동적자산_321
  • 성과 및 위험 평가
    • 백테스트로 구한 수익률의 성과 및 위험성을 평가하는 과정.
    • QMJ 팩터 : 우량성이 높은 종목들을 매수하고, 낮은 종목들을 공매도 하는 전략을 지수 형태로 표기

  • R의 강력함을 잘 표현하는 책(R vs Python)
    이 책의 또 다른 장점 중 하나는 R을 제대로 쓰면 얼마나 강력한지 무기가 될 수 있는지 보여준다는 점에 있다. 개인적으로 프로그래머이기에 Python을 더 많이 활용하고는 있지만 몇가지 특수한 상황은 R과 영원히 작별할 수 없게 만들곤 한다.

    첫째, dplyr 패키지를 활용한 일련의 데이터 분석 과정은 Python의 Pandas를 활용할 때보다 고정된 패턴이 있어 조금 더 직관적이고 생산적이다.

    Python의 최대 장점은 유연성에 있다고 생각한다. 데이터가 어떻게 생겨먹고 분석 기법이 무엇이든 뭐든지 표현하고 가공할 수 있다. 반면 그 유연성이 때로는 독이 되어 능숙하지 않은 기법을 찾아 쓸 때는 많은 시행착오를 거쳐야 하고 그 만큼 시간이 낭비되어 생산성을 저해하곤 한다.

    반면 R은 유연성이 다소 떨어질진 몰라도 join, glimpse, rename, mutate, filter, summarize, arrange, group by 등으로 이어지는 dplyr의 마법의 분석 패턴을 하나 잘 익혀 놓으면 Tabular 형식의 데이터 80%는 이 패턴 하나로 몇분 만에 깔끔하고 직관적으로 분석할 수 있다. 이 책에서는 8장의 절반만 할애해서 R의 핵심 기능을 너무 잘 표현하고 있다.

    프로그래밍에도 좋은 패턴과 예제 하나를 잘 익혀두면 나머지는 시간과 경험의 문제에 지나지 않는다. 비슷한 예로 웹프로그래밍을 처음 배울 때 게시판 예제 하나만 잘 짜도 대부분의 웹 프로그래밍 80%는 익히는 셈이라 할 수 있다. 나머지 디테일한 부분은 그저 시간과 경험의 싸움일 뿐이다.

    시중에 나온 R 서적이 상당히 많은데 내용은 충분하지만 기능별로 모두 파편화되어 돌아서면 잊어먹기 딱 좋은 구성이다. 하지만 이 책은 달랐다. 8장에서 펼쳐지는 데이터 분석의 기본 패턴을 잘 익혀놓으면 명확한 개념의 큰 물줄기를 얻을 수 있다. 더불어 주식 종목정보 분석이라는 흥미로운 유인책은 나름의 학습 동기를 부여해주기에 분석의 과정을 더욱 이해하기 쉬워지며 dplyr가 가지는 R의 매력을 여실히 보여준다.

    둘째, Tidyverse로 대표되는 R의 철학은 상당히 매력적인데 이 책이 그 장점을 잘 활용하고 있다. 예를 들면 JavaScript에는 Callback 지옥이 한 때 유명했는데 쉽게 말하자면 괄호의 지옥이다.

    A(B(C()))와 같이 일련의 함수 호출 과정속에 인자 혹은 옵션 몇가지만 추가되면 괄호속에 파묻혀 직관적으로 한 눈에 잘 들어오지 않는다. 이를 해결하기 위해 Promise나 async, wait 등의 기법이 나왔는데 Tidyverse에서는 이를 해결하지 위해 파이프 오퍼레이터(%>%)를 활용하여 논리적인 기능의 흐름의 경계선을 명확히 구분하여 직관적인 이해를 돕는다.

    셋째, 통계에 특화된 R의 기능이다. 9장의 예제에서도 나오지만 베타(개별 주식이 전체 주식 시장의 변동에 반응하는 정도)를 구하는데 필요한 R의 코드는 고작 한 줄이다. ‘'’R lm(ri ~ rm) ‘’’ 긴 통계학의 역사적인 아이디어를 포뮬러를 활용해 한 줄의 명령어로 쉽게 파악할 수 있다는 점은 R에서 쉽게 손을 뗄 수 없는 매력 중 하나이다.

    그 외에도 ggplot2가 Python 진영의 시각화 라이브러리에 비해 월등한 점, bookdown 패키지 등 산출물과의 연계 기능이 뛰어난 점, 유연성을 포기하고 일정 패턴을 가짐으로써 초보자의 진입 장벽이 낮다는 점 등이 부수적인 장점이라고 생각한다.

    물론 그렇다고 Python이 가진 범용 프로그래밍 언어 고유의 장점을 상쇄할 순 없다. 예를 들어 주식 데이터의 캔들 그림을 인풋 데이터로 활용하여 CNN으로 예측 분석 모델을 구현한다거나, RNN을 활용하여 주가 방향성을 분류, 오토인코더를 활용하여 주가 데이터를 생성하는 등의 딥러닝 위주 프로그래밍은 Python이 훨씬 편리하며 End-to-End의 구현, Serving과 배포 측면에서도 R이 Python을 따라가기엔 부족한 느낌이 든다.

    이런 이유들로 인해 조금 귀찮을지라도 Python과 R 두마리 토끼를 쫓게 되었는데 이 중 R의 장점을 이 책에서 잘 표현하고 있기에 R을 유기적으로 이해하고 빠르게 활용하고 싶은 독자에게 많은 도움이 될 수 있는 책이라는 생각이 들었다.


  • 기타(크롤링 등 프로그래밍 언어로써의 R)
    평소 크롤링은 Python 언어를 활용하는 편이라 이 책을 통해 R을 이용해 크롤링 하는 방법을 처음으로 접했는데 문법이 단순하고 코드량도 적어 참 깔끔하다는 생각을 했다. 프로그래머가 아닌 분들에게는 R 크롤링도 좋은 선택이 되겠다는 생각이 들었다.

    그 외 각종 공시정보를 어느 사이트에서 얻을 수 있는지, 제공되는 API에는 어떤 것들이 있고 발급 받는 방법 등이 잘 정리되어 있어 조사하는 시간을 줄일 수 있다는 점도 책의 장점이다.

    책의 전반부(1 ~ 7장)는 주로 크롤링과 데이터 수집, 가공에 대한 내용을 다루고 있는데 과정 중간마다 R의 기본 문법을 잘 정리해주고 있어 R의 다양한 기능 중 필요한 것만 쏙 뽑아먹는 느낌이었다.

    이 책은 어느정도 R 문법을 아는 분들을 대상으로 쓰여진 책이지만 난 오히려 이 책으로 굵직한 맥락을 숙지하고 필요할 때 거꾸로 레퍼런스를 찾아보는 것이 시간대비 학습 능률에 도움이 되겠다는 생각이 든다.

    개인적으로는 후반부(8 ~ 13장)에 관심이 많아 해당 부분 위주의 리뷰를 작성했지만 독자마다 필요로 하는 지식이 다를 수 있으므로 R의 기본 문법과 크롤링 등의 기능에 관심있는 독자라면 전반부(1 ~ 7장)의 내용도 매우 유익할 것 같다.


  • 아쉬운 점
    개인적으로 너무 마음에 들었던 책인지라 칭찬 일색으로 일관했기에 다소 아쉬웠던 점도 정리해 보려한다.

    • 퀀트 트레이딩 전략 및 심화 과정도 자세히 다루는 후속편이 나왔으면 좋겠다. 저자 분의 내공과 전달력이면 이 부분도 왠지 자신감이 생길것 같다. 물론 그러면 또 어렵다고 악평을 하는 독자 분들이 많아지는 것도 알고 있다. 책을 좋아하는 사람으로써, 입문서보다는 중급서에 관심이 많아지게 된 세월 때문에 이해하기 어려우면 비추하는 리뷰 문화에 할 말이 참 많다..

    • 딥러닝과 융합된 R의 모습도 보고 싶은데 이 역시 본 도서에서 다룰 일은 아니고 후속편으로 등장했으면 좋겠다. 적고 보니 후기작에 대한 의견이 되어버린 것 같은데 사실 범위 정도를 제외하고는 본 도서를 흠잡기 어렵다.


수식과 기본을 놓치지 않고도 퀀트의 기초 지식을 쉽게 습득하고 싶은 분들께, R을 R답게 활용하고 싶은 분들께, 데이터 사이언스가 금융 도메인 지식을 만나면 어떻게 활용되는지 알고 싶은 분들께 추천드린다.



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
R을 이용한 퀀트 투자 포트폴리오 만들기 - 데이터 크롤링 및 분석, 퀀트 전략을 활용한 투자 종목 선정까지, 개정판
이현열 지음 / 제이펍 / 2021년 2월
평점 :
장바구니담기


퀀트 포트폴리오 전략의 기초에서 백테스트에 이르기까지 데이터 사이언스가 금융 도메인 지식을 만났을 때 필요로하는 핵심 지식들을 깔끔하고 이해하기 쉽게 정리한 책이다.

댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo