더치커피워터 더치커피워터
풋옵션 매도 ETF 분석: JEPY, IWMY, QQQY, 풋옵션 매도와 콜옵션 매도의 이해

풋옵션 매도 ETF 분석: JEPY, IWMY, QQQY, 풋옵션 매도와 콜옵션 매도의 이해

JEPY, IWMY, QQQY는 Defiance에서 운용하는 ETF로, 풋옵션 매도 전략을 활용한다는 점에서 여타 커버드콜 ETF와는 다소 다르다. 살펴보자. JEPY: S&P 500 Enhanced Options Income ETF (디파이언스 S&P 500 옵션 배당 ETF) IWMY: R2000 Enhanced Options Income ETF (디파이언스 러셀 2000 인핸스드 옵션 인컴 ETF) QQQY: Nasdaq 100 Enhanced Options Income ETF (디파이언스 나스닥 100 옵션 배당 ETF) ETF명에서도 알 수 있듯이 위 세 ETF는 어느 지수에 투자하느냐만 다를 뿐 상품 구조는 동일하다. JEPY는 S&P 500에, IWMY는 러셀 2000에, QQQY는 나스닥 100에 투자한다. 이들은 풋옵션을 매도하는 전략을 사용한다. 일반적인 커버드콜 ETF는 콜옵션을 매도하는 전략을 사용하기에 대비된다. 그렇다면 풋옵션 매도와 콜옵션 매도에는 어떤 차
백준 11404번(플로이드) 파이썬 풀이 및 테스트 케이스: 단순 브루트 포스도 괜찮을 수 있다

백준 11404번(플로이드) 파이썬 풀이 및 테스트 케이스: 단순 브루트 포스도 괜찮을 수 있다

https://www.acmicpc.net/problem/11404 solved.ac 기준 골드 4. 아무 생각 없이 브루트 포스 알고리즘으로 돌렸는데 합격 뱃지를 받아 얼떨떨하다. 이것이 PyPy3의 힘인가? 이런 성공 경험 때문에 앞으로도 부르트 포스로 한 번 코드를 작성해서 제출할 미래가 훤하다.. 테스트 케이스 5 14 1 2 2 1 3 3 1 4 1 1 5 10 2 4 2 3 4 1 3 5 1 4 5 3 3 5 10 3 1 8 1 4 2 5 1 7 3 4 2 5 2 4 0 2 3 1 4 12 0 15 2 5 8 5 0 1 1 10 7 13 0 3 7 4 10 6 0 10 13 4 4 773 5 2 661 1 4 822 7 1 378 1 5 17 5 9 766 2 6 815 10 9 757 6 8 589 6 3 154 2 3 951 4 7 913 1 5 434 0 678 1629 822 17 1493 1735 2082 783 0 0 0 951 0 0 815 0 1404 0 0
백준 3190번(뱀) 파이썬 풀이: deque 실전활용

백준 3190번(뱀) 파이썬 풀이: deque 실전활용

https://www.acmicpc.net/problem/3190 solved.ac 기준 골드 4. 꼭 deque를 써야 할 것까지는 없는 문제인 것 같은데, 그래도 뱀이 흔적을 남기며 앞으로 늘어난다는 컨셉상 list를 사용했다가 시간 초과에 걸릴 것 같은 불안한 예감이 들었다. 물론 이 정도 크기에서 시간 초과는 안 났겠지만.. 최적화하면 좋은 거니까. 왼쪽에 데이터를 추가하고 오른쪽에서 빼내야 하기 때문에 deque가 딱 좋다. 물론 queue가 먼저 생각나지만 deque로도 비슷하게 구현할 수 있다. import sys sys.setrecursionlimit(10 ** 6) # 안 하면 RecursionError가 뜬다. N = int(input()) K = int(input()) apples = list() for _ in range(K): a, b = map(int, input().split()) apples.append([a - 1, b - 1]) # 우리가 편한 좌표로
백준 14503번(로봇 청소기) 파이썬 풀이 및 테스트 케이스: 시키는 대로 구현만 잘 하기

백준 14503번(로봇 청소기) 파이썬 풀이 및 테스트 케이스: 시키는 대로 구현만 잘 하기

https://www.acmicpc.net/problem/14503 solved.ac 기준 골드 5. 알고리즘은 문제에 모두 주어지고 이를 충실히 구현만 하면 되는 문제인데, 구현 자체가 손이 많이 가서 골드 5를 받은 것 같다. 기여 항목을 보니 실제로도 그렇다.. 테스트 케이스 3 3 1 1 0 1 1 1 1 0 1 1 1 1 1 11 10 7 4 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 0 1 1 0 0 1 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 57 28 6 25 3 0 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1
백준 1759번(암호 만들기) 파이썬 풀이 및 테스트 케이스: itertools 활용하기

