"장대양봉"의 두 판 사이의 차이

cdc wiki
이동: 둘러보기, 검색
(관련 기술의 현황 및 분석(State of art))
(DB 설계안)
 
(같은 사용자의 중간 판 33개는 보이지 않습니다)
62번째 줄: 62번째 줄:
 
1. Scrapy
 
1. Scrapy
 
   
 
   
Scrapy(스크래피)는 Python으로 작성된 오픈소스 웹 크롤링 프레임워크이다. 웹 데이터를 수집하는 것을 목표로 설계되었다. 또한 API를 이용하여 데이터를 추출할 수 있고, 범용 웹 크롤러로 사용될 수 있다. Scrapy는 웹 스크래핑 개발 및 서비스 회사 Scrapinghub Ltd.에 의해 유지된다.
+
Scrapy(스크래피)는 Python으로 작성된 오픈소스 웹 크롤링 프레임워크이다. 웹 데이터를 수집하는 것을 목표로 설계되었다. 또한 API를 이용하여 데이터를 추출할 수 있고, 범용 웹 크롤러로 사용될 수 있다. Scrapy는 웹 스크래핑 개발 및 서비스 회사 Scrapinghub Ltd.에 의해 유지된다.
 
  Scrapy 프로젝트는 "spiders" 를 중심으로 개발되었다. "spiders"는 여러 기능이 내장된 크롤러이다. 장고와 같은 철학인 중복배제를 따르고 있는 프레임워크이다. Scrapy는 개발자들이 코드 재사용성을 높일 수 있도록 도와주어, 큰 규모의 크롤링 프로젝트 개발을 쉽게 할 수 있도록 해준다. 또한 Scrapy는 개발자들이 크롤링하려는 사이트의 동작을 테스트할 수 있도록 웹 크롤링 쉘을 제공한다.
 
  Scrapy 프로젝트는 "spiders" 를 중심으로 개발되었다. "spiders"는 여러 기능이 내장된 크롤러이다. 장고와 같은 철학인 중복배제를 따르고 있는 프레임워크이다. Scrapy는 개발자들이 코드 재사용성을 높일 수 있도록 도와주어, 큰 규모의 크롤링 프로젝트 개발을 쉽게 할 수 있도록 해준다. 또한 Scrapy는 개발자들이 크롤링하려는 사이트의 동작을 테스트할 수 있도록 웹 크롤링 쉘을 제공한다.
  
78번째 줄: 78번째 줄:
  
 
◇ ‘애널리스트의 리포트에 기반한 주식 종목 추천 방법 및 시스템’ (리서치 알음)
 
◇ ‘애널리스트의 리포트에 기반한 주식 종목 추천 방법 및 시스템’ (리서치 알음)
  - 애널리스트들의 보고서들을 분석한 ‘빅데이터’를 기반으로 주식 종목 추천 서비스를 진행한다. 보고서 발간 당일 갭상승 수익률(A1), 고점 수익률(A2), 종가 수익률(A3)을 종합적으로 평가하고, 발간 이후 25거래일, 50거래일의 고점 수익률 등을 분석하여 실제로 리포트가 얼마나 영향력이 있는지를 파악한다.
+
 
 +
  애널리스트들의 보고서들을 분석한 ‘빅데이터’를 기반으로 주식 종목 추천 서비스를 진행한다. 보고서 발간 당일 갭상승 수익률(A1), 고점 수익률(A2), 종가 수익률(A3)을 종합적으로 평가하고, 발간 이후 25거래일, 50거래일의 고점 수익률 등을 분석하여 실제로 리포트가 얼마나 영향력이 있는지를 파악한다.
  
 
◇‘연관 종목 정보 통합 제공 방법‘ (신한금융투자 주식회사) -거절
 
◇‘연관 종목 정보 통합 제공 방법‘ (신한금융투자 주식회사) -거절
  - 주식 정보를 제공하는 장치에 의해 실행되는 연관 종목 정보 통합 제공 방법은 사용자의 단말로 제공되는 주식 종목에 대응하는 하나 이상의 연관 정보를 생성하는 제1 단계와, 사용자의 단말에 출력된 주식 정보 제공 창에 입력되는 하나 이상의 단어와 상기 생성된 연관 정보를 매칭하여 대응하는 주식 종목을 확인하는 제2 단계와, 상기 확인된 주식 종목에 대한 정보와 상기 주식 종목에 대응하는 하나 이상의 연관 정보를 상기 주식 정보 제공 창을 통해 조회 가능하도록 출력하는 제3 단계를 포함하여, 이를 통해 고객이 특정 주식 종목을 정확하게 알고 있지 않더라도 연관 정보를 입력하여 해당 주식 종목이나 그와 관련된 주식 종목에 대한 주식 정보를 확인할 수 있다.
+
 
 +
  주식 정보를 제공하는 장치에 의해 실행되는 연관 종목 정보 통합 제공 방법은 사용자의 단말로 제공되는 주식 종목에 대응하는 하나 이상의 연관 정보를 생성하는 제1 단계와, 사용자의 단말에 출력된 주식 정보 제공 창에 입력되는 하나 이상의 단어와 상기 생성된 연관 정보를 매칭하여 대응하는 주식 종목을 확인하는 제2 단계와, 상기 확인된 주식 종목에 대한 정보와 상기 주식 종목에 대응하는 하나 이상의 연관 정보를 상기 주식 정보 제공 창을 통해 조회 가능하도록 출력하는 제3 단계를 포함하여, 이를 통해 고객이 특정 주식 종목을 정확하게 알고 있지 않더라도 연관 정보를 입력하여 해당 주식 종목이나 그와 관련된 주식 종목에 대한 주식 정보를 확인할 수 있다.
  
 
◇ 테마 주식에 대한 온라인 플랫폼의 운용방법 및 그 시스템 (이재성)
 
