오일러(Leonhard Euler, 1707~1783)는 스위스의 수학자, 물리학자, 천문학자, 논리학자, 공학자로서 그래프의 창시자라고도 알려져 있습니다.

 


 

 

특히나 오일러의 등식들은 수학의 아름다움(?)을 표현하는 식으로 유명하게 알려져 있습니다. 이 식을 잘 살펴보면 영역이 다른 다섯 가지 수인 0,1(상수/constant), 자연상수 e (해석학), 원주율 π, 그리고 허수 i (대수학)가 모두 하나의 식에 포함되어 있으며, 수학의 가장 기초가 되는 4가지 연산인 곱셈, 지수, 그리고 등호가 모두 쓰인 책이기 때문입니다. 아인슈타인과 함께 20세기의 최고 물리학자로 불리는 리처드 파인만(Richard Feynman)은 이 식을 "수학에서 가장 비범한 식(the most remarkable formula in mathematics)"이라며 극찬하였습니다.

 


 

 

한편 1735년 프러시아의 쾌니히스베르크(현재는 러시아의 칼리닌그라드)에 위치한 프레겔 강 한가운데 섬 2개에 놓은 7개 다리가 있는데 주민들이 오일러에게 이 다리들을 빠짐없이 1번씩만 지나서 출발점으로 돌아올 수 있는지 물어보았습니다. 오일러는 그렇게 할 수 없다는 답변을 전달해 주었는데, 이 문제가 최초의 그래프 문제로 알려져 있습니다.

 

이 문제는 한 붓 그리기와 같은 문제이고, 오일러는 다리(그래프의 간선)를 한 번씩만 지나서 출발점으로 되돌아오려면 각 정점의 차수가 짝수여야 한다는 것을 증명하였습니다. 주어진 그래프에서 임의의 정점에서 출발하여 모든 간선을 빠짐없이 한 번씩만 지나면서 출발점으로 돌아오는 경로를 오일러 서킷(Euler Circuit) 또는 오일러 사이클이라고 합니다.

게임은 우리말로 '놀이, 오락, 경기' 등의 의미를 가지고 있습니다. 주변에서 흔히 보는 고전적 게임은 바둑, 장기, 포커가 있으며, 온라인 게임으로는 스타크래프트, 베틀 그라운드을 즐기며, 스포츠 게임으로는 골프, 축구, 야구 등이 있습니다.


 

1) 모든 게임에는 규칙이 있습니다. 규칙은 게임의 주체가 되는 경기자와 팀의 구성을 규정하며, 경기자들이 어떠한 순서로 게임을 할 것인가도 정하기도 합니다.

 

2) 게임에서는 전략이 중요하며 무엇보다도 상대방 전략에 관한 예측이 중요합니다.

3) 최종 결과와 그에 따른 보수가 있습니다. 예를 들어 바둑에서는 백이 이기거나, 흑이 이기든지 둘 중 한 쪽은 이기는 상황이 발생합니다. 승자에게는 우승상금과 광고 출연료등 다양한 보수 및 혜택이 있을 것입니다. 이러한 보수를 경제적 가치로 환산한 값이 승자가 얻게 되는 보상 혹은 보수(payoff)입니다. 반면에 패자에게 주어지는 약간의 상금, 패배로 부터 오는 상실감등은 경제적 가치로 환산하면 패자가 얻는 보수라고 볼 수 있습니다. 당연히 게임 참가자인 경기자는 자기자신의 보수를 극대로 추구하는 데 목표를 두게 됩니다.

4) 게임의 결과는 경기자들간의 전략적 상호작용에 의해 결정됩니다. 예를 들면 월드컵 축구 경기에서 한국 대표팀이 아무리 뛰어나더라도 상대팀 전략이 더 뛰어나면 한국 대표팀이 패배할 가능성이 높습니다. 반대로 한국 대표팀이 아무리 형편이 없더라도 상대방의 실력이 떨어지거나 경기 중에 실수를 계속한다면 한국 대표팀은 이길 수 있을 것입니다.


 

게임이론은 서로간의 전략이 상호 작용하여 시장 점유율, 순이익, 기업퇴출 여부 등 일상생활에서도 적용이 됩니다. 이외에도 우리의 주변의 게임 사례들은 수도 없이 많습니다. 전문 경영인이 주주의 이익에 반하여 개인이 이득을 취하는 도덕적 해이, 보험회사가 의료보험가입자의 건강상태나 과거병력을 알기 어렵기 때문에 발생하는 역선택 문제등 비대칭 정보로 인하여 발생하는 주인-대리인 문제도 모두 게임의 범주 안에 있다고 볼 수 있습니다. 우리는 이처럼 경제, 정치외교, 기업경영등등 의식적이든 무의식적이든 늘 게임의 상황에 직면하고 있습니다.

