강화학습의 경우 다음의 유명한 딜레마가 있다.


Challenge2: explore-exploit dilemma

past experiences (exploitation) vs new choices (exploration)

이용 vs 탐색


사례1

익숙한 길로만 다니면 지각은 안하겠지만, 새로운 지름길을 발견할 수는 없다.

(하던대로만 하면 발전이 없다.)

그렇다고 너무 새로운 길로만 다니면, 지각하기 쉽다.

처음에는 탐색을 위해 새로운길로 다니다가, 시간이 갈수록 익숙한 길로 다닌다면?


사례2

늘 먹던 음식만 먹으면 실패할일은 없겠지만, 새로운 맛집을 발견할 수 없다.

그렇다고 매일 새로운 음식만 먹으면 취향에 안맞는 음식을 자주 먹어야 한다.

주중에는 가던 음식점, 주말에는 새로운 음식점을 가보는건 어떨까?


Q-Learning ε-greedy exploration
with probability ε choose a random action,
otherwise go with the “greedy” action with the highest Q-value.
In their system DeepMind actually decreases ε over time from 1 to 0.1



반응형

'AI, ML > ML' 카테고리의 다른 글

Standardization vs normalization  (0) 2019.01.04
Gym  (0) 2018.11.07
크로스엔트로피 손실함수  (0) 2018.10.02
credit assignment problem  (0) 2018.09.27
딥러닝 자체구현으로 XOR문제 풀어보기  (1) 2017.12.14

Anaconda install

Jupyter를 사용하기위해 anacoda install을 진행했다. (linux, ubuntu 환경)

인스톨은 여기를 참조했다.

인스톨후 conda를 입력해서 인식되면 제대로 설치된 것


맥환경에서 install 하는건 여기에서 설치프로그램 클릭해서 설치했다.

Jupyter 설정

Jupyter 설치는 conda설치시에 기본적으로 되고, 설정하는 방법은 여기 참조

Jupyter notebook에서 tensorflow를 사용하려면, linux 터미널에서 conda install tensorflow 하면 설치된다.


ipdb관련

Jupyter notebook에서 라인디버깅을 하기위해서 ipdb를 추가 인스톨해야했는데 conda install ipdb로는 안됐고

conda install -c conda-forge ipdb로 하니까 깔렸다.

디버깅 방법은 아래와 같다.



위에거 빠져나올때는 exit() 쳐줘야 한다.


gym관련

$ conda install gym으로는 설치가 안됐고

여기 참조해서 $conda install -c akode gym하니까 설치가 됐다.

반응형

'Programming > Python' 카테고리의 다른 글

python array (indexing and slicing)  (0) 2019.02.28
pudb  (0) 2018.11.15
python numpy  (0) 2018.02.28
python virtualenv 가상환경  (0) 2017.11.16
python에서 doxygen 사용해보기  (0) 2017.11.14

유용링크들

101가지 문제풀기 연습



random 관련


0이상 20미만의 int 10개 배열 만들기

> a = np.random.randint(20, size=10)

array([17, 12,  4, 18, 11, 15,  5, 19, 19, 18])



5행3열의 array를 만들고 그 값들을 5~10 사이의 랜덤한 숫자로 채우고 싶을때

np.random.uniform(5, 10, size=(5,3))

#> [[ 8.50061025  9.10531502  6.85867783]

#>  [ 9.76262069  9.87717411  7.13466701]

#>  [ 7.48966403  8.33409158  6.16808631]

#>  [ 7.75010551  9.94535696  5.27373226]

#>  [ 8.0850361   5.56165518  7.31244004]]


위를 소수점 3째자리 까지만 나오도록 하고 싶으면

> np.set_printoptions(precision=3) 하면됨(글로벌 적용이라 그 이후에 출력하는데는 다 공통적으로 적용됨)


e-04와 같은 scientific notation을 제거하고 싶으면?

> np.set_printoptions(suppress=True) 하면 된다.



array관련

> np.arange(10) 하면 array([0,1,2,3,4,5,6,7,8,9]) 가 만들어 진다.



> arr = np.arange(10) 한다음


> arr[arr%2 == 1] 하면 array([1,3,5,7,9])가 리턴된다. (조건문을 인덱스 부분에 넣을 수 있다는 것. 그냥 python list로는 안되는 부분)