◇ 테마 주식에 대한 온라인 플랫폼의 운용방법 및 그 시스템 (이재성)
  - 본 발명은 테마 주식에 대한 온라인 플랫폼의 운용방법 및 그 시스템에 관한 것이다. 또한 본 발명은 종래기술의 문제점을 해결하기 위하여, 실시간으로 주식종목의 주가를 증권사 API를 통하여 수집하고, 비슷한 성격을 가진 주식종목을 분류하여 화면에서 주식종목의 등락률을 한꺼번에 보여주는 사용자가 한눈에 해당 종목군의 변화 추세를 실시간으로 볼 수 있도록 하는데 목적이 있다. 더 나아가 과거 데이터를 활용하여, 어떠한 종목군이 과거에 급등하였는지 스스로 학습할 수 있는 자료를 제공하여 최근에 어떤 종목군들이 강세였는지를 기반으로 미래에 어떤 종목군들이 활발하게 움직일지를 예측할 수 있게 하는데 목적이 있다.
+
 
 +
  본 발명은 테마 주식에 대한 온라인 플랫폼의 운용방법 및 그 시스템에 관한 것이다. 또한 본 발명은 종래기술의 문제점을 해결하기 위하여, 실시간으로 주식종목의 주가를 증권사 API를 통하여 수집하고, 비슷한 성격을 가진 주식종목을 분류하여 화면에서 주식종목의 등락률을 한꺼번에 보여주는 사용자가 한눈에 해당 종목군의 변화 추세를 실시간으로 볼 수 있도록 하는데 목적이 있다. 더 나아가 과거 데이터를 활용하여, 어떠한 종목군이 과거에 급등하였는지 스스로 학습할 수 있는 자료를 제공하여 최근에 어떤 종목군들이 강세였는지를 기반으로 미래에 어떤 종목군들이 활발하게 움직일지를 예측할 수 있게 하는데 목적이 있다.
 
    
 
    
 
◇ 주식 분석 리포트 작성 및 평가 서버 및 그 방법 ( 벨로시티랩 )
 
◇ 주식 분석 리포트 작성 및 평가 서버 및 그 방법 ( 벨로시티랩 )
  - 본 발명의 일 실시예에 따른 주식 분석 리포트 작성 및 평가 서버에 의해 수행되는 주식 분석 리포트 작성 및 평가 방법에 있어서, 제1 사용자 단말로부터 주식 투자 결정 요소인 투자 포인트를 수신하는 단계; 수신한 투자 포인트를 기초로 주식 분석 리포트를 생성하여 제2 사용자 단말로 전송하는 단계; 주식 분석 리포트를 수신한 제2 사용자 단말로부터 주식 분석 리포트 평가 정보를 수신하는 단계; 수신한 주식 분석 리포트 평가 정보를 기초로 제1리워드를 책정하고, 책정된 제1리워드를 제1 사용자 단말로 전송하는 단계; 및 주식 분석 리포트의 조회수 및 다른 사용자 단말로부터 수신한 주식 분석 리포트 평가 정보 중 적어도 어느 하나를 기초로 책정되는 제2리워드를 제2 사용자 단말로 전송하는 단계를 포함하는, 주식 분석 리포트 작성 및 평가 방법을 제공하고자 한다.
+
 
 +
  본 발명의 일 실시예에 따른 주식 분석 리포트 작성 및 평가 서버에 의해 수행되는 주식 분석 리포트 작성 및 평가 방법에 있어서, 제1 사용자 단말로부터 주식 투자 결정 요소인 투자 포인트를 수신하는 단계; 수신한 투자 포인트를 기초로 주식 분석 리포트를 생성하여 제2 사용자 단말로 전송하는 단계; 주식 분석 리포트를 수신한 제2 사용자 단말로부터 주식 분석 리포트 평가 정보를 수신하는 단계; 수신한 주식 분석 리포트 평가 정보를 기초로 제1리워드를 책정하고, 책정된 제1리워드를 제1 사용자 단말로 전송하는 단계; 및 주식 분석 리포트의 조회수 및 다른 사용자 단말로부터 수신한 주식 분석 리포트 평가 정보 중 적어도 어느 하나를 기초로 책정되는 제2리워드를 제2 사용자 단말로 전송하는 단계를 포함하는, 주식 분석 리포트 작성 및 평가 방법을 제공하고자 한다.
  
 
◇ 테마 및 연관 주식종목 설정 방법 ( 케이티비투자증권 주식회사 ) -거절
 
◇ 테마 및 연관 주식종목 설정 방법 ( 케이티비투자증권 주식회사 ) -거절
  - 테마 및 연관 주식종목 설정 방법이 개시된다. 테마 및 연관 주식종목 설정 방법은 테마설정서버에서, 클라이언트로부터 테마를 설정하기 위한 테마설정신호를 수신하여 상기 테마를 대응하는 웹페이지에 등록하는 단계, 종목설정서버에서, 상기 클라이언트 또는 다른 클라이언트로부터 상기 테마와 연관된 주식종목을 설정하기 위한 주식종목신호를 수신하여 상기 주식종목을 상기 테마와 연관된 주식종목으로 상기 대응하는 웹페이지에 등록하는 단계 및 평가서버에서, 상기 등록된 주식종목이 상기 테마와 연관이 있는지에 대한 찬성여부, 반대여부 및 댓글 중 적어도 하나에 대한 정보를 포함하는 평가신호를 클라이언트로들 각각으로부터 수신하여, 찬성을 한 클라이언트 수, 반대를 한 클라이언트 수, 댓글 내용 및 댓글 개수 중 적어도 하나를 상기 대응하는 웹페이지에 등록하는 단계를 포함할 수 있다.
+
 
 +
  테마 및 연관 주식종목 설정 방법이 개시된다. 테마 및 연관 주식종목 설정 방법은 테마설정서버에서, 클라이언트로부터 테마를 설정하기 위한 테마설정신호를 수신하여 상기 테마를 대응하는 웹페이지에 등록하는 단계, 종목설정서버에서, 상기 클라이언트 또는 다른 클라이언트로부터 상기 테마와 연관된 주식종목을 설정하기 위한 주식종목신호를 수신하여 상기 주식종목을 상기 테마와 연관된 주식종목으로 상기 대응하는 웹페이지에 등록하는 단계 및 평가서버에서, 상기 등록된 주식종목이 상기 테마와 연관이 있는지에 대한 찬성여부, 반대여부 및 댓글 중 적어도 하나에 대한 정보를 포함하는 평가신호를 클라이언트로들 각각으로부터 수신하여, 찬성을 한 클라이언트 수, 반대를 한 클라이언트 수, 댓글 내용 및 댓글 개수 중 적어도 하나를 상기 대응하는 웹페이지에 등록하는 단계를 포함할 수 있다.
  
  
 