백준 1759번(암호 만들기) 파이썬 풀이 및 테스트 케이스: itertools 활용하기

https://www.acmicpc.net/problem/1759 solved.ac 기준 골드 5. itertools를 써먹을 곳이 왔다. 최소한 모음 하나, 자음 두 개가 포함된 가능한 문자열을 모두 나열하면 된다. 구현 상 어려움만 빼면 추가로 고려할 엣지 케이스는 많이 없는 문제. 테스트 케이스 4 6 a t c i s w acis acit aciw acst acsw actw aist aisw aitw astw cist cisw citw istw 3 3 a t c act 5 7 a e i o u y z aeiyz aeoyz aeuyz aioyz aiuyz aouyz eioyz eiuyz eouyz iouyz L, C = map(int, input().split()) candidateList = list(input().split()) candidateMoumList = list() candidateJaumList = list() for k in candidateList: if k
백준 2447번(별 찍기 - 10) 파이썬 풀이: 재귀적인 패턴 만들기

백준 2447번(별 찍기 - 10) 파이썬 풀이: 재귀적인 패턴 만들기

https://www.acmicpc.net/problem/2447 solved.ac 기준 골드 5. 골드 5 치고는 정말 쉬운 문제라는 생각이 든다. 단순히 재귀적인 패턴으로 별을 찍기만 하면 된다. 테스트 케이스랄 것도 없다. N = int(input()) for i in range(1, 9): if 3 ** i == N: N = i break pattern = ['***', '* *', '***'] for i in range(N - 1): new_pattern = list() for j in range(len(pattern)): new_pattern.append(pattern[j] * 3) for j in range(len(pattern)): new_pattern.append(pattern[j] + ' ' * len(pattern[j]) + pattern[j]) for j in range(len(pattern)): new_pattern.append(pattern[j] * 3) p
백준 10844번(쉬운 계단 수) 파이썬 풀이 및 테스트 케이스: 뒤에서부터 채워나가기

백준 10844번(쉬운 계단 수) 파이썬 풀이 및 테스트 케이스: 뒤에서부터 채워나가기

https://www.acmicpc.net/problem/10844 solved.ac 기준 실버 1. 정말 오랜만에 재귀 함수 개념을 써먹는다. 계단수라는, 예를 들면 1234543456765 같은 수가 총 몇 개 존재하는지를 알아내는 문제. 물론 간단한 재귀함수를 사용해도 답을 내는 데는 문제가 없지만, N = 100일 때 가능한 가짓수는 무려 89,207,240,240,093,898,472,018,404,112가지다. 1씩 더해 가는 재귀함수로는 당연히 무리다. 좀 더 머리를 써야 한다. 테스트 케이스 1 9 2 17 5 116 10 2986 50 894685264 100 18404112 순식간에 답을 도출할 수 있어야 한다. 예를 들어 10000을 입력해도 몇 초 내로 817374798라는 답을 낼 수 있을 만큼. N = int(input()) how_many_dic = dict() # 뒤에서부터 채워나갑시다. def how_many(i, j): # i는 해당 자리의 수, j는
백준 9020번(골드바흐의 추측) 파이썬 풀이 및 테스트 케이스: set의 위엄

백준 9020번(골드바흐의 추측) 파이썬 풀이 및 테스트 케이스: set의 위엄

https://www.acmicpc.net/problem/9020 solved.ac 기준 실버 2. 골드바흐 파티션 중 가장 두 수의 차이가 적은 조합을 출력하는 문제. 문제는 그렇게 어렵지 않지만 구현 방법이 여러 가지이다. 대표적으로는 에라토스테네스의 체를 많이 사용하는 것 같다. 여기서는 모든 수에 대해 소수판정법을 사용하는 방법을 사용하였다. 이 문제.. 반례를 못 찾아서 결국에는 정답 코드 하나 복사해 와서 부르트 포스를 돌리는 방법으로 반례를 찾았다. 여러분도 정 못 찾겠다면 시도해 보길 권한다. 내가 겪은 것은 소수 판정 알고리즘이 잘못된 경우였다. (25가 소수 리스트에 포함되어 있었다.) 테스트 케이스 3 8 10 16 3 5 5 5 5 11 1 44 13 31 5 208 196 3954 1920 56 101 107 89 107 1951 2003 953 967 19 37 import sys T = int(sys.stdin.readline()) # 9,997까지 소수
백준 18870번(좌표 압축) 파이썬 풀이 및 테스트 케이스: 대량 데이터 최적화 기초

