머신러닝(Machine Learning)은 우리의 통념보다 오래된 기술이고, 이미 우리가 사용하는 많은 서비스와 상품에 직,간접적으로 활용되고 있습니다. 매일 쏟아지는 스팸메일로부터 우리를 보호하는 스팸메일 필터링 기술, 전자상거래 사이트에서 적합한 물건을 추천해주는 서비스, 애플의 시리와 같이 사람의 음성을 듣고 이를 인식하는 서비스 등 우리 곁에는 많은 서비스가 자리를 잡고 있습니다.

 

 


 

 

 

"머신러닝은 인공지능의 패턴인식과 계산학습 이론에서 발전한 컴퓨터과학의 한 분야다. 머신러닝은 데이터로부터 학습하고, 예측할 수 있는 알고리즘을 연구한다. 이러한 알고리즘은 정적으로 주어진 프로그램이 아닌 입력된 데이터로부터 모델을 만들어 예측이나 결정을 내린다" (wiki)

 

 

여기서 알 수 있듯이 머신러닝의 정의에서 제일 중요한 부분은 주어진 데이터를 이용해 스스로 학습하고 적합한 모델을 만든다는 점입니다. 일반적으로 컴퓨터로 어떤 일을 하게 하려면 사람이 컴퓨터에 소상히 Input(데이터는 무엇인지), Program(이런 데이터가 들어오면 어떻게 처리해야 하는지), Output(결과를 어떻게 표현해야 하는지) 등을 모두 정의해야 합니다.

컴퓨터가 이해할 수 있도록 정의하는 것이 프로그래머가 프로그램을 개발하는 과정이며 Input(입력), Program(프로그램), Output(출력)을 어떻게 처리해야 하는지 명령어를 이용해 코딩을 합니다. 컴퓨터는 지능이 없으므로 입력, 프로그램, 출력에 대한 상세한 내용을 논리적 모순 없이 프로그램으로 작성해야만 원하는 결과를 얻을 수 있습니다.

하지만 머신러닝에서는 전혀 다른 방법을 적용하고 있습니다. 사람은 입력과 출력만 제공하고, 프로그램은 머신러닝 스스로 만들게 하는 것입니다. 적절한 데이터가 준비되어 있다면 기존의 접근방법에서는 프로그램을 작성하는 데 상당한 노력과 시간을 보내야 하지만, 머신러닝 접근방법에서는 이러한 수고가 필요가 없습니다. 원하는 결과를 머신러닝에 출력으로 지정하면 나머지 작업은 머신러닝에 의해 스스로 프로그램을 작성하기 때문에 사람은 충분한 양의 잘 정돈된 데이터와 머신러닝을 적용하는 데 필요한 컴퓨팅 파워만 제공해주면 됩니다.

 


 

 

기존 접근방법과 머신러닝 접근방법의 비교

 

다음은 머신러닝의 접근방법과 기존 접근방법을 보여주는 그림으로, 각 접근방법이 어떻게 다른지를 확실히 보여주고 있습니다.


 

머신러닝은 데이터에 기반을 두기 때문에 계산 통계(Computational Statistics)와 많은 연관성이 있습니다. 데이터로부터 학습한다는 것은 머신러닝의 관점에서 보면, 주어진 데이터를 이용해 확률을 계산하고 특정 데이터를 줬을 때 이미 과거의 데이터를 이용해 계산된 확률로 결과치를 만들기 때문입니다.

이러한 특성은 머신러닝에서 데이터가 얼마나 중요한지 강력하게 알수 있습니다. 아무리 좋은 머신러닝 알고리즘이라 하더라도 제공되는 데이터의 양이 적절하지 않거나 품질이 떨어진다면 결코 좋은 결과를 기대할 수 없습니다. 그 유명한 'Garbage in, Garbage Out' 원칙은 머신러닝에서도 당연히 적용됩니다.

 

데이터가 머신러닝 결과물에 막대한 영향을 미치기 때문에 머신러닝에서는 데이터를 탐색하고 정리하는 데이터 마이닝(Data Mining)이 아주 중요합니다. 데이터 마이닝을 통해 입력 데이터로 사용할 적합한 입력변수를 선택하고, 이 입력변수에 빠진 데이터를 보충하거나 이상치(Outlier)를 제거하고, 적절한 양의 데이터를 선택하는 과정이 사실상 머신러닝에서 제일 중요한 과정이어서 그 중요성은 아무리 강조해도 지나치지 않습니다.

 

 

 

 


 

※ 오늘은 '머신러닝이란 무엇인가?'에 대하여 알아보았습니다. 다음 번 포스트에는 머신러닝의 장단점 에 대하여 다루어 보겠습니다.

이 포스트는 학부에서 제공하는 기본적인 강의와 책들을 토대로 알기 쉽게 내용을 작성하였습니다. 하지만 계속 더 유익하고 논문 및 전문 서적을 읽어가며 더 추가돼야 할 내용이 있으면 인공지능, 머신러닝 포스트와 콘텐츠들을 계속 고도화하는 방식으로 진행하려고 합니다.

인공지능 #컴퓨터공학 #AI #머신러닝 #데이터사이언스 #데이터마이닝 #Machinelearning #Datamining #Datascience

 

*옵션을 사는 것은 옵션을 매수하는 것이고, 옵션을 파는 것은 옵션을 매도하는 것입니다. 옵션 매수자는 옵션가격을 지불하고, 옵션 매도자는 옵션 매수자가 지불한 옵션가격을 수령합니다. *

 

옵션에는 콜 옵션 (Call Option)과 풋 옵션 (Put Option)이 있습니다. 콜 옵션과 풋 옵션은 다음과 같이 직관적으로 이해할 수 있습니다. 친구들과의 포커게임에서 일명 '레이싱'이라는 것을 할 때, "콜(Call)" 이라고 말하면, 상대방의 베팅을 받겠다는 것을 의미합니다. '받겠다'는 것은 받아들이겠다는 것으로 '사겠다'는 뜻과 비슷합니다. 따라서 콜옵션은 '살 수 있는 권리'를 의미합니다. 반면에 풋옵션에서 'put'은 '두다', '내려놓다' 의 의미를 가지고 있습니다. '내려놓다'는 것은 '가져가게 둔다' 는 것으로 '팔겠다'는 뜻과 유사합니다. 따라서 풋옵션은 '팔 수 있는 권리'를 의미합니다.

 


 

콜옵션을 매수한 사람은 만기에 기초자산의 가격이 비쌀수록 좋습니다. 만약 기초자산의 가격이 크게 올랐다면, 옵션계약에 따라 싼 행사가격(Striking price)에 기초자산을 저렴하게 매입한 후 바로 매도해 큰 수익을 실현할 수 있기 때문입니다.

 

예를 들자면, 만약 현재 1주당 10만원 짜리 주식을 1년 후에 1주당 11만원에 살 수 있는 콜옵션을 매수했다고 가정을 해봅시다. 1년 후에 주가가 12만원이 되면, 콜옵션 매도자로부터 11만원에 100주를 산 후 (콜옵션 행사), 바로 시장에 12만원에 매각해 100만원 ((12만원 - 11만원) * 100주)의 수익을 올릴 수 있습니다.

 