'''특허전략'''
 
'''특허전략'''
  
- 등록된 특허를 침해하여 개발하지 않도록 유의한다.
+
- 등록된 특허를 침해하여 개발하지 않도록 유의한다.
- 주제와 관련된 거절 또는 소멸된 특허의 내용을 개발에 참고한다.
+
 
 +
- 주제와 관련된 거절 또는 소멸된 특허의 내용을 개발에 참고한다.
  
 
*기술 로드맵
 
*기술 로드맵
103번째 줄: 109번째 줄:
 
====시장상황에 대한 분석====
 
====시장상황에 대한 분석====
 
*경쟁제품 조사 비교
 
*경쟁제품 조사 비교
내용
+
 
 +
◇ 크리블 어플리케이션
 +
- FnGuide에서 출시한 투자 정보 관련 어플리케이션이다. 리포트, 뉴스, 공시, 블로그 등의 투자 컨텐츠를 취합하여 사용자에게 전달하고 관심종목과 토픽을 태깅하고 분류하여 사용자에게 컨텐츠를 추천하는 서비스를 제공한다.
 +
 
 +
[[ 파일 : CribleMojuri.png ]]
 +
 
 +
- 해당 어플리케이션은 리포트뿐만 아니라 뉴스, 공시, 블로그, 유튜브의 투자정보를 제공하므로 리포트 위주의 정보를 원하는 사용자에게 불필요한 기능이 많다.
 +
- 리포트 항목은 설정해놓은 관심 토픽들을 산업별로 분류할 수 없고 관심 산업관련 시황 리포트와 기업분석 리포트가 혼재되어 업로드되고 있으며 국내 5대 증권사의 리포트는 업로드되지 않는다.
 +
 
 +
◇ 증권사리포트 실시간 푸시알림 어플
 +
 
 +
- 솜니룸 랩스에서 출시한 증권사리포트 실시간 푸시알림 어플리케이션이다. 관심 보고서에 등록된 보고서가 업로드되면 푸시 알림을 받을 수 있고 매일 증권사 리포트를 업로드하는 서비스를 제공하고 있다.
 +
- 여타 사이트와 어플리케이션과 마찬가지로 국내 5대 증권사의 리포트를 제외한 한경컨센서스와 네이버금융 리서치 페이지에 업로드되는 무료 리포트를 단순히 취합하여 제공하는 것일 뿐 산업별 분류, 관심종목 설정이 이루어지지 않고 있다.
 +
 
 +
[[ 파일 : App2Mojuri.png ]]
 +
 
 
*마케팅 전략 제시
 
*마케팅 전략 제시
내용
+
 
 +
[[ 파일 : SwotMojuri.png ]]
 +
 
 +
*수익성 개선 방안
 +
 
 +
1. 구글 애드센스 활용
 +
 
 +
[[ 파일 : AdsenseMojuri.png ]]
 +
 
 +
- 월간 조회수 당 예상 연수익 0.3달러
 +
 
 +
- ex) 월간 조회수 5천회(일간 200~300회) 유지 시 연간 수익 약 180만원 가능
 +
 
 +
- 사이트 유지, 보수 비용으로 활용 가능할 것이라 판단
 +
 
 +
- 매일 업데이트되는 주식 리포트 특성상 조회수 유지의 난이도는 높지 않은 편
 +
 
 +
- 사용자 유입 위한 홍보 필요
 +
 
 +
2. 멤버십 도입
 +
 
 +
[[ 파일 : MembershipMojuri.png ]]
 +
 
 +
- 크리블 어플의 경우도 10월 중순부터 월 11,000원의 멤버십 도입
 +
 
 +
- 이보다 저렴한 가격으로 구독을 원하는 증권사의 종류, 추천 시스템 유무에 따라 차등으로 멤버십을 도입한다면 경쟁력이 생길 것으로 판단
  
 
===개발과제의 기대효과===
 
===개발과제의 기대효과===
 
====기술적 기대효과====
 
====기술적 기대효과====
내용
+
 
 +
- 사용자에게 분산되어있는 주식 리포트를 자동으로 취합하고 분류하여 제공한다.
 +
 
 +
- 크롤링 기술을 활용하여 다운로드와 업로드를 자동화하는 시스템을 구축한다.
 
====경제적, 사회적 기대 및 파급효과====
 
====경제적, 사회적 기대 및 파급효과====
내용
+
 
 +
- 개인 주식투자자들이 손쉽게 관련 정보를 획득하여 투자 활동에 도움을 제공한다.
 +
 
 +
- 여러 증권사 리포트와 테마주 관련 정보를 찾아보기 위한 사회적 비용을 절감한다.
  
 
===기술개발 일정 및 추진체계===
 
===기술개발 일정 및 추진체계===
 
====개발 일정====
 
====개발 일정====
내용
+
[[ 파일 : ScheduleMojuri.png ]]
 
====구성원 및 추진체계====
 
====구성원 및 추진체계====
내용
+
[[ 파일 : MemberMojuri.png ]]
 +
 
 +
[[ 파일 : PropulsionSystemMojuri.png ]]
  
 
==설계==
 
==설계==
 
===설계사양===
 
===설계사양===
 
====제품의 요구사항====
 
====제품의 요구사항====
내용
+
[[ 파일 : RequirementMojuri.png ]]
====설계 사양====
+
====시스템 설계안====
내용
+
[[ 파일 : SystemdesignMojuri.png ]]
 +
===개념 설계안===
 +
1. 상승 여력순 정렬
 +
- 한경 컨센서스와 특정 대형증권사의 홈페이지에는 종목 주식 리포트와 함께 목표주가(TP)를 명시해 놓고 있다.
 +
- 종목의 목표주가를 크롤링하고 pykrx의 get_market_ohlcv(Open, High, Low, Close, Volume) 함수를 통해 현재 주가 정보를 수집한다.
 +
- 해당 종목의 게시 당일 주가와 목표주가의 괴리율을 비교하여 상승여력이 큰 리포트 순으로 정렬한다.
 +
 
 +
[[ 파일 : PykrxMojuri.png ]]
 +
 
  