따라서 인간 행태와 경제사회 현상을 파악하는데 있어서 게임에 대한 이해는 그만큼 중요하고, 게임을 이해하기 위해서 게임의 특징을 체계화한 것이 게임이론(Game Theory)입니다. 게임이론은 우선 전략적 상호작용(strategic interactions)이 존재하는 상황에서 개인의 전략 또는 행동이 초래하게 될 결과에 대한 모형을 세웁니다. 그렇게 모형화된 게임에서 경제인이 상대편의 대응전략을 고려해가면서 자기의 이익을 효과적으로 달성하기 위해 어떠한 전략을 선택할 것인가 분석을 합니다.

그러한 분석결과를 바탕으로 갖가지 경제사회 현상을 설명할 수 있고 더 나아가서는 게임이론은 개인의 전략이 초래하게 될 결과 중 가장 바람직한 결과를 얻기 위해서는 어떠한 전략을 선택해야 할 것인가 제시하는 실용적인 기여도 하게 됩니다.

S 언어는 미국 최대의 전화 통신 회사인 AT&T의 벨 연구소 (Bell Laboratories)에서 존 챔버스 (John Chambers), 릭 베커 (Rick Becker), 앨런 윌크스 (Allan Wilks)에 의해 개발된 프로그래밍 언어입니다. 프로그래밍 언어는 사용 목적에 따라서 수십 가지가 존재합니다. S 언어는 특별히 통계 연산의 연구 목적으로 개발된 프로그래밍 언어 입니다.


S 언어 개발에 참여했던 존 챔버스가 "S 언어의 목적은 아이디어를 빠르고 충실하게 소프트웨어로 전환하는 것이다." 라고 했을 정도로 S 언어는 매우 유연한 자료 조작 및 변환 환경을 제공하며, 매우 뛰어난 그래픽 구현능력도 가지고 있습니다. 참고로 우리가 흔히 알고있는 유닉스 (UNIX) 운영체제와 프로그래밍 언어인 C, C++ 또한 벨연구소에서 개발된 것들입니다.

S 언어는 (S 시스템) 이후 R과 S- Plus로 나뉘어 졌는데, R과 S-Plus는 모두 S 언어를 기반으로 작성된 프로그램이라는 점에서 공통점을 가집니다. 따라서 두 프로그램은 상당 부분 상호 호환이 가능하며 R에서 사용하는 대부분의 기능, 구문들이 S-Plus 에서도 적용 가능합니다.

 


그러나 S-Plus는 상업용 소프트웨어로 그 저작권(license)이 현재 TIBCO software사에 있는 반면에 , R은 GNU 프로젝트의 GPL (General Public License)을 따르는 공개 소스 소프트웨어로 발전하였다는 점에서 차이가 있습니다. GNU 프로젝트란 무료 소프트웨어 재단 (Free Software Foundation, FSF)에서 유닉스 호환의 소프트웨어를 개발하여 무료로 배포하는 프로젝트는 의미하며, GPL은 GNU 프로젝트가 부여하는 일반 공중 사용 허가서 입니다. 따라서 GPL이 부여된 소프트웨어는 무료이며, 프로그램의 사용이나 수정, 재배포에 제약이 없을 뿐만 아니라 수정이나 재배포된 프로그램은 다시 GPL을 부여받게 됩니다. 그렇기 때문에 GPL을 따르는 R을 GNU R이라고 하며, R은 수많은 프로그래밍 기술자들과, 수학자, 통계학자 및 다양한 분야들의 전문가들에 의해 기능이 개선되고 무료로 계속 재배포되면서 발전하고 있습니다.

보통 우리는 투자를 하는데 있어서 위험, 리스크를 최소화 하려고 합니다. 이러한 위험 및 리스크를 관리하기 위해서 주로 분산 투자를 진행합니다. 실제로 한 종목을 사는 것보다 여러 종목으로 나누어 사는 것이 변동성이 작기 때문입니다. 비슷한 성질 및 매력을 가진 종목이 여러 개 있으면 한 종목을 사는 것이나 여러 종목을 사는 것이나 산술 평균 수익의 기대치는 같습니다. 

 

 