> arr[arr%2 == 1] = -1 하면 arrary([0,-1,2,-1,4,-1,6,-1,8,-1]) 이 만들어진다. 조건문으로 인덱스 조회가 되는것 뿐 아니라 assign과 연결시킬수도 있다.


> arr *= -1 하면 array([0,-1,-2,-3,-4,-5,-6,-7,-8,-9])가 만들어진다. (element에 대한 연산을 저런식으로 할 수 있다는것.. python list로는 다른 의미가 되어버리니 주의할 것)



np.where 사용하기

> a = np.array([1,2,3,2,3,4,3,4,5,6])

> b = np.array([7,2,10,2,7,4,9,4,9,8])


값이 같은 인덱스만 추리고 싶으면?

> np.where(a == b) 하면된다.

> array([1,3,5,7])이 리턴된다.




반응형

'Programming > Python' 카테고리의 다른 글

pudb  (0) 2018.11.15
Anaconda & Jupyter  (0) 2018.03.23
python virtualenv 가상환경  (0) 2017.11.16
python에서 doxygen 사용해보기  (0) 2017.11.14
python import  (1) 2017.11.14

Parity

패리티는 두개가 서로 같은걸 의미한다.


Risk Parity 전략

2009년에 등장한 포트폴리오 전략.

위험을 균등하게 맞춘다는 의미로 risk parity라 명명한듯 하다.


고전적인 포트폴리오는 보통 주식60%, 채권40%등 분산투자 형태로 구현된다.

주식만으로 100% 포트폴리오를 구성하는 경우 단기적인 리스크가 너무크고 수익률이 정체되는 기간이 긴 경우도 있기 때문



그런데 리스크의 관점에서 보면, 위 그림에서와 같이 주식이 전체 리스크의 90%를 짊어지고 가게된다.

그리고 이것이 금융위기와 같은 상황에서는 큰 문제가 된다.




리스크를 50:50으로 맞추어보면 위 그림에서와 같이 주식28%, 채권72%의 비중이 되어야 하는데,

문제는 채권의 비중이 높아짐에 따라 수익이 낮아진다.


이러한 단점을 극복하기위해 채권에 레버리지를 취한 전략을 risk parity라고 한다.


고찰

당연히 이 전략이 만능은 아니고, 

주식강세 장에서는 상대적으로 수익이 감소되는 단점이 있다.

반응형

그냥 수익률만 놓고 비교하면, 위험을 얼마나 감수한 수익률인지 알 수 없기 때문에..

감수한 위험을 고려해 수익률을 평가하는 척도


이미 여러개 나와 있다.


모두가 약속이나 한 듯이 비율(ratio)이라는 단어를 달고 있는데, 기본적으로 '수익 나누기 위험'의 꼴을 따르기 때문이다.


알파, 베타

여기 설명을 읽으면 이공계생 입장에서 쉽게 이해가 된다.

위 그래프에서 알갱이 하나하나가 일별 수익률이라고 보면된다(점의 개수가 300개이면 300일간의 수익률이라고 보면 됨)
y축의 값은 알갱이 하나의 일별수익률
x축의 값은 그때의 BM수익률, (BM = 벤치마크)

이때 y절편이 알파.. BM대비 얼마나 높은 수익을 거두었는지
이때 기울기가 베타.. BM대비 얼마나 민감한지..

무위험수익률로 보정해줄 경우, 젠센의 알파, 베타라고 함


샤프 비율

여기에 정리해 둠

반응형

'재무 금융' 카테고리의 다른 글

CAPM(Capital Asset Pricing Model, 자본자산가격결정모형)  (0) 2019.01.17
Risk Parity 전략  (0) 2018.01.30
z-score, Sharpe's ratio(샤프 비율)  (0) 2018.01.25
선물  (0) 2018.01.21
미국 Ticker Symbol 시스템 정리  (1) 2017.12.12

무위험수익률(risk-free rate of return)

은행예금처럼 아주 안전한 상품의 수익률(이자율)

예를들어 은행 정기예금 금리가 연2.5%라면, 현재 무위험 수익률은 2.5%라고 표현가능

(실제로는 은행정기예금이 아니라 국공채수익률이나 미국의 경우 재무성 증권(Treasury Bill)수익률 사용)


z-score

평균과의 차이를 표준편차로 나누어서, 