===개념설계안===
+
2. 추천 저자 선정 알고리즘
내용
 
  
===이론적 계산 및 시뮬레이션===
+
[[ 파일 : ChucheonMojuri.png ]]
내용
 
  
===상세설계 내용===
+
- 목표주가 초과 : 40점
내용
+
- 10%이내 : 35점
 +
- 10~20% : 30점
 +
- 20~30% : 25점
 +
- 30~40% : 20점
 +
- 40~50% : 16점
 +
- 50%~75% : 13점
 +
- 75% 이상 : 10점
 +
 
 +
유사도 점수 = 괴리율 점수 * 시간 가중치 * 리포트 개수 가중치(1.005 거듭제곱)
 +
 
 +
- 목표주가 유사도 점수의 평균이 높은 상위 8명의 애널리스트를 추천 저자 항목에 포함시킨다.
 +
- 추천 저자 항목의 저자 이름을 클릭하면 해당 애널리스트가 작성한 리포트 목록이 출력된다.
 +
- 추후 보다 정밀한 점수 측정을 위해 괴리율 점수 및 시간 가중치 조정 예정
 +
 
 +
===유스케이스===
 +
[[ 파일 : UsecaseMojuri1.png ]]
 +
 
 +
[[ 파일 : UsecaseMojuri2.png ]]
 +
 
 +
[[ 파일 : UsecaseMojuri3.png ]]
 +
 
 +
[[ 파일 : UsecaseMojuri4.png ]]
 +
 
 +
===UI 설계안===
 +
[[ 파일 : UIdesignMojuri1.png ]]
 +
 
 +
[[ 파일 : UIdesignMojuri2.png ]]
 +
 
 +
[[ 파일 : UIdesignMojuri3.png ]]
 +
 
 +
[[ 파일 : UIdesignMojuri4.png ]]
 +
 
 +
[[ 파일 : UIdesignMojuri5.png ]]
 +
 
 +
[[ 파일 : UIdesignMojuri6.png ]]
 +
 
 +
===DB 설계안===
 +
[[ 파일 : DBdesignMojuri1.png ]]
 +
 
 +
- 다 대 다 관계 해소를 위한 중간 테이블 설정
 +
- 한 명의 작성자가 다수의 리포트를 작성할 수 있고 2명 이상의 작성자가 하나의 리포트를 작성하는 경우가 존재하므로 리포트-작성자 테이블 설정
 +
- 하나의 기업에 대한 다수의 리포트가 존재할 수 있고 하나의 리포트에 여러 기업에 대한 분석이 포함되는 경우가 존재하므로 리포트-기업 테이블 설정
 +
- 하나의 산업분야에 대해 다수의 리포트가 존재하고 한 개의 리포트에 여러 산업분야에 대한 분석이 포함되는 경우가 존재하므로 리포트-산업분야 테이블 설정
 +
- 하나의 산업분야에 다수의 기업이 포함되고 한 개의 기업이 여러 산업분야에 속하는 경우가 존재하므로 기업-산업분야 테이블 설정
 +
- 한 명의 회원이 리포트 여러개를 찜할 수 있고 하나의 리포트를 여러 회원이 찜할 수 있으므로 회원-리포트 테이블 설정
 +
- 한 명의 회원이 여러 개의 기업을 관심종목으로 지정할 수 있고 한 개의 기업을 여러 회원이 관심종목으로 지정할 수 있으므로 회원-기업 테이블 설정
 +
- 한 명의 회원이 여러 산업 분야를 관심분야로 지정할 수 있고 하나의 산업분야를 여러 회원이 관심분야로 지정할 수 있으므로 회원-산업 테이블 설정
 +
 
 +
[[ 파일 : DBdesignMojuri2.png ]]
 +
 
 +
[[ 파일 : DBdesignMojuri3.png ]]
 +
 
 +
[[ 파일 : DBdesignMojuri4.png ]]
 +
 
 +
[[ 파일 : DBdesignMojuri5.png ]]
  
 
==결과 및 평가==
 
==결과 및 평가==
 
===완료 작품의 소개===
 
===완료 작품의 소개===
 
====프로토타입 사진 혹은 작동 장면====
 
====프로토타입 사진 혹은 작동 장면====
내용
+
[[ 파일 : PrototypeMojuri1.png ]]
====포스터====
 
내용
 
  
===관련사업비 내역서===
+
[[ 파일 : PrototypeMojuri2.png ]]
내용
+
 
 +
[[ 파일 : PrototypeMojuri3.png ]]
 +
 
 +
[[ 파일 : PrototypeMojuri4.png ]]
 +
 
 +
[[ 파일 : PrototypeMojuri5.png ]]
  
 
===완료작품의 평가===
 
===완료작품의 평가===
내용
+
[[ 파일 : EvaluationMojuri.png ]]
 +
 
 +
 
 +
----
  
 
===향후계획===
 
===향후계획===
내용
+
'''어려웠던 내용들'''
 +
 
 +
- AWS EC2 인스턴스는 정해진 양의 메모리와 연산능력만큼의 컴퓨터를 대여하는 것인데 프로젝트에서 대여한 사양은 가상 cpu 1대에 1GB메모리와 30GB 하드디스크 용량이다.
 +
 
 +
- 배포 도중 EC2에 할당된 메모리 1GB를 초과하여 사용하여 배포가 중단되는 경우가 빈번하게 발생하였다.
 +
 
 +
- 주로 메모리를 사용하는 행위 중 문제가 된다고 추론하였다. 특히 매 시간 크롤링을 실행하면서 돌아가는 크롬드라이버와 크롬드라이버에서 반복적으로 DB에 보내는 쿼리의 양 중 하나가 문제로 추정하였다.
 +
 
 +
- 데이터 크롤링 코드를 메모리 부담이 덜 가는 방향으로 최적화(모듈 분할)하여 문제를 서버 부담을 줄여 서버 메모리 초과 빈도수를 줄였지만 완전히 해결하지는 못하였다.
 +
 
 +
- 서비스 운용 중 문제가 발생할 수도 있다고 판단하여 클라이언트 API 통신을 모듈화 하여 요청 응답 사이사이에 PROGRESS LOADING 을 추가해 서버 과부하 빈도수를 줄였다. 또한 서버에서 DB와의 통신 부분에서 DB POOLING을 적용하여 DB쿼리가 증가하는 현상을 방지하였다.
 +
 
 +