백준 18870번(좌표 압축) 파이썬 풀이 및 테스트 케이스: 대량 데이터 최적화 기초

https://www.acmicpc.net/problem/18870 solved.ac 기준 실버 2. 좌표 압축이라는, 실제로 쓰이는 용어인지는 모르겠으나, 어쨌든 각각의 순위를 결정해서 출력하면 되는데, 문제는 좌표의 개수가 최대 100만 개라는 것이다. 이를 어떻게 다루는지가 요점. 일반적인 부르트 포스로는 당연히 안 된다. 난이도에서도 유추할 수 있듯이. 그런데 안 되는 줄 알면서도 한 번 해 보는 건 어쩔 수 없다. 테스트 케이스 5 2 4 -10 4 -9 2 3 0 3 1 6 1000 999 1000 999 1000 999 1 0 1 0 1 0 100 3 -1 5 -20 -18 -4 -14 -20 5 0 2 3 -6 -14 2 -3 3 -5 -1 18 17 0 -13 13 9 13 7 -20 11 10 2 12 6 2 -4 10 19 0 -5 -11 -9 14 2 -15 0 2 5 1 20 1 18 -18 8 13 6 -14 11 13 20 12 14 1 1 -13 11 -
백준 2166번(다각형의 면적) 파이썬 풀이 및 테스트 케이스: 신발끈 공식

백준 2166번(다각형의 면적) 파이썬 풀이 및 테스트 케이스: 신발끈 공식

https://www.acmicpc.net/problem/2166 solved.ac 기준 골드 5. 골드 5지만 의외로 코딩 자체는 어렵지 않다. 어떻게 해결할지에 대한 아이디어가 더 중요하다고 하겠다. 고등학교 수학 과정을 잘 마친 사람이라면 이미 알고 계실 분들이 많을 공식으로 생각한다. 바로 신발끈 공식. 신발끈 공식 shoelace formula 좌표평면 상 점의 좌표를 이용하여 볼록 및 오목 다각형 의 넓이를 계산하는 공식으로 namu.wiki 보통 좌표평면 위의 삼각형의 면적을 구할 때 많이 사용하지만 사실 꼭 삼각형일 필요는 없다. 면적을 구하기 까다로운 n각형 어디에나 적용이 가능하고, 꼭 볼록할 필요도 없다. 따라서 간단히 이 공식을 구현하기만 하면 된다. 테스트 케이스 4 0 0 0 10 10 10 10 0 100.0 8 1928 4752 0 4839 -2384 5743 8473 -4029 -8 -1 473 401 38 20 0 1999 11008431.5 N =
백준 1449번(수리공 항승) 파이썬 풀이 및 테스트 케이스: 예외를 고려할 필요가 없다

백준 1449번(수리공 항승) 파이썬 풀이 및 테스트 케이스: 예외를 고려할 필요가 없다

https://www.acmicpc.net/problem/1449 solved.ac 기준 실버 3. solved.ac 레이팅을 높일 목적으로 난도가 비교적 높은 문제들을 시도해 보려고 한다. 물론 문제 레이팅에 영향을 줄 정도가 되려면 플래티넘이 되어야 해서 실버 3 문제는 결국에 쓸모가 없겠지만.. 내 실력 향상이 진정한 목적이니까. 일단은 준비 단계로 실버 3이다. 파이프 회사의 수리공이 구멍을 모두 막기 위해 얼마나 테이프를 써야 하는지의 문제인데, 테이프를 겹쳐서 붙이는 것이 가능하다고 한다. 그런데 사실 테이프를 겹쳐서 붙이는 것을 실질적으로 고민할 필요는 없다. 그냥 풀면 된다. 테스트 케이스 4 2 1 2 100 101 2 4 3 1 2 3 4 2 3 1 3 2 1 3 10 3 1 2 3 4 5 6 9 28 34 35 5 10 1000 3 8 34 124 325 984 784 234 120 19 654 1 N, L = map(int, input().split(' '))
백준 8979번(올림픽) 파이썬 풀이 및 테스트 케이스: 등수 전체가 아니라 한 국가의 등수만 궁금하다면

백준 8979번(올림픽) 파이썬 풀이 및 테스트 케이스: 등수 전체가 아니라 한 국가의 등수만 궁금하다면