반면에 주가가 하락해 9만원이 될 경우 콜옵션을 행사하지 않으면 됩니다. 콜옵션을 행사하지 않을 경우, 콜옵션 매수자는 이미 지불한 옵션 가격만큼 손실만 부담하면 됩니다.

 


 

반면 풋옵션을 매수한 사람은 만기에 기초자산의 가격이 쌀수록 좋습니다. 만약 기초자산의 가격이 크게 떨어졌다면, 시장에서 크게 떨어진 가격으로 기초자산을 저렴하게 매입한 후 옵션계약에 따라 만기 때의 시장가격보다 비싼 행사가격에 풋옵션 매도자에게 기초자산을 매도해 큰 수익을 실현할 수 있기 때문입니다.

 

예를 들자면, 만약 현재 1주당 10만원짜리 주식을 1년 후에 1주당 11만원에 100주 팔 수 있는 풋옵션을 매수했다고 가정을 해봅시다. 1년 후에 주가가 하락해 1주당 9만원이 되면, 풋옵션 매수자는 시장에서 9만원에 100주를 구입한 후, 풋옵션 매도자에게 11만원에 매각해 (풋옵션 행사) 200만원 ((11만원 - 9만원) * 100주)의 수익을 올릴 수도 있습니다.(엄밀하게 말하자면, 200만원에서 옵션가격을 뺀 금액입니다).

 


 

반면에 주가가 상승하여 12만원이 되면 풋옵션을 행사하지 않으면 됩니다. 풋옵션을 행사하지 않을 경우, 풋옵션 매수자는 이미 지불한 옵션가격만큼의 손실만 부담하면 됩니다.

 

그럼 옵션가격은 어떻게 계산되고 결정되는 걸까요? 이러한 문제를 해결하기 위해 등장한 것이 바로 그 유명한 블랙숄즈모델입니다. 금융공학에서는 블랙숄즈 방정식이라고도 하고, 블랙숄즈 이론이라고 불리기도 합니다. 블랙숄즈 모델은 콜옵션, 풋옵션등의 옵션가격을 계산하기 위해 만들어진 모델입니다. 블랙숄즈 모델로 계산된 옵션의 가격을 공정가격(fair price) 또는 이론가격이라고 부릅니다.

 

(참고로 옵션의 이론가격과 실제 시장가격 간의 차이를 이용해 차익을 실현하는 거래는 아비트라지(Arbitrage) 재정거래 또는 무위험 차익거래라고 불립니다.)


 

블랙숄즈 모델의 핵심 내용은 크게 2가지로 요약할 수 있습니다.

 

1. 옵션계약의 만기일이 가까워질수록 시장의 불확실성이 줄어들기 때문에, 시간의 흐름에 따라 옵션가격은 낮아진다.

2. 기초자산의 가격의 변화에 따라 옵션가격도 변한다.

 

옵션에 대한 이야기를 마치기에 앞서 등가격, 내가격, 외가격 등에 대하여 설명하겠습니다. 등가격 (at the money)이란

옵션의 행사가격이 기초자산의 가격과 같을 때 쓰는 용어입니다. 그리고 콜옵션의 경우, 기초자산의 가격이 옵션의 행사가격보다 높으면 내가격 (in the money), 기초자산의 가격이 옵션의 행사가격보다 낮으면 외가격 (out of the money) 이라고 합니다.

 

반면 풋옵션에서의 내가격과 외가격은 콜옵션과 반대로 생각하면 됩니다. 기초자산의 가격이 옵션의 행사가격보다 낮으면 내가격, 기초자산의 가격이 옵션의 행사가격보다 높으면 외가격이라고 합니다.

 


 

#컴퓨터공학 #금융공학 #데이터사이언스 #금융공부 #금융수학 #옵션거래 #블랙숄즈모델

 

'컴퓨터공학 #금융공학 #데이터사이언스 #금융공학이란무엇인가? #금융공부 #파생상품' 태그의 글 목록

 

studyenthusiast-26.tistory.com

 

 

 

 

 

 

 

 

일찍이 기원전 300년경에 그리스 수학자 유클리드(Euclid)가 제시한 이 알고리즘은 두 개의 수의 최대 공약수를 구하는 절차입니다. 조금 더 구체적으로 표현하자면 유클리드 알고리즘은 반복 절차입니다. 이 말은 즉, 결과에 도달할 때까지 동일한 수학적 연산이 계속 반복되는 것입니다.

 


 

예제로 a=1513과 b=357의 최대공약수를 구해보겠습니다. 먼저, 큰 수를 작은 수로 나눌 때 나오는 나머지 r을 알아내야 합니다. 이 예제에서는 r은 85입니다.

 

 

 

1513= 4 * 357 + 85

이번에는 작은 수 b를 r₁으로 나눌 때 나오는 r₂를 구합니다.

357 = 4 * 85 + 17

이러한 작업을 계속 반복하게 됩니다. 항상 작은 수(이 단계에서는 r₁)를 나머지 (r₂)로 나누는데, 나눗셈의 나머지가 0이 될 때까지 이 작업을 반복하게 됩니다. 이 예에서는 벌써 다음 단계에서 나머지가 0을 가지게 됩니다.

85 = 5 * 17 + 0

17은 앞서 등장한 모든 나머지들의 약수이며 a와 b의 약수이기도 합니다. 정확히 말하자면 17은 a와 b의 최대공약수입니다.

유클리드 알고리즘은 두 수를 우선 소인수분해한 다음에 그 소인수들을 비교하는 방법보다 더 신속하고 깔끔하게 최대 공약수 구하기 문제를 해결할 수 있습니다. 게다가 유클리드 알고리즘은 정수가 아닌 수에도 적용할 수 있습니다. 임의의 수들의 "공통 단위"를 유클리드 알고리즘으로 구할 수 있습니다. 하지만 이 알고리즘이 항상 유한한 개수의 단계를 거쳐 최종 결과에 도달하는 것은 아닙니다. 1과 √2에 유클리드 알고리즘을 적용하면, 나머지들이 점점 더 작아지기는 하지만

나눗셈의 나머지가 0으로 되는 일은 끝내 일어나지 않을 것입니다. √2처럼 통약불가능한 수들이 존재한다는 깨달음은 온 세계를 자연수들의 비율로 기술할 수 있다는 피타고라스 추종자들의 세계관을 무너뜨렸습니다.

 


 

 

※ 오늘은 '유클리드 알고리즘'에 대하여 알아보았습니다.

이 포스트는 학부에서 제공하는 기본적인 강의와 컴퓨터 공학 책들을 토대로 알기 쉽게 내용을 작성하였습니다. 하지만 계속 더 유익하고 논문 및 전문 서적을 읽어가며 더 추가돼야 할 내용이 있으면 알고리즘 포스트와 콘텐츠들을 계속 고도화하는 방식으로 진행하려고 합니다.

 

 

 