- DB용 인스턴스 하나, 클라이언트 통신용 인스턴스 하나, 크롤링 코드 실행 용도의 인스턴스 하나로 분리하여 설계하여 부족한 메모리 문제를 해결할 수 있을 것이라고 추론하였다.
 +
 
 +
- 특정 증권사의 리포트는 우리가 원하는 만큼의 정보를 가지고 있지 않거나 접근 자체가 곤란하여 특정 증권사의 리포트를 받아올 수 없었다.
 +
 
 +
 
 +
'''차후 구현할 내용'''
 +
 
 +
- 원하는 종목 및 산업의 리포트가 업로드 되었을 시 알림기능 구현
 +
 
 +
- 수익성을 위한 구글 애드센스 기능 추가
  
===특허 출원 내용===
+
- 서버 메모리 최적화
내용
 

2022년 1월 3일 (월) 01:32 기준 최신판

프로젝트 개요

기술개발 과제

국문 : 모주리(모아보는 주식 리포트)

영문 : Stock reports in one place

과제 팀명

장대양봉

지도교수

김민호 교수님

개발기간

2021년 9월 ~ 2021년 12월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 2016920007 김성수(팀장)

서울시립대학교 컴퓨터과학부 2016920015 문준호

서울시립대학교 컴퓨터과학부 2016920021 신순호

서울시립대학교 컴퓨터과학부 2016920052 정희상

서론

개발 과제의 개요

개발 과제 요약

여러 곳에 분산되어 있는 주식 리포트를 한 곳에서 모아보는 웹사이트를 제작하고자 한다. 모주리는 모아보는 주식 리포트의 의미를 가진 개발 과제 및 웹 사이트의 이름이다. 주식시장에 대한 개인의 참여가 많아진 만큼 주식 리포트에 대한 관심 또한 높아지고 있다. 현재 22개 증권사의 무료 리포트는 크게 3가지의 경로에서 열람할 수 있는데 3가지 경로 중 최대한 많은 리포트를 모주리에 모아 46개의 산업분야 별로 나누어 사용자가 열람할 수 있도록 한다. 사용자의 관심산업, 관심종목 관련 리포트가 업데이트 되었을 때 모주리에서 확인할 수 있도록 한다. 또한 과거 리포트의 Target Price, 현재 주가 및 Target Price를 비교하여 추천 저자, 상승 여력 높은 종목 등의 기능을 제공하여 다른 주식 리포트 관련 사이트 및 어플리케이션과 차별화를 두려고 한다.

개발 과제의 배경

- 최근 들어 일반인 주식 투자자의 유입이 많이 이루어졌고 이로 인해 주식 관련 정보에 대한 수요 또한 커지게 되었다. 많은 정보들 중 증권사에서 무료로 배포하는 리포트는 접근이 용이하고 전문성을 갖추고 있는 자료로 여겨지고 있다. PC환경에서 리포트를 열람하기 위해서는 크게 한경컨센서스, 네이버 금융의 리서치 페이지, 개별 증권사의 리서치 페이지의 3가지 경로가 있다.

- 리포트를 제공하는 증권사가 가장 많은 한경컨센서스에서는 대신증권, 메리츠증권, 유안타증권, 유진투자증권, 이베스트투자증권, 카카오페이증권, 키움증권, 하이투자증권, 한양증권, 한화투자증권, 현대차증권, ibk투자증권, sk증권(가나다 순) 총 13개 증권사의 무료 리포트를 열람할 수 있다.

- 네이버 금융의 리서치 페이지의 경우 교보증권, 하나금융투자, 미래에셋증권, 케이프투자증권 4개 증권사(한경컨센서스와 중복되는 증권사 제외)의 무료 리포트를 열람할 수 있다.

- 개별 증권사 리서치 페이지의 경우 NH투자증권, 한국투자증권, 삼성증권, 신한금융투자, KB증권의 5개 대형증권사(2020년 금융소비자연맹에서 발표한 좋은 증권사 종합 순위 1~5위 오름차순, 이하 국내 5대 증권사)의 무료 리포트를 열람할 수 있다.

- 한경컨센서스와 네이버금융 리서치 페이지의 경우 별도의 로그인 없이 해당 페이지에 접속하면 자유롭게 리포트 열람이 가능한 반면 개별 증권사 리서치 페이지의 경우 해당 증권사에 로그인 및 보안프로그램 설치가 필요하여 굉장한 수고로움이 동반된다.

- 3곳의 사이트 모두 경우 대략적으로 기업, 산업, 투자종합(증권사별 주간,일간브리핑), 시장(경제시황)의 분류만 거쳐 리포트가 업로드되며 한경컨센서스와 네이버금융 리서치 페이지의 경우 기간별로 종목이름, 작성자, 제공출처(증권사)의 검색만 가능하다. 예를 들어 반도체 관련 종목의 리포트만을 열람하는 것은 불가능하고 자신의 관심 종목 리포트를 열람하려면 종목의 이름 검색을 통해 열람하여야만 한다.

- 모주리는 한 종목이라도 최대한 많은 증권사의 리포트를 열람하고 싶어하는 사용자의 요구를 편리성과 함께 충족시킬 수 있을 것이며 관련 산업별로 리포트를 모아 열람할 수 있게 하여 사용자의 해당 분야의 경제적 통찰력을 키우는 것에 큰 도움이 될 것이다.

개발 과제의 목표 및 내용

- 총 22개 증권사의 당일 기준 6개월 전까지 게시된 리포트 및 영업일에 업데이트되는 개별 기업 리포트와 분야별 산업 전반 현황 리포트를 전기전자, 레저, 통신, 제약, 우주,국방, 조선, 반도체, 자동차, 디스플레이, 물류, 서비스, 핸드셋, 음식료, 가정용기기, 무역, 광고, 철강 ,헬스케어, 생명공학, 소프트웨어, 항공, 해운, 지주회사, 컴퓨터, 미디어, 섬유,의복, 화장품, 은행, 교통, 비철금속, 교육서비스, 부동산, 종이,포장,목재, 보험, 유통, 건축,가구, 기계, 건설, 화학, 금융, 에너지. 게임, 방송,엔터, 창업투자, 문구,출판, 기타의 46개의 산업분야 별로 분류하여 사용자가 열람할 수 있도록 한다.