하지만 여러 종목으로 나누어 사게 되면 변동성이 더 작아지게 됩니다. 주로 산술평균은 같은데 변동성이 더 작으면 기하 수익(복리 수익)이 더 높기 때문에 수익이 더 커지게 됩니다. 이러한 분산 투자와 관련된 변동성 이외에 또 한가지 중요한 변동성이 있습니다. 그것은 바로 시간에 따른 변동성입니다. 분산 투자를 하는 일반인 투자자들도 시간에 대한 변동성을 제대로 이해하고 있는 사람은 많지 않습니다. 

 

 

주로 한 종목을 사더라도 하루에 다 사는 것보다 여러 날에 걸쳐서 사는 것이 변동성이 더 작습니다. 이평선을 고려하였을 때, 매일 매일의 주가보다 이평선이 훨씬 더 부드럽습니다. 이것은 1년에 한 번 주식을 사는 것보다 오랫동안 나누어서 사는 것이 변동성이 작다는 시사점을 지니고 있습니다. 

 

이평선은 최고점에 있어서는 개별 주가보다 낮고, 최저점에 있어서는 개별 주가보다 높습니다. 개별 주가의 전체 평균과 이평선의 전체 평균은 거의 일치합니다. 산술평균의 수익은 둘이 같은데 변동성은 이평선이 훨씬 더 작습니다. 이러한 성질이 복리 수익을 높여주는 것입니다.

강화학습에서는 보상과 벌칙이란 상태값이 주어져 있습니다. 직접적으로 정답을 처음에 주는 것이 아니라, 어떤 상태에서 취한 행동이 잘된 행동이면 보상을 주고, 잘못된 행동이라면 벌칙을 부여합니다.

 

학습 대상은 시행착오를 통해 스스로 벌칙을 최소화하고 보상을 최대화하도록 행동을 학습하게 됩니다. 학습대상이 이용할 수 있는 정보는 보상 뿐이기 때문에, 학습목적에 알맞는 보상을 설정하는 것이 제일 중요한 task가 되겠습니다.

 

 

비디오 게임을 예로 들었을때, 강화학습에서는 학습하는 객체를 에이전트(Agent)라고 부릅니다.  위 그림의 마리오를 보면 에이전트(사람)는 동전을 넣고 레버를 조작하면서 마리오를 움직여서 버섯 몬스터를 없애서 게임이 끝났을 때 최종 점수를 받게됩니다. 처음에는 게임에 익숙하지 않은 에이전트가 버섯과 부딪혀서 죽거나, 뛰어가다 점프를 안하고 구덩이에 빠져서 죽는경우가 있습니다. 계속해서 투입되는 동전을 보면서 부딪혀서 죽거나, 장애물을 피해야 안 죽는 것을 인식하게 됩니다. 따라서 먼저 계속 투입되는 동전을 아까워하며 점점 조작에 익숙해집니다. 조작이 익숙해지면 최대한 죽지않고 빠르게 스테이지를 클리어 하는 법을 터득하게 됩니다. 에이전트는 동전(벌칙)의 투입을 최소화하면서, 점수(보상)을 최대화하도록 레버 조작이라는 행동을 학습하게 되는 것입니다. 

 

이처럼 강화학습은 직접적으로 정답을 주지는 않지만 주어진 보상을 최대화할 수 있도록 시행착오를 통해 행동을 최적화할 수 있습니다.

지난 5월 달에는 학기 중에 공부도 많이하면서 시간이 날때마다 버스에서 많이 독서를 하였습니다. 그래서 이번 달에도 효율적으로 시간을 보내면서 지적으로도 성장을 원하여서 매달 2권의 책의 독서를 계획 중입니다.

 

 

 

이번 달에는 S&P 지수 상승률이 47%에 못미치는 1970년대에 4200%의 수익률을 기록한 퀀텀펀드의 공동 창업가 짐 로저스가 집필한 책에 대하여 독서를 해보았습니다. 기존에 4차 산업혁명을 맞아서 IT 개발의 기술적인 요소 관심이 많지만 저의 제일 주된 관심분야는 자산관리 및 운용입니다. 이러한 저의 주요 관심분야에서의 유의미한 결과와 역사에 한 획을 남긴 짐 로저스의 생활 철학 및 인생을 사는데 더 나은 삶을 살기 위해 팁을 얻기 위해 이 책은

많은 인사이트를 남겨주었습니다.