https://www.acmicpc.net/problem/8979 solved.ac 기준 실버 5. 올림픽 나라 순위를 정하는 문제인데, 모든 국가의 순위를 결정하는 것이 아니라 원하는 한 국가의 순위만 알면 되기 때문에 편리하다. 동률 등을 고려할 필요가 없는 것이다. 테스트 케이스 4 3 1 1 2 0 2 0 1 0 3 0 1 0 4 0 0 1 2 4 2 1 3 0 0 3 0 0 2 4 0 2 0 2 0 2 0 2 5 3 1 8 3 5 2 54 2 0 3 1 20 6 4 8 3 91 5 1 0 43 4 # 도쿄 올림픽에서 우리나라의 순위 찾기 20 19 3 38 32 19 6 4 5 5 7 10 12 11 17 7 7 10 10 4 4 2 16 7 6 8 14 6 7 6 1 10 10 20 12 10 11 16 11 27 14 17 13 10 12 14 9 22 20 22 8 39 41 33 19 6 4 10 20 7 3 5 18 17 7 22 15 7 6 7 2 4 2 2 4
백준 2816번(디지털 티비) 파이썬 풀이 및 테스트 케이스: 꼭 효율적이어야 할까

백준 2816번(디지털 티비) 파이썬 풀이 및 테스트 케이스: 꼭 효율적이어야 할까

https://www.acmicpc.net/problem/2816 solved.ac 기준 브론즈 1. 효자 상근이가 할머니를 위해 KBS1과 KBS2를 채널 리스트 제일 상단으로 옮겨주는 이야기로, 눈물겹다. 이 문제의 핵심은 꼭 효율적일 필요는 없다는 것이다. 만일 가장 효율적인 방법을 구하는 문제였다면 꽤나 어려웠을 것이다. 하지만 옮기는 방법은 (방법의 길이를 제한하지 않는다면) 무한하며 채널이 100개 이하, 방법의 길이는 500 미만이므로 만일 KBS1과 KBS2가 리스트 제일 아래에 있다고 하더라도 효율적인 방법의 길이는 400을 넘지 않는다. 따라서 우리는 단순히 KBS1과 KBS2가 있는 곳으로 내려가서 끄집어오면 된다. (즉 1과 4 외의 버튼을 사용하지 않아도 된다.) 여기서 스페셜 저지의 의미가 등장한다. 출력이 한 가지로 정해져 있지 않다는 의미다. 문제의 조건을 만족한다면 어떤 방법이든 상관없으며, 실제로 아래 예시 코드도 문제의 예제 출력을 출력하지 않는다.
백준 5339번(콜센터) 파이썬 풀이 및 테스트 케이스: print 함수의 발견

백준 5339번(콜센터) 파이썬 풀이 및 테스트 케이스: print 함수의 발견

https://www.acmicpc.net/problem/5339 solved.ac 기준 브론즈 5. 단순히 문자열을 출력만 하면 되지만, 의외로 정답 비율이 높지 않다. 67.572%. 이는 문자열에 함정이 숨어 있기 때문이다. 바로 함정은 \. \는 특수 문자를 일반 문자로 인식시켜 주는 기호이다. 즉 만약 다음과 같이 단순히 복붙해서 print 함수만 붙이는 경우 컴파일 에러가 난다. 마지막 따옴표를 일반 문자로 인식하는 까닭. print(' /~\') print(' ( oo|') print(' _\=/_') print(' / _ \') print(' //|/.\|\\') print(' || \ / ||') print('============') print('| |') print('| |') print('| |') File "Main.py3", line 1 print(' /~\') ^ SyntaxError: unterminated string literal (detected a
백준 10093번(숫자) 파이썬 풀이 및 테스트 케이스: 천 리 길도 한 걸음부터

백준 10093번(숫자) 파이썬 풀이 및 테스트 케이스: 천 리 길도 한 걸음부터

https://www.acmicpc.net/problem/10093 solved.ac 기준 브론즈 2. 문제 구현 자체는 어렵지 않다. 두 양의 정수가 주어졌을 때, 두 수 사이에 있는 정수를 모두 출력하면 된다. 루프문으로 간단히 해결할 수 있지만, 진짜 문제는 두 양의 정수 사이에 예를 들어 10만 개가 있을 때는 어떻게 하겠느냐는 것. 테스트 케이스 # 8 14 5 9 10 11 12 13 # 801 800 0 # 500 500 0 # 9 10 0 # 9 11 1 10 # 12 3 8 4 5 6 7 8 9 10 11 구현 상의 핵심은 다음과 같다. 두 수가 같은 경우, 1 차이 나는 경우의 예외 처리 A가 B보다 큰 경우의 예외 처리 모았다가 한 번에 출력하는 것은 리소스를 과도하게 사용한다 둘째 줄의 마지막 수 뒤에는 띄어쓰기가 없음 a, b = map(int, input().split(' ')) # 예외처리 및 a < b로 만들어 주기 if a == b: print(0) e
백준 1550번(16진수) 파이썬 풀이 및 테스트 케이스: 딕셔너리의 기초