평균에서 몇 시그마 떨어져있는지 수치로 나타낸것

예를들어 수능시험이라고 한다면, 내가 평균과 동일하면 0시그마, 우수하다면 3시그마 이런식


Sharpe's ratio(샤프 비율)

William Sharpe교수가 1966년에 개발한 투자 성과 판단용 지수

수익을 변동성으로 나누어 계산한 위험을 고려한 수익을 말한다.

z-score와 계산이 상당히 유사하다.


간단하게는 일별수익률의 평균을 표준편차로 나누어준다.

매일매일의 수익률이 0이라면 샤프 비율은 0이 된다.

매일매일의 수익률이 크다면(변동성이 작다면 더 좋다) 샤프 비율은 커진다.

따라서 값이 클 수록 고수익. z-score와 방식이 유사하다

더 높은 샤프 비율을 나타내는 자산이 동일한 위험에 대해 더 높은 수익률을 제공한다

표준편차로 나눈다는 것은 변동성으로 나눠준다는 의미로 해석할 수 있다.

가변성 대비 보상이라는 개념으로도 볼 수 있다.

normalize가 들어가므로 서로다른 종목에 대한 수익률을 직접비교할 수 있도록 바꿔준다는 개념도 있다.



좀더 세밀하게 계산하려면.. 아래와 같이 벤치마크 대비 수익률을 쓸 수도 있다.

위는 무위험 수익률을 벤치마크로 쓴거고..

경우에 따라서 S&P 500 수익률을 쓸 수도 있다.



샤프 비율의 강점

시계열 정보만 가지고 추가적인 정보없이 직접 계산 가능


샤프 비율의 단점

샤프 비율이 위험은 곧 변동성이고 변동성은 나쁘다는 개념에 의존한다는 것(변동성이 곧 표준편차이고 표준편차로 나누니.. 표준편차가 작을 수록 유리)

급격한 상승을 겪는 종목의 경우 upside volatility 를 갖는데 샤프비율로 해석하면 부정적인것으로 비춰진다.


정규분포를 따른다는 가정이 있는데.. 실제 주식의 수익률 데이터는 정규분포라고 단정지을 수 없다.

이는 볼린져밴드에서도 동일하게 발생하는 문제





반응형

'재무 금융' 카테고리의 다른 글

Risk Parity 전략  (0) 2018.01.30
위험조정수익률(risk-adjusted return)  (0) 2018.01.26
선물  (0) 2018.01.21
미국 Ticker Symbol 시스템 정리  (1) 2017.12.12
펀드 이해하기  (0) 2017.11.24

선도(Forward): 매입자, 매도자 당사자간 거래

선물(Futures): 매입자, 거래소, 매도자간 거래 (제도화)


제로섬 게임

상승과 하락.. 상대방이 있어야 계약이됨.. (모두 상승만 예측한다면 계약성립이 안됨)

선물은 항상 peer가 있고 어떤이의 손해는 곧 어떤이의 이익이다.
사실 사고파는 peer가 있다는 점은 주식과 동일하지만, 주식은 매도한사람이 주가하락한다고 손해보지는 않는다


미래시점의 주가를 현시점에서 거래(내기) 


롤오버

예를들어 9월물 매수계약을 했는데.. 9월에 실제로 지수상승이 있었고.. 12월에도 오를거라 생각되면 12월물로 포지션이동을 할 수 있는데 이를 롤오버라한다.

쉽게말하면 9월물을 매도하고 12월물을 매수하는 과정임 


콘탱고(Contango)

선물가격 > 현물가격..정상시장(3월물 빼고)


백워데이션(Back-wardation)

선물가격 < 현물가격..비정상시장(3월물 빼고)

미래에 대해서 비관적이라는 말이됨.. 


HTS 빠른 창은 다음과 같다.

주식은 매수 후 매도이지만, 선물은 매도후 매수로 청산이 가능하다.


반응형

'재무 금융' 카테고리의 다른 글

위험조정수익률(risk-adjusted return)  (0) 2018.01.26
z-score, Sharpe's ratio(샤프 비율)  (0) 2018.01.25
미국 Ticker Symbol 시스템 정리  (1) 2017.12.12
펀드 이해하기  (0) 2017.11.24
수익률  (0) 2017.11.21