어떻게 보면 책에서는 누구에게는 당연한 이야기를 할 수 있다고 느껴질 수 있습니다. 하지만 안다는 것과 실천하는 것과는 엄청난 차이점을 가지고 있습니다. 더불어서 성공을 향하여 달려가는데 있어 자신의 색깔을 뚜렷히 하고 남을 존중하는 것에 많은 시사점을 준 책 이였습니다.

책의 구성을 간단하게 설명을 해드리면

1) 학창시절

2) 절대로 하지 말아야 할 일

3) 성공적인 인생

4) 재능 발견하기

5) 여성의 힘

6) 마음에 관한 문제

7) 품위 있는 삶에 관해

8) 모험을 좇아서

9) 돈에 대한 이해

등 전반적인 인생을 어떻게 살아야 하고 자기계발을 어떻게 이어나가는 것이 중요한지 강조하고 있습니다. 이 책을 몇 번씩 더 읽어보면서 나중에 저의 자식에게도 쉽게 이러한 이야기를 옆에서 해주면 좋을 것 같다는 생각이 들었습니다.

마지막으로 이 책을 읽게 기회를 주신 이레미디어에 감사하다는 말씀을 전하고 싶습니다.

'금융 > 자산운용' 카테고리의 다른 글

[자산운용] 랩어카운트의 종류  (0) 2019.10.27
[자산운용] 랩어카운트란?  (0) 2019.10.16
[자산운용] 랩어카운트의 유래  (0) 2019.10.16

 

 

스마트 베타는 사람마다 바라보거나 받아들이는 관점이 다릅니다. 그러므로 정의하는데 있어서 차이점들이 존재할 수 있습니다. 가장 일반적으로 받아들여지는 정의는 '장기적으로 주가지수 이상의 성과를 낼 수 있는 체계적이고 투명한 운용방식'입니다.  예를 들면 규칙 기반의 과학적인 운용 프로세스와 투명성이 뛰어난 합리적인 운용 방식이라고도 표현합니다.

 


 

 

 

기존의 알파와 베타의 교집합으로 볼 수 있으며,

 

1) 베타는 주가지수 혹은 특정 지수를 추종하는 운용방식

2) 알파는 벤치마크인 지수 대비 초과 수익 또는 초과 수익을 얻기 위한 운용방식

 

등을 의미합니다.

 

운용이란 꾸준하게 양의 알파를 창출하는 것이 목적이지만, 지속적으로 시장을 이기는 것은 매우 어려운 일입니다. 과거에는 시장을 꾸준히 이겨왔던 초과수익이 매니저의 능력이나 전략에 의해 평가되었습니다. 그러나 금융의 발전과 여러 연구를 통하여, 이러한 초과 수익이 배당, 소형주, 가치, 성장 등 특정한 팩터에 의해 발생하며, 사전에 정해진 규칙을 통해 이러한 요인에 팩터에 대한 노출이 투명하게 운용될 수 있다는 사실이 밝혀졌습니다. 과거에는 알파로 여겨졌던 것들이 최근에는 베타화되며, 스마트 베타라고 불립니다. 

 

스마트 베타는 시장 베타(Market Beta)에 대비되는 의미로 사용되며, 대안적 베타(Alternative Beta), 어드밴스드 베타(Advanced Beta), 전략적 베타(Strategic Beta)로도 불리기도 합니다. 스마트 베타는 규칙에 기반한 운용 방식이므로 주가지수를 만드는 것처럼 지수화할 수 있으며, 시가총액 방식의 주가지수와 대비하여 강화된 지수화(Enhanced Indexation)이라고도 불립니다. 

 

 

 

 

 

원가란 제품을 생산 및 판매하고 서비스를 제공하기 위해 소비한 모든 비용을 말합니다. 반면에 이익은 일정 기간 매출에서 소요된 원가를 뺀 것입니다. 식으로 표현하면 '이익 = 매출 - 원가'가 됩니다.

 

따라서 이익을 얻기 위한 방법은 매출의 양을 늘리거나 제품의 가격을 높여 매출을 높이는 것, 혹은 원가를 낮추는 것 두 가지등이 있습니다. 그러나 매출을 늘리는 것은 간단한 문제가 아니며, 시장 경쟁 원리로 정해지는 가격은 임의로 결정할 수 없습니다.

 

그래서 기업들은 내부 노력만으로 가능한 원가 절감 조치를 강구해 매출이 줄더라도 이익을 확보할 수 있도록 회사 차원에서 노력합니다.

 

 

 

회사 전체의 이익에 관해 설명할 때 회사가 보유한 자산 대비 이익률을 나타내는 '총자산 이익률(ROA: Return On Asset)'이 자주 사용됩니다. 이는 수익을 내기 위해 회사의 자산을 얼마나 효율적으로 운영하는지 표현하는 방법입니다.

 