4차 산업혁명 시대를 맞아 우리는 컴퓨터를 통해 활발하게 일상의 불편함을 해결하고 있습니다. 우리가 컴퓨터를 통해 문제를 해결한다는 것은 인간과 컴퓨터가 의사소통을 한다는 것을 의미합니다. 의사가 소통을 하는 데는 언어가 필요한데 컴퓨터와 인간이 사용하는 언어는 다르기 때문에 이를 번역해주는 컴파일러가 필요합니다. 이번 포스트에서는 컴파일러의 필요성에서 대해서 간략히 설명할 것입니다.

 

 

 

 

 

많은 사람들은 왜 컴파일러를 사용해야 하는지, 컴파일러가 무슨 일을 하는지 잘 모른 채 컴파일러를 사용해 개발을 하고 있습니다.

인간이 컴퓨터에게 일을 시키려면 컴퓨터와 인간이 서로 이해할 수 있는 공통적인 대화 수단이 필요합니다. 이러한 대화 수단을 언어(language)라고 하는데, 언어는 의사소통을 하는 대상이 누구냐에 따라 자연 언어(natural language)와 형식 언어(formal language)로 나뉘게 됩니다. 자연 언어는 한국어, 영어, 중국, 프랑스어, 일본어 등 인간과 인간이 의사소통을 하는 언어로서 지역이나 민족에 따라 자연 발생적으로 생성된 언어입니다.

반면에 형식 언어는 인간과 기계 사이에 의사소통을 하는 언어로서 인위적으로 만들어진 언어입니다. 이 포스트에서는 컴퓨터와 의사소통과 관련된 내용을 설명할 계획이므로 자연 언어보다는 형식언어에 관심을 중점을 둘 것입니다.

 

MIT교수이자 언어학자인 노암 촘스키

 

미국 언어학자이자 MIT 공대 교수인 노암 촘스키(Noam Chomsky)는 형식 언어를 4 가지로 분류했는데 그 종류와 관계는 아래의 그림과 같습니다.

 

형식 언어 중에서 컴퓨터와의 의사소통에 사용되는 언어를 '컴퓨터 언어' 혹은 '프로그래밍 언어(Programming language)'라고 합니다. 프로그래밍 언어는 현실 세계에 존재하는 어떤 문제를 풀기 위한 일련의 과정을 기술하는데 사용하는 것으로 사용 목적, 형태와 기능, 세대 등에 따라 여러 가지로 분류할 수 있습니다. 먼저 형태와 기능에 따라 저급 언어(Low-level langauge)와 고급 언어(High-level language)로 나뉩니다.

 

 

기계어 번역

 

 

저급언어에는 기계어(Machine language)와 어셈블리어(Assembly language) 등이 있습니다. 프로그래밍 언어 중에서 초기에 사용된 언어는 0과 1로 구성된 기계어였습니다. 초기에 기계어를 주로 사용한 이유는 컴퓨터가 0과 1로 만들어진 추상 기계(Abstract machine)이기 때문이었습니다. 그러나 기계어로 프로그래밍을 하는 것은 상당히 어렵고 매우 복잡하다는 단점이 있어 이를 보완하기 위해 나온 언어가 어셈블리어입니다.

어셈블리어는 0과 1로 구성된 기계어 대신 더하기에 ADD, 빼기에는 SUBT 등 대응하는 명령 기호를 사용함으로써 프로그래밍 작업에서 기계어의 단점을 조금 보완했습니다. 하지만 여기서 문제가 발생하게 됩니다. 인간이 어셈블리어를 사용하여 문제를 서술하고 나니 컴퓨터가 이것을 이해하지 못하였습니다. 이해할 수 있는 언어가 달랐기 때문입니다.

이를 쉽게 이해하기 위해 자연 언어를 빗대어 살펴보겠습니다. 예를 들어 프랑스어를 모르는 한국인과, 한국어를 모르는 프랑스인이 서로 만나 인사를 한다고 가정을 해보겠습니다. 서로 말을 알아듣지 못하니 통역사가 필요한데, 이러한 통역사는 아래의 그림과 같이 번역기(Translator)의 역할을 수행하게 됩니다. 앞서 언급한 어셈블리어를 기계어로 번역해주는 번역기는 어셈블러(Assembler)라고 합니다.

 

 

 

 

 

그러나 어셈블리어도 저급 언어의 수준을 벗어나지는 못했으며, 그 후 저급 언어의 단점을 보완하기 위해 C,파스칼,알골,포트란,코볼 등 사람 중심의 고급 언어가 나오게 되었습니다. 한편 고급 언어도 저급 언어와 마찬가지로 기계어를 변환해주는 번역기가 필요한데 이를 '컴파일러'라고 합니다.

컴파일러가 필요한 이유는 다음과 같이 정리할 수 있습니다.

인간은 문제를 해결하기 위해 컴퓨터를 사용하며 컴퓨터와 의사소통을 하는데 '언어'가 필요합니다. 컴퓨터는 기계어를 사용하지만 인간이 기계어를 사용하여 문제를 표현하기란 무척 어렵기 때문에 인간은 사람 중심 언어인 고급 언어를 사용합니다. 그런데 인간이 사용하는 고급 언어는 컴퓨터가 이해하지 못합니다. 따라서 인간이 사용하는 고급언어를 기계어로 변환해주는 컴파일러가 필요한 것입니다.

 


 

※ 오늘은 '컴파일러는 왜 필요할까?'에 대하여 알아보았습니다.

이 포스트는 학부에서 제공하는 기본적인 강의와 책들을 토대로 알기 쉽게 내용을 작성하였습니다. 하지만 계속 더 유익하고 논문 및 전문 서적을 읽어가며 더 추가돼야 할 내용이 있으면 컴파일러 포스트와 콘텐츠들을 계속 고도화하는 방식으로 진행하려고 합니다.

'컴퓨터공학 > 컴파일러' 카테고리의 다른 글

[컴파일러] 프리 프로세서  (0) 2019.09.29
[컴파일러] 어셈블러  (0) 2019.09.29
[컴파일러] 번역기의 종류  (0) 2019.09.29

다양한 프로그래밍 언어

 

 

사람이 가장 잘 이해할 수 있는 프로그래밍 언어(Python, Java, C++, C#, C, Ruby, Go)언어로 작성한 프로그램이라도 컴파일러가 이해할 수 있는 컴퓨터를 위한 기계어로 번역할 수 있습니다. 따라서 사용자는 번역기가 제공하는 프로그래밍 언어의 문법에 맞게 프로그램을 작성해야 합니다.

프로그래밍 언어가 요구하는 문법을 나열하는 것을 서술(Statement)형식이라고 합니다. C 언어도 몇 가지 서술 형식을 가지고 있습니다.

 


 

◎ C 언어의 기본 서술 형식

 

1) 단일 서술문

 

