Python
-
네이버 금융에서 ETF 기초 정보 갈무리(크롤링)하는 법Python/파이썬과 주식 2020. 11. 1. 19:12
퀀트를 하는 건 아니지만.. ETF 포트폴리오를 여러가지로 백테스트하다보니까.. ETF 수수료가 궁금해졌습니다. 453개의 ETF 하나하나 조사하기는 힘듭니다. 파이썬의 힘을 좀 빌려야겠네요. 먼저 저도 가물가물해진 ETF 목록 크롤링하는 법을 보고 옵니다. comdoc.tistory.com/entry/네이버-주식을-이용해-ETF-목록-갈무리하는-법 다음으론 목표를 확인합니다. finance.naver.com/item/main.nhn?code=069500 이제 열심히 코딩합니다. import csv import json import urllib.request from bs4 import BeautifulSoup url = 'https://finance.naver.com/api/sise/etfItemLis..
-
[파이썬] 포트폴리오 이론, 리밸런싱, 백테스트Python/파이썬과 주식 2020. 10. 31. 23:42
* 이 글은 저의 개인적인 정리물일 뿐입니다. * 투자 권유, 투자 참고의 목적이 아닙니다. 코딩 연습일 뿐입니다.~! finance-datareader라는 재미있는 툴을 얼마 전에 소개해 드렸습니다. 재미있는 게 있으니 뭔가를 코딩하고 싶어 손이 근질근질합니다. 코딩하기 쉬울 것 같아서, 가장 초보적인 전략인 포트폴리오 이론(분산투자) + 리밸런싱을 백테스트하는 걸로 결정했습니다. 귀찮긴 하지만 백테스트 라이브러리를 쓰지 않고 직접 백테스트 코드를 작성해 봤습니다. 초보적인 금융지식으로 코딩했기 때문에 백테스트에 문제가 있을 수도 있습니다. 포트폴리오 이론, 리밸런싱 분산투자(포트폴리오 이론)는 다들 잘 아시겠지만 성격이 다른(=상호보완적인, 반대 방향에 있는) 자산에 분산해서 투자하는 겁니다. '계란..
-
파이썬(python)으로 만드는 간단한 블록 체인(block chain)Python/파이썬 자료구조 알고리듬 2020. 10. 30. 12:39
제 블로그에서 가장 인기 있는 글이 해시더군요. 해시가 나온 김에 간단한 블록체인을 만들어 보겠습니다. '블록체인의 의미', '블록체인이 어떻게 데이터의 보안을 유지하나' 까지만 이해할 수 있게 아주 가볍게 만들어 보겠습니다. (네트워킹 쪽은 pass) 블록체인이 암호화폐에서만 쓰이는 게 아니라 유통 과정을 기록하는 등에도 사용되니까 위 두 개념만 알아도 꽤 써먹을 데가 많습니다. 선수학습: 해시 파이썬 해시 라이브러리 import hashlib h = hashlib.sha256() h.update(b'Genesis') print(h.hexdigest()) 81ddc8d248b2dccdd3fdd5e84f0cad62b08f2d10b57f9a831c13451e5c5c80a5 파이썬 해시 라이브러리의 사용법을..
-
파이썬, 합병 정렬(병합 정렬, 머지 소트, Merge Sort)Python/파이썬 자료구조 알고리듬 2020. 10. 29. 17:14
폰 노이만 선생님이 만드신 합병 정렬. 퀵 소트와 같이 분할 정복 알고리듬을 사용합니다. 퀵 소트와는 달리 안정 정렬입니다. 안경잡이 개발자님이 설명을 잘해주셨네요. 좋아요 한번 누르고 나왔습니다. https://blog.naver.com/ndb796/221227934987 설명대로 코딩해 보았습니다. # merge sort 2020-10-12 # https://comdoc.tistory.com def merge_sort(nums): if len(nums) < 2: return nums center = len(nums) // 2 left, right = nums[:center], nums[center:] return merge(merge_sort(left), merge_sort(right)) def me..
-
파이썬, 빠른 정렬(퀵 소트, Quick Sort)Python/파이썬 자료구조 알고리듬 2020. 10. 28. 18:37
호어 선생님이 만드신 빠른 정렬~! 분할 정복 알고리듬을 이용합니다. (머지 소트도 분할 정복이죠.) 불안정 정렬입니다. ([A1, A2]를 'A를 기준'으로 '숫자를 무시'하고 정렬했을 때 A1, A2의 순서가 바뀔 수 있습니다.) [A, B, A, C, A]를 정렬하면 [A, A, A, B, C]가 되는데.. A, A, A 간 순서가 어떻게 되든 무슨 상관이냐 라고 생각할 수 있는데.. [A1, B2, A2, C1, A3]의 경우 두 번째 숫자를 기준으로 정렬한 뒤, [A1, C1, B2, A2, A3]를 첫 번째 문자를 기준으로 한 번 더 정렬해서, [A1, A2, A3, B2, C1]를 만들어야 할 경우도 있습니다. (스프레드 시트 작업에서 많이 씁니다. ) 불안정 정렬로는 이런 작업이 어렵습니다..
-
파이썬, RSA 암호화Python/파이썬 자료구조 알고리듬 2020. 10. 26. 03:06
더보기 대칭키 암호화 일반적으로 암호라고 하면 떠올리는 방식입니다. 암호문을 생성할 때, 복원할 때 같은 키를 사용합니다. 난수표나 시저 암호도 대칭키 암호화죠. 장점은 단순하기 때문에 빠르다는 것. 단점은 빠르다는 것 외에는 모두 다입니다. 보내는 사람 받는 사람이 같은 키를 가지고 있기 때문에 분실에 취약하다는 점이 있습니다. 2명이 가지고 있으면 사고 날 확률도 2배... 대칭키는 비밀을 유지하기 위해서 개인별 암호가 필요합니다. (여러 명의 스파이에게서 보고를 받을 때... 스파이마다 암호가 달라야 스파이 사이에도 비밀이 유지됩니다.) 암호 관리가 힘듭니다. 문서에 대한 인증이 필요할 때 공인 인증 기관이 필요합니다. 이런 단점을 극복하고자 공개키 암호화가 나왔습니다. 공개키 암호화 수학적인 쌍을..
-
파이썬 / finance-datareaderPython/파이썬과 주식 2020. 10. 25. 21:57
https://github.com/FinanceData/FinanceDataReader?fbclid=IwAR284V-_eOCOIKj5Fx120RYYTGeZcDGwsqz0NSqt64pGMngIKF-iGBcg35o FinanceData/FinanceDataReader Financial data reader. Contribute to FinanceData/FinanceDataReader development by creating an account on GitHub. github.com https://www.notion.so/FinanceData-KR-6da3ac1cb8864178a4a61d9bc319cb53 FinanceData.KR www.notion.so 설치 beautifulsoup4, requests..
-
Python Zip 2차원 배열 회전Python/이것저것 파이썬 2020. 10. 24. 16:53
1. zip 내장 함수(BIF) zip은 각 iterables의 요소들을 하나씩 모아 이터레이터를 만듭니다. iterable (이터러블) 멤버들을 한 번에 하나씩 돌려줄 수 있는 객체. 이터러블의 예로는 모든 (list, str, tuple 같은) 시퀀스 형들, dict 같은 몇몇 비 시퀀스 형들, 파일 객체들, __iter__() 나 시퀀스 개념을 구현하는 __getitem__() 메서드를 써서 정의한 모든 클래스의 객체들이 있다. a = [1, 2, 3, 4, 5] b = ['a', 'b', 'c', 'd', 'e'] for each in zip(a, b): print(each) (1, 'a') (2, 'b') (3, 'c') (4, 'd') (5, 'e') 튜플로 돌려줍니다. 파이썬에선 튜플이 기본..