ROA는 매출 이익률과 자산 회전율 곱셈으로 나타냅니다. 달리기에 비교한다면 매출 이익률은 보폭, 자산 회전율은 발의 회전으로, 그 둘을 곱한 값이 달리는 속도라고 생각하면 알기 쉬울 것입니다.

 

대표적인 판매 수익 관리 방법은 매출액에 연동되는 구매 원가와 같은 변동 비용과 토지, 건물과 같은 고정 비용 구분해 원가를 관리하는 방법입니다. 그림에서 보듯이 공장에서의 판매 수익을 높이는 방법은 변동 비용의 단가를 낮추는 방법과 고정 비용을 낮추는 방법이 있습니다.

 

한편, 자산 회전율 향상이라고 하는 관점에서 제조의 역할은 재고 삭감입니다. 재료, 중간품, 완성품 뿐만 아니라 공정 내의 제작품을 포함한 모든 재고를 관리 대상으로 하고, 적절한 개선책을 강구함으로써 생산 리드 타임을 단축하는 것이 중요합니다.

 

공장에서 관리하는 비용은 크게 '재료비', '노무비', '경비' 로 나눕니다. 이것들을 관리하기 위해 1) 매년 예산 관리와 연동된 부서별 원가 목표 수립과 제품 개발 원가 기획, 2) 원가 개선 활동 실적 수집과 보고를 실행합니다.

 

 

파이썬에서 부동소수점은 float로 나타내며 int와 같이 불변형입니다. 단정도(single precision) 방식에서 32비트 부동소수점을 나타낼 때 1비트는 부호 sign (1:양수, 0:음수), 23비트는 유효 숫자 자릿수 (significant digits), 8비트는 지수(exponent)입니다.

 

 

 

 

예를 들어 십진수 -118.625(10) 를 32비트 단정도로 표현해 보았을때, 먼저 숫자의 절댓값을 이진수로 변환합니다. 부호는 음수이므로 1입니다.

 

118 / 2 = 59 ... 0

59 / 2 = 29 ... 1

29 / 2 = 14 ... 1

14 / 2 = 7 ... 0

7 / 2 = 14 ... 1

3 / 2 = 1 ... 1

0.625 * 2 = 1.250

0.250 * 2 = 0.500

0.500 * 2 = 1.000

 

즉, 1110110.101(2) = 1.110110101(2) * 2^6 입니다.

 

그 다음 변환된 이진수를 다음과 같이 정규화합니다.

 

위의 숫자를 가수부(23비트)에 넣습니다. 부족한 자릿수는 0으로 채웁니다.

 

지수는 6이므로 바이어스(bias)를 더합니다. 즉, 지수 6에 127(0111 1111(2)) 더합니다.

 

6(10) + 127(10) = 133(10) = 10000101(2)

 

이상의 결과를 종합하여 -118.625(10)를 32비트 단정도로 표현한 결과는 다음과 같습니다.

 

 

 

 

배정도(double precision) 방식에서는 64비트 부동소수점을 나타낼 때 1비트는 부호, 52비트는 가수, 11비트는 지수로 나타냅니다. (단정도 방식이때 127(2^7-1)을 더하고, 배정도 방식일 때 1023(2^10 - 1) 을 더합니다.)

 

'프로그래밍 > 자료구조' 카테고리의 다른 글

[자료구조 / 파이썬] 정수, int  (0) 2019.11.14

 

 

파이썬에서 정수는 int로 나타내며 불변(immutable)형입니다. 불변형 객체는 변수와 객체 참조 간에 차이가 없습니다. 파이썬 정수 크기는 컴퓨터 메모리에 의해 제한됩니다.

 

파이썬 정수 크기는 적어도 32비트 (4바이트) 입니다. 정수를 나타내는 데 필요한 수를 확인하려면 파이썬 3.1 이상에서 int.bit_length() 메서드를 사용할 수 있습니다.

 

 

 

어떤 문자열을 정수로 변환하거나, 다른 진법의 문자열을 정수(10진법)으로 변환하려면 int(string, base) 메서드를 이용하면 됩니다.

 

 

 

int 메서드의 밑은 2에서 36사이의 선택적 인수(optional argument)입니다. 문자열 s에서 base 범위의 숫자를 벗어나는 값을 입력하면, int 메서드에서 ValueError 예외가 발생하게 됩니다. 

 

+ Recent posts