단일 서술문(Single Statement)은 논리적인 최소 명령 실행 단위입니다. 즉 한 개의 서술문 단위로 작업이 진행됩니다. C 언어는 ; (세미콜론)으로 문장을 구분하며 Java, Python등의 프로그래밍 언어또한 논리는 똑같습니다. ; (세미콜론)으로 문장을 구분하기 때문에 한 줄에 여러 개의 서술문은 쓸수도 있습니다.

ex)

a = a + 30; /* 한 줄로 이루어진 단일 서술문 */ 

a = a + 30; /* 두 줄로 이루어진 단일 서술문 */

a = a + 30; b = b + 50; /* 한 줄에 두 개의 단일 서술문을 사용합니다. */

 

 

위의 예와 같은 표현법은 모두 가능하며 총 4가지의 서술문을 사용한 것입니다.

※ 주의: C 언어 및 다른 프로그래밍 언어에서 코드를 작성할시에 문장을 마무리 할 때 반드시 ; (세미콜론)을 사용해야 합니다. ; 을 사용하지 않으면 프로그램이 제대로 실행되지 않고 오류가 발생하게 됩니다

 

2) 복합 서술문

 

복합 서술문(Compound Statement)은 여러 단일 서술문을 { } 중괄호를 사용해 하나로 묶은 형태입니다. 중괄호의 안의 단일 서술문이 모두 수행되면 이 복합 서술문이 수행된 것으로 처리가 됩니다. 예를 들어 아래의 사진과 같이 적으면 단일 서술문 2개를 사용한 것이 아니라 복합 서술문 1개를 사용한 것입니다.

 

{ a = a + 30; /* 주의 단일 서술문 뒤에는 항상 ;(세미콜론)을 찍어주어야 함 */ 

b = b + 50; } /* bracket { }뒤에는 찍어줄 필요가 없음 */ 

 

 

복합 서술문은 { } 중괄호를 사용하기 때문에 자신의 영역이 구분이 됩니다. 따라서 ; (세미콜론)을 사용할 필요가 없습니다. 하지만 다음과 같이 } (닫는 중괄호) 뒤에는 ; (세미콜론)을 사용해도 오류가 나지 않는데, 이것은 복합 서술문을 사용한 후 의미 없이 단일 서술문 1개를 적은 것으로 간주되기 때문에 정상적인 사용방식은 아닙니다.

{ a = a + 30; }; /* 의미 없는 단일 서술문

 

 


 

 

◎ 역할에 따른 서술 형식

 

1) 수식 서술문

 

수식 서술문(Expression Statement)은 계산 수식을 표현한 단일 서술문입니다. 앞에서 단일 서술문 설명을 위해 예로 든 내용도 수식 서술문에 해당합니다. 두 값을 평균을 내는 수식을 구성해 보면 아래의 예제와 같습니다.

 

average = (a + b) / 2;   /* 프로그래밍에서는 나눗셈 기호를 계산기와 같이 / 로 사용합니다.

 

 

2) 조건 서술문

 

조건 서술문(Selection Statement)은 조건을 만족하면 지정한 서술문을 수행하도록 작성한 서술문입니다. 어떤 값이 5보다 크면 해당 값을 0으로 변경하는 조건문을 구성해 보면 아래의 예제와 같습니다.

 

if(a > 5) a = 0;

 

 

3) 반복 서술문

 

반복 서술문(Iteration Statement)은 단일 서술문 또는 복합 서술문을 반복해서 수행하도록 작성한 서술문입니다. 이 소스 코드는 0에서 4까지 더하는 기능을 반복문을 사용해 구성한 것입니다.

 

int sum = 0, i; for(i = 0; i < 5; i++) sum = sum + i;

 

4) 라벨 서술문

 

라벨 서술문(Labeled Statement)은 소스 파일의 특정 위치에 라벨을 지정하고 goto문을 사용해 그 위치로 이동할 수 있도록 작성한 서술문입니다. C 언어가 만들어진 초창기에 기존 프로그래밍 언어를 사용하던 프로그래머들이 쉽게 C 언어로 유입될 수 있도록 제공한 서술문입니다. 그러나 원칙 없이 프로그래머가 원하는 위치로 실행 지점을 이동하는 것은 구조화된 언어인 C 언어의 소스 코드 구성을 파괴할 수 있는 문법이기 때문에 되도록 사용하지 않는 것이 좋습니다.

if(a > 0) goto EXIT; /* 이동(라벨이 표기된 곳으로) */ a = a - 1; EXIT; /* 라벨 */

 

 

5) 분기 서술문

 

분기 서술문(Jump Statement)은 자신이 소속된 서술문을 벗어나거나 흐름을 바꾸어 놓을 때 사용합니다.

break, continue와 같은 문법들이 분기 서술문에 해당하는데 return문, goto문처럼 실행 흐름을 마음대로

조정(서술문의 범위를 마음대로 벗어날 수 있음) 하는 것이 아니라 특정 조건 서술문이나 반복 서술문 안

에서만 적용되기 때문에 잘 활용하는 것이 좋습니다.

while(1) { if(i > 5) break;  /* if문의 로직에 의해 i가 5보다 크면 반복문을 빠져나갑니다. */ i++ }

 

 

6) 주석문

 

프로그래밍을 하다 보면 상황을 설명하거나 작업 내용을 기억하기 위해 소스 파일에 메모를 남겨야 하는 경우가 있습니다. 이럴 때 주석문(Comment)를 사용하면 됩니다.

주석문은 /* 기호로 시작해서 */ 기호로 끝나고, 여러 줄에 걸쳐서 사용할 수 있습니다. 또 이 기호가 표시된 부분은 컴파일러가 번역을 하지 않으므로 어떤 내용을 적어도 상관없습니다. 다음과 같이 소스코드에 주석문을 적절히 사용하면 코드의 가독성이 좋아집니다.

average = (a + b) / 2;

/* a , b의 평균값을 계산하여 average에 저장합니다 */ 

 


 

 

※ 오늘은 C언어 프로그래밍에서 'C언어의 서술형식'에 대하여 알아보았습니다.

 

이 포스트는 학부에서 제공하는 기본적인 컴퓨터 공학 강의와 책들을 토대로 알기 쉽게 내용을 작성하였습니다. 하지만 계속 더 유익하고 논문 및 전문 서적을 읽어가며 더 추가돼야 할 내용이 있으면 C 언어 프로그래밍 포스트와 콘텐츠들을 계속 고도화하는 방식으로 진행하려고 합니다.

옵션(Option)의 사전적 의미는 '선택할 수 있는 것' 또는 '선택할 수 있는 권리' 입니다. 금융공학에서의 옵션은 후자인 '선택할 수 있는 권리'에 가깝습니다. 권리이기 때문에 어떤 옵션거래 계약을 하고 만기가 되었을 때, 계약대로 해도 되고 안 해도 되는 것을 의미합니다. 옵션을 구매한 사람의 자유입니다.

 

 