백준 1550번(16진수) 파이썬 풀이 및 테스트 케이스: 딕셔너리의 기초

https://www.acmicpc.net/problem/1550 solved.ac 기준 브론즈 2. 역시 녹슨 파이썬 감각을 키우는 데는 이만한 게 없다. 여유가 생기면 다른 언어에도 도전해 보려 한다. 일단은 파이썬부터~ 16진수는 간단히 16진수 수를 입력받아 10진수로 출력하는 프로그램을 작성하는 것이다. 어려울 것 없는 문제지만 역시 첫 제출은 틀렸다. 테스트 케이스 A: 10 15A: 346 ABCDEF: 11259375 193: 403 0: 0 FFFFFF: 16777215 합격 코드는 다음과 같다. a = list(input()) dic = {'A':10, 'B':11, 'C':12, 'D':13, 'E':14, 'F':15} b = [] for i in a: if i in dic: b.append(dic[i]) else: b.append(int(i)) c = len(b) ans = 0 for i in b: c -= 1 ans += i * 16 ** c print(an
백준 1110번(더하기 사이클) 파이썬 풀이 및 테스트 케이스: 숫자 문제지만 str로 접근하기

백준 1110번(더하기 사이클) 파이썬 풀이 및 테스트 케이스: 숫자 문제지만 str로 접근하기

https://www.acmicpc.net/problem/1110 solved.ac 기준 브론즈 1. 몇 년 만에 다시 백준에 접속해서 파이썬 문제를 풀기 시작했다. 이번엔 오래 가야 할 텐데... 그동안 실력이 많이 녹슬어서 브론즈 1 문제도 좀 헤맸다. (사실 입력을 어떻게 받아야 할지도 까먹어 구글링을 했다. input()을 사용하면 된다.) 아무튼 잘 부탁드린다. 블로그 자체도 오랜만에 접속했는데 왠지 몰라도 꾸준히 방문자 분들이 들어오고 있어 신기하다. 각설하고.. 입력된 수를 가지고 새로운 수를 만들고, 몇 번을 하면 다시 처음 수로 돌아오는지에 대한 문항이다. 그렇게 어려운 문제는 아니라고 생각했고, 실제로도 그렇다. (solved.ac 연동이 이럴 때는 별로기도 하다. 문제 난이도를 보고 방심을 한다.) 다만 역시 첫 시도에는 실패했다. 0 이상 99 이하의 정수를 입력해 주는데, 아마도 영원히 돌아오지 않는 경우는 없는 모양이다. 관련해서 증명을 해 볼 수도 있겠으나
11월 4주차 블챌

11월 4주차 블챌

블챌도 이제 마지막이다. 소박한 희망을 적어본다. 개인적으로는 여행 상품권을 탔으면 좋겠다. 금액이 제일 잘 나가니까. 지금 맥북을 쓰고 있지만 또 다른 맥북도 좋다. 아이패드도 물론 좋다. 그냥 다 좋다. 아무거나 주기만 하세요. 혹시나 이 글을 누군가 보고 있다면, 당신도 수고 많았습니다!
11월 3주차 블챌

11월 3주차 블챌

오늘은 최고기온이 18도다. 11월 21일인데? 당장 다음 주면 12월인데? 기후변화가 피부로 느껴지는 요즘이다.
11월 2주 블챌

11월 2주 블챌

요즘은 운전면허를 따려고 운전학원에 등록해서 교육을 받고 있다. 저번주부터 교육을 받기 시작해서 드디어 내일 도로 주행 시험만 통과하면 운전면허증을 발급받을 수 있다. 오늘 마지막으로 도로 주행 시험을 쳐 보니 결과는 좋았긴 한데, 주말 동안 다 까먹은 건지 정지 시 기어 중립부터 여러 가지를 다시 공부했다. 내일 잘 할 수 있겠지? 아침 9시 50분까지 오라고 하니, 너무 일찍 부르진 않아 다행이다. 핫팩으로 손 녹이면서 가면 되겠지. 도로가 그리 붐빌 시간도 아니니 편하게 치고 오면 된다.
ⓒ 2022 [더치커피워터] All rights reserved.
Supported by Keyzard