- 총 22개 증권사의 투자종합 관련 리포트를 한 곳에 모아 사용자가 열람할 수 있도록 한다.

- 사용자의 관심 기업과 관심 산업 분야의 리포트만 모아 열람할 수 있도록 한다.

- 과거 리포트의 Target Price, 현재 주가 및 Target Price를 비교하여 추천 저자, 상승 여력 높은 종목 등의 기능을 제공한다.

관련 기술의 현황

관련 기술의 현황 및 분석(State of art)

  • 전 세계적인 기술현황

crawling(크롤링)

크롤링이란 인터넷에서 데이터를 검색하여 필요한 정보를 가져오는 것을 의미한다. 웹 서비스 사용자가 키워드를 하나씩 검색해보면서 관련 리포트를 찾는 것이 아닌 미리 정보를 얻어 저장하고 가공하는 것이다. 인터넷 상의 웹페이지를 수집해서 분류하고 저장하여 데이터가 어디에 저장되어 있는지 위치에 대한 분류 작업을 하고 원하는 형태로 가공하는 작업이 주 목적이다.

1. Scrapy

Scrapy(스크래피)는 Python으로 작성된 오픈소스 웹 크롤링 프레임워크이다. 웹 데이터를 수집하는 것을 목표로 설계되었다. 또한 API를 이용하여 데이터를 추출할 수 있고, 범용 웹 크롤러로 사용될 수 있다. Scrapy는 웹 스크래핑 개발 및 서비스 회사 Scrapinghub Ltd.에 의해 유지된다.
Scrapy 프로젝트는 "spiders" 를 중심으로 개발되었다. "spiders"는 여러 기능이 내장된 크롤러이다. 장고와 같은 철학인 중복배제를 따르고 있는 프레임워크이다. Scrapy는 개발자들이 코드 재사용성을 높일 수 있도록 도와주어, 큰 규모의 크롤링 프로젝트 개발을 쉽게 할 수 있도록 해준다. 또한 Scrapy는 개발자들이 크롤링하려는 사이트의 동작을 테스트할 수 있도록 웹 크롤링 쉘을 제공한다.

2. Selenium

셀레늄(Selenium)은 웹 애플리케이션 테스트를 위한 포터블 프레임워크이다. 셀레늄은 테스트 스크립트 언어를 학습할 필요 없이 기능 테스트를 만들기 위한 플레이백 도구를 제공한다. (셀레늄 IDE) C 샤프, 그루비, 자바, 펄, PHP, 파이썬, 루비, 스칼라 등 수많은 유명 프로그래밍 언어들에서 테스트를 작성하기 위한 테스트 도메인 특화 언어(Selenese)를 제공한다. 이 테스트들은 현대의 대부분의 웹 브라우저에서 수행이 가능하다. 셀레늄은 윈도우, 리눅스, macOS 플랫폼에서 디플로이된다. 아파치 2.0 라이선스로 배포되는 오픈 소스 소프트웨어이다. 웹 개발자는 무료로 다운로드, 사용할 수 있다.

- MySQL

MySQL은 세계에서 가장 많이 쓰이는 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)이다. 다중 스레드, 다중 사용자 형식의 구조질의어 형식의 데이터베이스 관리 시스템으로서 오라클이 관리 및 지원하고 있으며, Qt처럼 이중 라이선스가 적용된다. 하나의 옵션은 GPL이며, GPL 이외의 라이선스로 적용시키려는 경우 전통적인 지적재산권 라이선스의 적용을 받는다.
MySQL은 미디어위키와 드루팔과 같은 인기있는 웹 애플리케이션에 사용된다. 그리고 LAMP, MAMP, WAMP (리눅스/매킨토시/윈도-아파치-MySQL-PHP/펄/파이썬) 플랫폼의 데이터베이스 구성체로서 작동하며 버그질라와 같은 오픈소스 버그 추적 도구에도 사용된다
웹 애플리케이션으로서의 MySQL의 인기는 PHP의 인기도와 맞물려 있다. PHP는 종종 MySQL과 결합되며, 다이내믹 듀오(Dynamic Duo)라는 별칭이 붙었다. 인터넷 상의 여러 웹사이트, 혹은 서적을 통해서 MySQL과 PHP의 연동에 대한 정보를 쉽게 찾을 수 있다. 최근의 플랫폼에서는 이들의 연동을 자동으로 해 주는 경우가 있다.
  • 특허조사 및 특허 전략 분석

특허조사

◇ ‘애널리스트의 리포트에 기반한 주식 종목 추천 방법 및 시스템’ (리서치 알음)

애널리스트들의 보고서들을 분석한 ‘빅데이터’를 기반으로 주식 종목 추천 서비스를 진행한다. 보고서 발간 당일 갭상승 수익률(A1), 고점 수익률(A2), 종가 수익률(A3)을 종합적으로 평가하고, 발간 이후 25거래일, 50거래일의 고점 수익률 등을 분석하여 실제로 리포트가 얼마나 영향력이 있는지를 파악한다.

◇‘연관 종목 정보 통합 제공 방법‘ (신한금융투자 주식회사) -거절

주식 정보를 제공하는 장치에 의해 실행되는 연관 종목 정보 통합 제공 방법은 사용자의 단말로 제공되는 주식 종목에 대응하는 하나 이상의 연관 정보를 생성하는 제1 단계와, 사용자의 단말에 출력된 주식 정보 제공 창에 입력되는 하나 이상의 단어와 상기 생성된 연관 정보를 매칭하여 대응하는 주식 종목을 확인하는 제2 단계와, 상기 확인된 주식 종목에 대한 정보와 상기 주식 종목에 대응하는 하나 이상의 연관 정보를 상기 주식 정보 제공 창을 통해 조회 가능하도록 출력하는 제3 단계를 포함하여, 이를 통해 고객이 특정 주식 종목을 정확하게 알고 있지 않더라도 연관 정보를 입력하여 해당 주식 종목이나 그와 관련된 주식 종목에 대한 주식 정보를 확인할 수 있다.

◇ 테마 주식에 대한 온라인 플랫폼의 운용방법 및 그 시스템 (이재성)