즉 선택할 수 있는 권리가 있는 것입니다. 권리를 행사해도 되고, 행사하지 않아도 되는 것입니다. 따라서 선택을 하지 않아도 ( 권리를 행사하지 않아도) 아무런 불이익이 주어지지 않는 것입니다. 선물(Futures)과 비교하면 이해가 더 쉽습니다. 선물은 만기가 되면 계약 당사자들이 반드시 그 선물계약을 이행해야 합니다. 반면에 옵션은 이행을 하든 안하든 상관이 없습니다. 옵션을 구매한 당사자에게 이행여부에 대한 선택권이 있는 것입니다.

 

 

예를 들어 어떤 여자가 고시생 남자와 연애를 할 것인가 말 것인가를 결정하는 것도 옵션과 비슷한 맥락입니다. 여자는 3년 후에 고시생 남자와 (합격여부와 관계없이) 결혼을 할 수 있는 권리를 가지고 있다고 가정을 합니다. 여자가 이 옵션을 얻기 위해 지불한 비용(옵션가격)은 3년 동안 연애하며 뒷바라지에 쓴 돈과 시간이 있을 것입니다. 옵션가격은 권리에 대한 대가를 뜻합니다.

 

 

조금 냉혹하게 드릴수도 있는 비유지만, 이 사례에서 고시생 남자는 기초자산에 해당됩니다. 남자가 고시에 합격하더라도 여자를 찰 수 없으며, 여자의 선택에 따라야 합니다. 이것이 연애(옵션거래)의 조건입니다. 이러한 조건 하에서 여자는남자가 고시에 불합격할 경우, 그 동안의 정을 생각해 결혼을 할 수도 있고, 아니면 고시에 불합격했으므로 바로 차버릴 수도 있습니다. 또한 만약 남자가 합격할 경우, 여자는 예상대로 남자와의 결혼을 선택할 수도 있고, 아니면 남자의 사랑이 변했다고 생각해 결혼을 하지 않을 수도 있습니다.

 

 

이러한 경우뿐만 아니라, 일정 기간 연애를 한 후 결혼할 것인지 말 것인지를 선택하는 것은 모두 다 옵션의 거래구조와 비슷하다고 생각하면 됩니다. 연애 기간 동안 들인 공 (시간과 돈)은 옵션가격(Option Price)에 해당되며, 연애 당사자들 본인은 기초자산이 되는 것입니다. 진짜 옵션거래와의 차이가 잇다면, 연애 당사자 모두 결혼여부를 선택할 수 있는 권리를 가진다는 것입니다. 즉 2명의 연애 당사자 모두 옵션가격을 지불하고 옵션을 구매한 사람이 되기 때문에, 결혼 여부 선택시점에서 상대방(기초자산)의 가치를 보고 결혼여부를 결정하게 됩니다.

 

 

일상생활에서의 대표적인 옵션거래는 TV 홈쇼핑이나 인터넷 쇼핑몰에서 물건을 구매하는 행위가 있습니다. 왜냐하면 물건을 직접 받아본 후 구매여부를 결정할 수 있는 선택권이 소비자에게 있기 때문입니다. 소비자는 TV 홈쇼핑이나 인터넷 쇼핑몰에서 즉시 물건을 주문한 후 물건을 받고 나서 살지 말지 구매결정을 내립니다. 여기서 기초자산은 주문한 물건이며, 옵션가격은 쇼핑하는 데 쓴 시간과 반품 시 택배 비용입니다. 물건은 받아본 후 구매하기로 선택했다면 (옵션 행사), 최종적으로 지불한 옵션가격은 쇼핑하는데 있어 들인 시간이 됩니다. 반면 구매하지 않기로 선택했다면 (옵션 미행사), 최종적으로 지불한 옵션가격은 쇼핑에 들인 시간과 반품 시 택배비용이 됩니다.

 


 

 

 

#컴퓨터공학 #금융공학 #데이터사이언스 #금융공부 #금융수학 #옵션거래 #옵션의의미

 

'컴퓨터공학 #금융공학 #데이터사이언스 #금융공학이란무엇인가? #금융공부 #파생상품' 태그의 글 목록

 

studyenthusiast-26.tistory.com

 

공간적으로뿐만 아니라 시간적으로도 앞서서 무언가를 진행한다는 것입니다. 미래에 할 것을 지금 먼저 하는 것이 바로 선도입니다. 조금 더 전문적으로 표현하자면, 선도란 미래의 특정 시점에 특정 가격으로 특정 상품을 서로 매매하기로 현재 시점에 약속을 하는 계약입니다.

 

대표적인 선도거래는 일명 '밭떼기'의 예를 들 수 있습니다. 밭떼기는 조금 도시에 사시는 분들에게는 생소한 개념일수도 있습니다. 밭떼기란 김장철 배추 수요에 대비해 배추 도매상이 배추 재배농가로부터 미리 배추밭의 모든 배추를 사들이기로 약속하는 계약입니다. 배추 도매상이 배추 수확 3개원 전에 농부가 재배하고 있는 배추밭의 모든 배추를 포기당 약 5,000원에 사기로 미리 사기로 계약을 한다고 하면, 이는 바로 '선도거래'입니다.

 

이때 3개월 후의 배추가격은 현재 배추 가격, 예년의 배추 가격 변동폭, 3개월이라는 시간변수 등을 감안하여 결정됩니다. 이러한 선도거래는 후진 농업국가에서 대지주와 소작농 간에 주로 이루어져 사회적인 문제로도 논란이 되기도 합니다. 일반적으로 소작농들은 농작물을 추수하기 전에 현금이 바닥나는 상황을 맞이합니다. 그래서 소작농들은 생계를 위하여 추수 전에 현금을 융통하고자 합니다. 이러한 소작농들의 니즈를 정확하게 꽤뚫고 있는 대지주들은 소작농들에게 귀에 솔깃한 제안을 던집니다. 밭에서 자라는 농작물을 미리 사주겠으니, 대신 싼 값에 넘기라는 제안을 합니다. 당장 소작농들은 울며 겨자 먹기식으로 밭에서 자라는 농작물을 대지주에게 미리 헐값에 팔고 현금을 받아 생계를 이어가게 됩니다.

 

(당장에 소작농들은 수중에 현금이 필요하니 이러한 불합리한 조건에 응하여 농작물을 헐값에 넘기는 것입니다.)

 

추수철이 되면 대지주는 헐값에 구입한 농작물을 소작농에게 오히려 더 비싸게 되팝니다.

 

이러한 상황이 계속 몇년이상 반복되면, 소작농들은 결국 작은 농지마저 대지주에게 팔 수밖에 없게 되고, 돈과 농지는 일부 대지주에게만 집중되며 빈부격차가 심해지는 사회적 현상이 나타나게 됩니다. 본래 선도거래를 포함한 파생상품 거래의 가장 중용한 목적은 리스크 헤지(위험 회피)인데, 선도거래의 목적이 '돈 벌기'가 되면서 엄청나게 사회적 부작용을 초래하게 된 것입니다. 돈을 버는 사람이 있다면, 반대편에는 항상 누군가 돈을 잃고 있는 상황이 벌어집니다.

 


 

 