ocx 프로그래밍을 하다가, visual studio 버전을 올리다 보면, 

ocx가 포함된 dialog를 열다가 exception이 나는데 알고 보면 occcont.cpp의 925번째 라인 오류라고 나올 때가 있다.


나의 경우는 빈번하게 발생해서 여기에 적어둔다.


해결책은 command line으로 가서 해당 ocx를 

regsvr32 /u my_ocx.ocx 이런식으로 unregister해주고 나서 

regsvr32 my_ocx.ocx 이런식으로 다시 register해주면 된다.


관리자 권한이 아닐경우 친절하지 않게 이상한 오류가 발생할 수 있으니 반드시 comand 창을 관리자 권한으로 열자

반응형

'Programming > Visual studio' 카테고리의 다른 글

visual studio 단축키  (0) 2017.11.12

딥러닝 개념을 공부하면서 python으로 만들어 본 구현체


아래 코드에는 XOR를 학습시키는 코드까지 함께 들어있다.


github(https://gist.github.com/sevity/)에서도 코드를 볼 수 있다.





반응형

'AI, ML > ML' 카테고리의 다른 글

Standardization vs normalization  (0) 2019.01.04
Gym  (0) 2018.11.07
크로스엔트로피 손실함수  (0) 2018.10.02
credit assignment problem  (0) 2018.09.27
exploit - explore dilemma  (0) 2018.09.27

MD5

 

md5는 암호화 해시 함수의 일종이다.

해시함수(http://sevity.tistory.com/21) 및 암호화해시함수(http://sevity.tistory.com/22)에 대해서는 각각의 링크를 참조해주시기 바랍니다.

 

다음 그림과 같이 어떤 길이의 인풋이 들어오더라도 128bit의 해시값으로 만들어준다.

 

 

인풋의 길이와 상관없이 128비트의 해시값을 생성한다(위의 DFDD등은 16진수로 표기한것이며, 위 샘플은 해시값의 길이가 128비트가 아니어서 정확히 md5 예제는 사실아님에 유의, 위는 계산하면 160비트다 그리고 그렇다면 SHA가 되겠다 ㅎㅎ)

 

글자하나가 미묘하게 바뀌어도 결과값이 크게 달라지는 난수화 효과가 발생함을 알 수 있다. (이래야 역공학이 힘들다)

 

MD5의 내부 구현기술은 여기(https://ko.wikipedia.org/wiki/MD5)를 참조하면 되는데, 

 

실제 구현시에는 #include <openssl/md5.h> 등으로 쉽게 라이브러리를 쓸 수 있어서, 학습용이 아니면 반드시 직접 구현할 필요는 없다.

 

 

linux 머신에서 다음과 같이 간단한 방법으로 md5 값을 확인할 수 있다.

 

$ echo -n "sevity" | md5sum

34208682f4f71b1cc3a87bbaad4af709

 

 

나중에 새로 나온 SHA에 비해서 보안에 취약하다는 약점이 있다.

 

SHA

 

MD5랑 개념적으로는 암호화 해시의 일종이라는 점에서 같고, 어떤 길이의 인풋이 오더라도 160bit의 해시값으로 만들어 준다.

MD5와 마찬가지로 내부 디테일까지 꿰고 있을 필요는 없어보인다.

MD5보다는 좀 더 역상 공격하기 힘들게 설계되어 있다. 

 

미국 국가안보국(NSA)이 1993년에 처음으로 설계했으며 미국 국가 표준으로 지정

 

SHA버전별 정보는 위키피디아에서 가져온 아래 표 참조

 

 

 
필드에서는 SHA-256이 많이 쓰이고 있는 상황인 것 같다.
 
linux 머신에서 다음과 같이 간단한 방법으로 SHA값을 확인할 수 있다.
 
echo -n sevity | sha256sum
3334da01eb032a81a83e89d1b60198910647fcb698f47a81bdd61c0719212309  -
 
 

 

 

 

 

반응형

'비트코인' 카테고리의 다른 글

비트코인 논문 리뷰  (0) 2021.08.31
블럭체인의 원리  (0) 2020.07.31
비트코인 분석 연재를 시작하며  (2) 2017.12.10
암호화 해시 함수(cryptographic hash function)  (0) 2017.12.10
hash 기초  (0) 2017.12.10

+ Recent posts