본 발명은 테마 주식에 대한 온라인 플랫폼의 운용방법 및 그 시스템에 관한 것이다. 또한 본 발명은 종래기술의 문제점을 해결하기 위하여, 실시간으로 주식종목의 주가를 증권사 API를 통하여 수집하고, 비슷한 성격을 가진 주식종목을 분류하여 화면에서 주식종목의 등락률을 한꺼번에 보여주는 사용자가 한눈에 해당 종목군의 변화 추세를 실시간으로 볼 수 있도록 하는데 목적이 있다. 더 나아가 과거 데이터를 활용하여, 어떠한 종목군이 과거에 급등하였는지 스스로 학습할 수 있는 자료를 제공하여 최근에 어떤 종목군들이 강세였는지를 기반으로 미래에 어떤 종목군들이 활발하게 움직일지를 예측할 수 있게 하는데 목적이 있다.
 

◇ 주식 분석 리포트 작성 및 평가 서버 및 그 방법 ( 벨로시티랩 )

본 발명의 일 실시예에 따른 주식 분석 리포트 작성 및 평가 서버에 의해 수행되는 주식 분석 리포트 작성 및 평가 방법에 있어서, 제1 사용자 단말로부터 주식 투자 결정 요소인 투자 포인트를 수신하는 단계; 수신한 투자 포인트를 기초로 주식 분석 리포트를 생성하여 제2 사용자 단말로 전송하는 단계; 주식 분석 리포트를 수신한 제2 사용자 단말로부터 주식 분석 리포트 평가 정보를 수신하는 단계; 수신한 주식 분석 리포트 평가 정보를 기초로 제1리워드를 책정하고, 책정된 제1리워드를 제1 사용자 단말로 전송하는 단계; 및 주식 분석 리포트의 조회수 및 다른 사용자 단말로부터 수신한 주식 분석 리포트 평가 정보 중 적어도 어느 하나를 기초로 책정되는 제2리워드를 제2 사용자 단말로 전송하는 단계를 포함하는, 주식 분석 리포트 작성 및 평가 방법을 제공하고자 한다.

◇ 테마 및 연관 주식종목 설정 방법 ( 케이티비투자증권 주식회사 ) -거절

테마 및 연관 주식종목 설정 방법이 개시된다. 테마 및 연관 주식종목 설정 방법은 테마설정서버에서, 클라이언트로부터 테마를 설정하기 위한 테마설정신호를 수신하여 상기 테마를 대응하는 웹페이지에 등록하는 단계, 종목설정서버에서, 상기 클라이언트 또는 다른 클라이언트로부터 상기 테마와 연관된 주식종목을 설정하기 위한 주식종목신호를 수신하여 상기 주식종목을 상기 테마와 연관된 주식종목으로 상기 대응하는 웹페이지에 등록하는 단계 및 평가서버에서, 상기 등록된 주식종목이 상기 테마와 연관이 있는지에 대한 찬성여부, 반대여부 및 댓글 중 적어도 하나에 대한 정보를 포함하는 평가신호를 클라이언트로들 각각으로부터 수신하여, 찬성을 한 클라이언트 수, 반대를 한 클라이언트 수, 댓글 내용 및 댓글 개수 중 적어도 하나를 상기 대응하는 웹페이지에 등록하는 단계를 포함할 수 있다.


특허전략

- 등록된 특허를 침해하여 개발하지 않도록 유의한다.

- 주제와 관련된 거절 또는 소멸된 특허의 내용을 개발에 참고한다.

  • 기술 로드맵

RoadmapMojuri.png

시장상황에 대한 분석

  • 경쟁제품 조사 비교

◇ 크리블 어플리케이션

- FnGuide에서 출시한 투자 정보 관련 어플리케이션이다. 리포트, 뉴스, 공시, 블로그 등의 투자 컨텐츠를 취합하여 사용자에게 전달하고 관심종목과 토픽을 태깅하고 분류하여 사용자에게 컨텐츠를 추천하는 서비스를 제공한다.

CribleMojuri.png

- 해당 어플리케이션은 리포트뿐만 아니라 뉴스, 공시, 블로그, 유튜브의 투자정보를 제공하므로 리포트 위주의 정보를 원하는 사용자에게 불필요한 기능이 많다.
- 리포트 항목은 설정해놓은 관심 토픽들을 산업별로 분류할 수 없고 관심 산업관련 시황 리포트와 기업분석 리포트가 혼재되어 업로드되고 있으며 국내 5대 증권사의 리포트는 업로드되지 않는다.

◇ 증권사리포트 실시간 푸시알림 어플

- 솜니룸 랩스에서 출시한 증권사리포트 실시간 푸시알림 어플리케이션이다. 관심 보고서에 등록된 보고서가 업로드되면 푸시 알림을 받을 수 있고 매일 증권사 리포트를 업로드하는 서비스를 제공하고 있다.
- 여타 사이트와 어플리케이션과 마찬가지로 국내 5대 증권사의 리포트를 제외한 한경컨센서스와 네이버금융 리서치 페이지에 업로드되는 무료 리포트를 단순히 취합하여 제공하는 것일 뿐 산업별 분류, 관심종목 설정이 이루어지지 않고 있다.

App2Mojuri.png

  • 마케팅 전략 제시

SwotMojuri.png

  • 수익성 개선 방안

1. 구글 애드센스 활용

AdsenseMojuri.png

- 월간 조회수 당 예상 연수익 0.3달러

- ex) 월간 조회수 5천회(일간 200~300회) 유지 시 연간 수익 약 180만원 가능

- 사이트 유지, 보수 비용으로 활용 가능할 것이라 판단

- 매일 업데이트되는 주식 리포트 특성상 조회수 유지의 난이도는 높지 않은 편

- 사용자 유입 위한 홍보 필요

2. 멤버십 도입

MembershipMojuri.png

- 크리블 어플의 경우도 10월 중순부터 월 11,000원의 멤버십 도입

- 이보다 저렴한 가격으로 구독을 원하는 증권사의 종류, 추천 시스템 유무에 따라 차등으로 멤버십을 도입한다면 경쟁력이 생길 것으로 판단

개발과제의 기대효과

기술적 기대효과

- 사용자에게 분산되어있는 주식 리포트를 자동으로 취합하고 분류하여 제공한다.

- 크롤링 기술을 활용하여 다운로드와 업로드를 자동화하는 시스템을 구축한다.

경제적, 사회적 기대 및 파급효과