그러면 '선물(future)'란 무엇을 의미하는 것일지 생각해보셨나요? 보통 재미는 없겠지만 우리가 일상생활에서 흔히 받는 생일 선물, 크리스마스 선물 등등을 의미하는 선물로 생각하시는 분들도 있으실거란 생각도 듭니다. 선물 또한 선도와 마찬가지로 미리 거래를 하는 것을 뜻합니다. 따라서 약속한 조건 (품목, 가격, 수량)에 따라 미래에 줄 선물(Present)을 지금 미리 결정했다면, 선물(futures)이 될 수도 있을 것입니다. 선물거래는 선도거래와 똑같은 구조를 가지고 있습니다. 차이가 있다면, 선물거래가 선도거래보다 '표준화'되어 있다는 것입니다.

 


 

 

그러면 선물과 선도의 차이는 다음 4가지로 요약할 수 있겠습니다.

 

1) 선물은 거래되는 시장이 정해져 있습니다. 즉 거래소 시장에서 거래가 되는 것입니다.

선도거래는 장외시장 (OTC, Over the Counter Market)에서 양 당사자 간에 이루어집니다.

선물거래는 거래소 시장에서 다자 간에 거래가 됩니다. 선도시장은 생소하겠지만, 선물시장은 어디서 한 번쯤은 들어본 개념이기도 할 것입니다.

 

2) 선물은 계약단위와 계약만기가 정해져 있습니다. 즉 표준화가 되어있다는 얘기입니다. 우리나라 주식 선물시장의

경우, 계약단위는 50만 원, 계약만기는 매 분기말(3,6,9,12월)의 2 번째 목요일입니다. 하지만 선도는 계약단위와 계약

만기를 당사자 간에 자유롭게 정할 수 있는 이점을 가지고 있습니다.

 

3) 선물은 매일 매일 정산해야 합니다. 따라서 선물거래는 계약 불이행 위험이 없으나, 만기에 한 번 정산하는 선도거래는 계약 불이행이라는 불확실성과 위험이 존재합니다. 선도거래는 만기에 '배째라, 안 사겠다(or 혹은 안팔겠다!). '라고

하면 답도 없고 방법도 없습니다.

 

4) 선물거래는 표준화되어 있어, 당사자들의 모든 니즈에 부합되는 거래를 제공할 수 없습니다. 반면에 선도거래는 어떠한 기초자산에 대해서도 당사자들이 원하는 맞춤형 거래가 가능합니다.

 

(즉 쉽게 말해서 Customized, 즉 개인이 원하는 거래를 입 맛대로 맞추어서 진행할 수 있다는 것입니다.)

 

 


 

 

#컴퓨터공학 #금융공학 #데이터사이언스 #금융공부 #금융수학 #선물거래 #선도거래

 

'컴퓨터공학 #금융공학 #데이터사이언스 #금융공학이란무엇인가? #금융공부 #파생상품' 태그의 글 목록

 

studyenthusiast-26.tistory.com

 

 


 

그림 1

 

1) 비행기

 

- 위의 그림은 고익(high wing) 비행기의 주요 구성품을 보여주고 있습니다. 기체(airframe)는 동체(fuselage), 날개(wing), 꼬리날개(Empennage)로 구성되어 있습니다.

 

 

승강타는 비행기의 피치를 조정 혹은 통제하는데 사용되며, 비행기의 조종간 (휠 혹은 스틱)에 연결되어 전. 후 조종 운동으로 움직입니다. 일부 비행기에서 전체 수평 안정판이 그림 2에서 보는 것과 같은 승강 타이며, 이를 스테빌레이터(stabilator)라고 불립니다.

방향타는 작은 방향 변화와 선회를 하는데 사용됩니다. 바닥에 있는 두 페달로 방향타를 작동하며 방향 조종을 제공하는데 사용됩니다.

 

그림 2

 

 

대부분의 비행기는 승강타의 뒷전에 작은 경첩부가 있으며, 종종 방향타에 있는 경첨부를 트림탭(Trim Tab)이라고 부릅니다. (그림 2 참조)

이러한 탭들은 조종면을 조종하기 위해 반대 방향으로 움직이며, 트림탭의 목적은 조종사가 원하는 비행고도를 유지하기 위해 요크(yoke)라고 부르는 조종간에 필요한 힘을 줄이는 것입니다.

대부분 최신 비행기는 동체 위 혹은 아래에 날개를 장착합니다. 그러나 대부분의 모든 고익 비행기는 스트러트(지주: Strut)에 의해 지지되는 날개를 가지고 있습니다. 스트러트(지주)는 더 많은 항력이라는 대가를 지불하지만 날개를 가볍게 해줍니다. 날개의 바깥쪽 뒷전에 있는 가동면을 보조익(aileron)이라고하며 옆놀이(놀) 제어에 사용됩니다. 이들은 조종간을 회전시켜 작동하거나 조종간(스틱)의 좌우 운동으로 작동됩니다. 보조익은 하나가 위로 진동할 때 다른 하나가 아래로 진동할 수 있도록 결합되어 있습니다.

날개 뒷전의 선외부에 있는 경첩부를 플랩(flaps)이라고 합니다. 플랩은 저속으로 더 많은 양력을 발생시키는데 사용되고 착륙하는데 증가된 항력을 제공하는데 사용됩니다. 이렇게 증가된 항력이 비행기의속도를 감소시키는 데 도움을 주며 착륙 진입각을 더 가파르게 만드는 데 도움을 줍니다.

소형 비행기는 2 가지의 형상의 착륙 장치(랜딩기어)를 가지고 있습니다. 트라이 사이클 착륙 장치(tricycle landing gear)는 주 착륙 장치(main landing gear)가 비행기 평형 중심 바로 아래에 있으며 조종 가능한 앞바퀴(nose gear)가 위 전방에 있습니다. 테일 드래거(tail dragger)는 평형 중심의 전방에 주 착륙 장치를 가지고 있으며 작은 조종 가능한 바퀴(Wheel)가 꼬리날개에 있습니다. 앞바퀴와 뒷바퀴(Tail gear)는 방향타 페달로 조종할 수 있습니다.

 

 


 

항공기의 구성 요소

※ 항공기의 주요 구성요소

1) 동체(주 몸체)

2) 날개(양력 제공)

3) 미익부(꼬리날개 어셈블리)

※ 보조익

1) 날개의 선외 뒷전에 위치한 가동 조종면

2) 서로 다른 방향으로 움직인다.

3) 세로축에 대한 롤(옆놀이) 제어장치

※ 수직 및 수평 안정판

- 꼬리 날개의 주요 부분을 구성하는 고정면

※ 방향타(Rudder)

1) 수직 안정판의 뒷전에 있는 가동 조종면

2) 수직축에 대한 요(빗놀이) 제어장치

※ 승강타(Elevator)

1) 수평 안정판의 뒷전에 위치한 가동 조종면

2) 가로축에 대한 피치(키놀이) 제어장치

※ 트림탭(Trim Tabs)

1) 조종면의 뒷전에 부착

2) 조종사가 필요한 조종력을 감소시켜 항공기의 조종을 돕는다.

 

 

 