- 개인 주식투자자들이 손쉽게 관련 정보를 획득하여 투자 활동에 도움을 제공한다.

- 여러 증권사 리포트와 테마주 관련 정보를 찾아보기 위한 사회적 비용을 절감한다.

기술개발 일정 및 추진체계

개발 일정

ScheduleMojuri.png

구성원 및 추진체계

MemberMojuri.png

PropulsionSystemMojuri.png

설계

설계사양

제품의 요구사항

RequirementMojuri.png

시스템 설계안

SystemdesignMojuri.png

개념 설계안

1. 상승 여력순 정렬

- 한경 컨센서스와 특정 대형증권사의 홈페이지에는 종목 주식 리포트와 함께 목표주가(TP)를 명시해 놓고 있다.
- 종목의 목표주가를 크롤링하고 pykrx의 get_market_ohlcv(Open, High, Low, Close, Volume) 함수를 통해 현재 주가 정보를 수집한다. 
- 해당 종목의 게시 당일 주가와 목표주가의 괴리율을 비교하여 상승여력이 큰 리포트 순으로 정렬한다.

PykrxMojuri.png


2. 추천 저자 선정 알고리즘

ChucheonMojuri.png

- 목표주가 초과 : 40점
- 10%이내 : 35점
- 10~20% : 30점
- 20~30% : 25점
- 30~40% : 20점
- 40~50% : 16점
- 50%~75% : 13점
- 75% 이상 : 10점
유사도 점수 = 괴리율 점수 * 시간 가중치 * 리포트 개수 가중치(1.005 거듭제곱)
- 목표주가 유사도 점수의 평균이 높은 상위 8명의 애널리스트를 추천 저자 항목에 포함시킨다.
- 추천 저자 항목의 저자 이름을 클릭하면 해당 애널리스트가 작성한 리포트 목록이 출력된다.
- 추후 보다 정밀한 점수 측정을 위해 괴리율 점수 및 시간 가중치 조정 예정

유스케이스

UsecaseMojuri1.png

UsecaseMojuri2.png

UsecaseMojuri3.png

UsecaseMojuri4.png

UI 설계안

UIdesignMojuri1.png

UIdesignMojuri2.png

UIdesignMojuri3.png

UIdesignMojuri4.png

UIdesignMojuri5.png

UIdesignMojuri6.png

DB 설계안

DBdesignMojuri1.png

- 다 대 다 관계 해소를 위한 중간 테이블 설정
- 한 명의 작성자가 다수의 리포트를 작성할 수 있고 2명 이상의 작성자가 하나의 리포트를 작성하는 경우가 존재하므로 리포트-작성자 테이블 설정
- 하나의 기업에 대한 다수의 리포트가 존재할 수 있고 하나의 리포트에 여러 기업에 대한 분석이 포함되는 경우가 존재하므로 리포트-기업 테이블 설정
- 하나의 산업분야에 대해 다수의 리포트가 존재하고 한 개의 리포트에 여러 산업분야에 대한 분석이 포함되는 경우가 존재하므로 리포트-산업분야 테이블 설정
- 하나의 산업분야에 다수의 기업이 포함되고 한 개의 기업이 여러 산업분야에 속하는 경우가 존재하므로 기업-산업분야 테이블 설정
- 한 명의 회원이 리포트 여러개를 찜할 수 있고 하나의 리포트를 여러 회원이 찜할 수 있으므로 회원-리포트 테이블 설정
- 한 명의 회원이 여러 개의 기업을 관심종목으로 지정할 수 있고 한 개의 기업을 여러 회원이 관심종목으로 지정할 수 있으므로 회원-기업 테이블 설정
- 한 명의 회원이 여러 산업 분야를 관심분야로 지정할 수 있고 하나의 산업분야를 여러 회원이 관심분야로 지정할 수 있으므로 회원-산업 테이블 설정

DBdesignMojuri2.png

DBdesignMojuri3.png

DBdesignMojuri4.png

DBdesignMojuri5.png

결과 및 평가

완료 작품의 소개

프로토타입 사진 혹은 작동 장면

PrototypeMojuri1.png

PrototypeMojuri2.png

PrototypeMojuri3.png

PrototypeMojuri4.png

PrototypeMojuri5.png

완료작품의 평가

EvaluationMojuri.png



향후계획

어려웠던 내용들

- AWS EC2 인스턴스는 정해진 양의 메모리와 연산능력만큼의 컴퓨터를 대여하는 것인데 프로젝트에서 대여한 사양은 가상 cpu 1대에 1GB메모리와 30GB 하드디스크 용량이다.

- 배포 도중 EC2에 할당된 메모리 1GB를 초과하여 사용하여 배포가 중단되는 경우가 빈번하게 발생하였다.

- 주로 메모리를 사용하는 행위 중 문제가 된다고 추론하였다. 특히 매 시간 크롤링을 실행하면서 돌아가는 크롬드라이버와 크롬드라이버에서 반복적으로 DB에 보내는 쿼리의 양 중 하나가 문제로 추정하였다.

- 데이터 크롤링 코드를 메모리 부담이 덜 가는 방향으로 최적화(모듈 분할)하여 문제를 서버 부담을 줄여 서버 메모리 초과 빈도수를 줄였지만 완전히 해결하지는 못하였다.

- 서비스 운용 중 문제가 발생할 수도 있다고 판단하여 클라이언트 API 통신을 모듈화 하여 요청 응답 사이사이에 PROGRESS LOADING 을 추가해 서버 과부하 빈도수를 줄였다. 또한 서버에서 DB와의 통신 부분에서 DB POOLING을 적용하여 DB쿼리가 증가하는 현상을 방지하였다.

- DB용 인스턴스 하나, 클라이언트 통신용 인스턴스 하나, 크롤링 코드 실행 용도의 인스턴스 하나로 분리하여 설계하여 부족한 메모리 문제를 해결할 수 있을 것이라고 추론하였다.

- 특정 증권사의 리포트는 우리가 원하는 만큼의 정보를 가지고 있지 않거나 접근 자체가 곤란하여 특정 증권사의 리포트를 받아올 수 없었다.


차후 구현할 내용

- 원하는 종목 및 산업의 리포트가 업로드 되었을 시 알림기능 구현

- 수익성을 위한 구글 애드센스 기능 추가

- 서버 메모리 최적화