#항공산업 #항공우주공학 #기계공학 #항공기용어 #비행기 #항공기구성요소 #어렵다 #공학도의길 #공대감성

 

금융공학 공부를 이제 막 시작하는 분들은 기초통계학에 대한 개념만 이해하면 공부를 하는데 있어서 수월합니다.

금융공학 공부를 하기 위해서 알아두어야 할 기초통계학 개념은 평균, 분산, 표준편차, 베르누이 시행, 이항분포,정규분포, 브라운 운동 등이 있습니다.

 

그럼 통계학의 기초 중에 기초라고 할 수 있는 평균, 분산, 표준편차에 대하여 알아 보겠습니다.

 

서울대학교 금융공학개론 수강생들 중 1학년 학생들 (5명)의 중간고사 성적은 다음과 같다고 가정을 하겠습니다.

 

성적 평균

★ 점수 80, 84, 82, 86, 88 (이 학생들의 평균은 얼마일까요?)

 

(80 + 84 + 82 + 86 + 88) / 5 = 84점입니다. 여기까지 해결하는 과정과 해결방법은 쉽습니다.

 

그렇다면 분산은 얼마일까요? 분산의 개념에 대하여 헷갈리는 사람들이 어느 정도 있을 것입니다.

 

사례에서의 분산은 학생들의 점수가 평균점수로부터 어느 정도 흩어져 있는가를 나타내주는 지표입니다. 각 학생들의 점수와 평균점수의 차를 제곱해 다 더한 값을 평균한 값이 바로 분산입니다.

 

{ (84-80)^2 + (84-84)^2 + (84-82)^2 + (84-86)^2 + (84-88)^2 } / 5 = 8

 

즉 분산은 약 8가 됩니다. 분산을 구했다면 표준편차를 구하는 방법도 어렵지 않습니다. 표준편차는 분산의 제곱근이기 때문입니다. 8의 제곱근은 √8이며, √8 (혹은 2√2)이 바로 학생들 성적 표준편차가 되는 것입니다.

 

표준편차는 금융공학에서 굉장히 중요한 개념입니다. 왜냐하면 표준편차는 바로 기초자산 가격의 변동성(Volatility)을 의미하기 때문입니다. 뒤에서 자세히 설명을 하겠지만, 변동성은 파생상품 중에서 특히 옵션의 가격을 결정짓는 가장 중요한 변수이기 때문입니다. (콜옵션이든 풋옵션이든 변동성이 커질수록 옵션가격은 상승하게 됩니다.) 여기까지 설명을 이해하는데 큰 어려움이 없었다면 기본적인 통계학 지식은 갖추었다고 할 수 있습니다.

 

위에서 다루었던 평균, 분산, 표준편차와 다르게 베르누이 시행, 이항분표, 정규분포, 브라운 운동 등은 이름만 들어도 흰 머리가 저절로 나는 개념들 일 것입니다. 하지만 핵심만 이해하여 어떻게 응용되는지 안다면, 금융공학을 공부하는 데 있어서 어려울 것도 없습니다.

 


 

 

※ 베르누이 시행

 

예를 들면 베르누이 시행은 일명 '모 아니면 도'와 같은 것입니다. 즉 결과값이 딱 두 가지밖에 없으므로, 각 결과값이 나올 확률은 1/2(50%)가 되는 것입니다. 마치 동전을 던졌을 때, 앞면이 나올 확률과 뒷면이 나올 확률이 똑같이 1/2(50%) 인 것이랑 똑같은 개념입니다.

 


 

 

Binomial Distribution

※ 이항분포

 

그러면 이항분포는 또 어떤 개념을 가지고 있을까요?

이항은 말 그대로 두 개의 항을 의미합니다. '이것 아니면 저것인 분포'라는 말입니다. '이것 아니면 저것' (앞면 아니면 뒷면)은 베르누이 시행과 같습니다. 즉 베르누이 시행을 여러 번 반복 시행해서 나타난 분포가 바로 '이항분포'입니다.

 

 


 

Normal Distribution

※ 정규분포

 

정규분포는 이항분포랑 비슷해 보이기도 합니다. 왜냐하면 같은 분포의 범주에 들어가기 때문입니다. 이항분포를 따르는 확률변수의 시행 횟수를 무한정 반복하면 (즉 베르누이 시행을 무한정 반복하면) 바로 정규분포가 됩니다. 정규분포는 우리가 일반적으로 알고 있는 분포입니다. 가운데가 볼록하고 좌우가 대칭인 반듯한 산 모양의 분포가 바로 정규분포입니다.

 


 

 

 

브라운 운동 (주식시장 적용 예)

※ 브라운 운동

 

정규분포에서 한 걸음 더 나아간 것이 바로 브라운 운동(Brownian Motion)입니다. 브라운 운동은 원래 물리학에서 나온 개념입니다. 물리학에서는 작은 입자의 불규칙한 운동을 브라운 운동이라고 부릅니다. 금융공학에서의 브라운 운동은 정규분포하고도 밀접한 관련이 있습니다. 시간의 개념이 포함된 정규분포를 브라운 운동이라고 합니다. 주식가격을 예로 들자면, 주식가격은 시간의 흐름에 따라 변하는데 특정한 두 시점 간의 주식가격 차이는 정규분포를 따른다는 것입니다. 이럴 경우, 시간 간격이 짧을수록 주식가격의 변화도 커진다는 것이 브라운 운동의 핵심입니다.

 

상식적으로 이해해도 시간의 간격이 길어진다 가정하였을때 주식가격의 변화 가능성은 커집니다. 왜냐하면 주가지수는 경제를 기반으로 계속 변하기 때문입니다. 또한 시간이 길어지면 불확실성과 변동성은 커지기 마련입니다. 결국 아주 간단한 얘기를 복잡하게 표현한 것이 바로 브라운 운동이라고 할 수 있습니다. 이러한 복잡하게 보이는 브라운 운동을 이해한다면, 나중에 설명하게 될 옵션가격 결정 이론인 블랙숄즈 모형을 쉽게 이해하는데 있어 도움이 될것입니다. 평균, 분산, 표준편차의 개념과 공식을 완전히 숙지했고, 베르누이 시행, 이항분포,정규분포, 브라운 운동 등의 기본적인 개념을 이해했다면, 본격적인 금융공학 공부에 필요한 통계학적 기초를 충분히 갖추었다고 볼 수 있습니다.

 

#컴퓨터공학 #금융공학 #데이터사이언스 #금융공부 #금융수학 #기초통계학 #평균 #분산 #표준편차 #베르누이시행 #이항분포 #정규분포 #브라운운동

 

'컴퓨터공학 #금융공학 #데이터사이언스 #금융공학이란무엇인가? #금융공부 #파생상품' 태그의 글 목록

 

studyenthusiast-26.tistory.com

[

'컴퓨터공학 #금융공학 #데이터사이언스 #금융공학이란무엇인가? #금융공부 #파생상품' 태그의 글 목록

 

배당 Dividend

2) 배당금 정보 용어

* Dividend History: 배당 히스토리

* Declare Date: 배당 발표일(이사회에서 배당금을 지급하기로 결정한 날)

* Ex-Div Date: 배당락 기준일

* Record Date: 주주명부 확정일

* Pay Date: 배당급 지급일

* Frequency: 배당주기

* Amount: 배당금

* Adj. Amount: 주식분할 조정 배당금. 주식분할까지 반영된 정확한 배당금을 말합니다.최근에 주식분할이 없었다면 배당금(Amount)과 주식분할 조정 배당금(Adj.Amount)는 동일합니다.

* Dividend Summary: 배당 요약

* Last Announced Dividend: 최근 배당금 공시 내역

* Dividend Yield(FWD) : 연간 예상 배당률

* Annual Payout (FWD) : 연간 예상 배당금

* Payout Ratio: 배당성향

* 5 Year Growth Rate: 최근 5년 연평균 배당금 인상률

* Dividend Growth : 배당금 연속 인상 연수​

 


※ 오늘도 쉽고 재밌게 미국 배당주 투자 용어 정리 공부를 통해 '미국 배당금 정보 용어'에 대해서 설명하였습니다.

Nasdaq 미국 장외주식 시장

 


1) 우선주 용어

* Preferred Stock: 우선주

* Series: 우선주 시리즈명

* Alternative symbology: 다른 형식의 종목코드로 'ticker'라고도 합니다.

(우선주는 조회 사이트별로 종목코드가 다릅니다.)

* Redeemable: 매입권리가 있는 우선주(Callable이라고도 합니다.)

*Call Date: 매입권리 발생 기준일

*Perpetual: 만기가 없는 우선주들을 'Perpetual Preferred stock"이라고 합니다.

*Cumulative: 누적적 우선주

* Non-Cumulative: 비누적적 우선주

* Shares Offered: 발생한 우선주 주식수

* Liquidation Preference: 매입 가격(매입권리가 행사될 경우 주주들에게 지불하는 가격. Call Price라고 합니다.)

*Premium to Liquidation Preference: 매입 가격(매입권리가 행사될 경우 주주들에게 지불하는 가격. Call Price라고도 합니다.)

* Premium to Liquidation Preference: 매입 가격(액면가) 대비 프리미엄

* Annualized Dividend: 연간 배당금

* Recent Ex-Date: 배당락 기준일

* Current Yield: 현재 배당률

* Original Coupon: 고정배당률

* Pay Period: 배당 주기

* Pay Dates: 배당 지급일

 


※ 오늘도 쉽고 재밌게 미국 배당주 투자 용어 정리 공부를 통해 '미국 우선주 용어'에 대해서 설명하였고, 다음 포스트에서는 "배당금 정보 용어"라는 주제를 더욱 세부적으로 다룰 예정입니다.

C언어는 4가지 특징을 가지고 있습니다. 이 4가지 특징은 구조화된 언어, 이식성, 확장성, 생산성 등이 있습니다.

1) C언어는 구조화된 언어이다

 

C 언어 이전의 프로그래밍 언어들은 작업 단위가 구분되지 않고 단순히 나열된 형식이었습니다. 자신이 이전에 작성한 프로그램과 비슷한 기능의 새로운 프로그램을 만들 때에도 기존에 작업한 내용을 재사용하기 힘들었습니다. 그리하여 프로그램을 유지, 보수를 하는데 많은 어려움이 있었습니다.

하지만 C언어는 일정한 단위로 명령들을 그룹으로 묶는 방법을 제공하며, C 언어로 만든 프로그램은 작업 단위가 명확하게 구분되어 유지 보수가 편리하고, 기존 프로그램에서 자신이 원하는 작업을 분리하기도 쉬워서 새로운 프로그램을 개발할 때 재사용하기에도 좋습니다.

2) C언어는 이식성이 높다

 

C 언어 이식성(Portability)이 높다는 말은 C 언어로 만든 프로그램을 거의 수정하지 않고 다른 하드웨어 또는 운영체제로가져갔을 때도 잘 동작한다는 뜻입니다. 이를 위해 하드웨어에 종속적일 수 있는 부분은 C 언어에서 분리해 런타임 라이브러리(Runtime Library)라는 개념으로 제공하고 있습니다.

그리고 이렇게 외부에서 구현한 것들을 C 언어가 가져다 사용할 수 있게 만들었습니다. 이 런타임 라이브러리는 각 하드웨어 또는 운영체제별로 만들어졌기 때문에 사용자가 작성한 C 언어 프로그램에는 영향을 미치지 않습니다. 즉 하드웨어에 변화가 생기더라도 C 언어 문법이 영향을 받지 않도록 C 언어를 디자인한 것입니다.

4) C언어는 확장성이 좋고, 표현법이 다양해서  자기만의 표현법으로 개발이 가능하다

 

C 언어는 사용할 확률이 높은 문법만 최소한으로 유지하고 사용 빈도가 낮은 문법은 사용자들이 스스로 구현하기 때문에 언어의 기능을 확장할 수 있습니다. 따라서 C언어는 다른 언어에 비해 표현법이 더 많고, 개발자가 개발 상황에 따라 선택할 수 있는 문법구조나 표현법이 다양하여 자율성이 높습니다. 그래서 상대적으로 더 어렵게 느껴질 수도 있습니다. 하지만 반대로 다양한 표현법을 익히고 나면 다른 언어에서 사용할 수 없는 강력한 표현을 사용할 수 있습니다.

4) C언어는 생산성이 높다

 

일부 초보 프로그래머들은 다른 고급 언어에 비해 C 언어의 생산성이 떨어진다고 말합니다. 하지만 초보자 입장에서 봤을 때 제품을 쉽게 개발할 수 있는 언어가 생산성이 높다고 판단할 수 있을 것입니다. 하지만 이는 생산성에 대해 오해하고 있는 것입니다. 생산성의 높고 낮음은 단순히 제품 개발 시간만 계산하여 따질 것이 아니라, 제품을 완성한 후 고객이 만족하고 문제가 없는 상태가 되었을 때까지의 시간도 계산에 넣어야 합니다.

C언어를 사용하는 프로그래머들은 스스로 개발 인프라(명령 그룹, 함수)를 구축하기 때문에 경력이 쌓일수록 인프라가 다양해져서 프로그램 개발 속도가 빨라집니다. 그뿐만이 아니라 사용자의 여러 가지 요구에 대해 스스로 대처할 수 있어서 프로그램의 완성도와 만족도가 더 높을 수밖에 없습니다.

 


※ 오늘은 C언어 프로그래밍에서 'C언어의 특징'에 대하여 알아보았습니다.

 

이 포스트는 학부에서 제공하는 기본적인 컴퓨터 공학 강의와 책들을 토대로 알기 쉽게 내용을 작성하였습니다. 하지만 계속 더 유익하고 논문 및 전문 서적을 읽어가며 더 추가돼야 할 내용이 있으면 C 언어 프로그래밍 포스트와 콘텐츠들을 계속 고도화하는 방식으로 진행하려고 합니다.

 

+ Recent posts