2010년 5월 26일 수요일

Delphi/C++Builder 2010 설치시 '' is not a valid integer value 에러

 

Delphi/C++Builder 2010 혹은 2009의 루트 폴더 설치 프로그램을 실행하면, 설치 프로그램의 초기 화면도 뜨기 전에 위의 첫번째 이미지와 같이 "'' is not a valid integer value"" 라는 에러가 나는 경우가 간혹 있습니다. 그런 후 '확인'을 누르면 위의 두번째 이미지처럼 Access Violation 에러가 다시 발생합니다.

이런 경우가 자주 발생하는 것도 아니고, 아주아주 드물게 한건씩 발생하는데요. 최근에 다시 이런 경우가 있어서 추적하다가 원인과 해결책을 알아냈습니다.

이것은, 설치하려는 PC에 이전에 설치했던 프로그램들 중 하나에서, CD의 AutoRun 기능을 동작하지 않도록 하기 위해 해당 프로그램의 개발자가 레지스트리의 AutoRun 항목을 아예 막아버리는 편법을 사용했기 때문입니다. (이런 어이없는 편법을 사용하는 개발자들이 꽤 되는 모양이더군요) 따라서 이런 문제가 발생할 때는, 레지스트리에서 해당 AutoRun을 막은 곳을 찾아 지워버리면 됩니다.

먼저, 레지스트리 에디터(regedit.exe)를 실행시키고, 아래의 키를 찾아갑니다.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion \IniFileMapping\Autorun.inf
위의 키가 존재하고, 그리고 그 (기본값)이 @SYS:DoesNotExist 이런 식으로 지정되어 있다면 이 케이스에 해당합니다.
 
Autorun.inf 키 자체를 삭제해버리시고, 윈도우를 재부팅하신 후, 다시 설치를 시도해보시면 잘 되실 겁니다. (원래 이 Autorun.inf 키가 존재하지 않는 것이 디폴트입니다)

2010. 4. 30 추가 -----------------------------------------------

간혹 이 레지스트리 키를 지웠는데도 계속 다시 이 키가 생기는 분이 있을 수 있습니다. 어떤 프로그램이 CD 자동실행 방지를 막기 위해 계속 이 레지스트리 키를 감시하다가 써넣고 있는 것으로 보이는데요. 아마도 그 범인은 안티바이러스 등의 보안 프로그램일 가능성이 높습니다. 이 레지스트리를 이용하는 방법을 공개한 사람의 목적이, USB 메모리를 감염시키는 바이러스를 막기 위한 간단한 방법으로서 소개했었기 때문입니다. 하지만 자동실행을 막는 표준적인 방법이 따로 있으며, 이 레지스트리 방법은 편법입니다.

이 레지스트리 키는 원래 없는 것이 디폴트인데도 다른 프로그램의 오동작까지 불러일으키면서도 계속 레지스트리 키를 만드는 것이므로 그 프로그램의 문제에 해당합니다. 게다가 이 레지스트리 키 방법이 자동실행을 막는 원칙적인 방법이 아닌 꽁수이기 때문에, 이 문제는 다른 CD/DVD 미디어의 루트 런처 프로그램들에서도 동일하게 발생할 수 있습니다.

하지만 어쨌든 결과적으로 Delphi나 C++Builder를 설치하려는 분에게는 문제가 되므로, 다른 해결책도 알려드리겠습니다.

위의 '' is not a valid integer value 에러 메시지는, 오직 DVD 미디어의 루트에 있는 설치 프로그램에서만 발생합니다. (2010 버전의 경우 install_RADStudio.exe, 2009 버전의 경우 install.exe) 이 설치 프로그램은 실제 Delphi/C++Builder를 설치하는 프로그램이 아니라 실제 설치 프로그램들을 실행해주는 런처 프로그램이구요.

하지만, 루트 폴더의 런처 프로그램이 아닌, 실제 설치 프로그램을 실행하시면 당연히 이런 문제가 발생하지 않습니다. Delphi/C++Builder 2010 및 2009 버전의 DVD 미디어에서 실제 설치 프로그램은 (드라이브):\Install\Setup.exe 입니다. 이것을 직접 실행시키면 위와 같은 에러 메시지가 발생하지 않고 정상적으로 설치가 됩니다.

2010년 5월 14일 금요일

코스피 200 <> 선물

1.  Backwardation (백워데이션)

역조시장(Inverted or Abnormal Market)에서 형성된 현물가격과 선물가격과의 차이를 말한다. 그러나,현물가격이 선물 가격보다 높은 이러한 백워데이션현장은 공급물량의 부족사태가 해 결되면 수요와 공급이 다시 균형상태를 찾게 되어 곧 베이시스 (basis)상태로 복귀하게 된다.

 

2. contango(컨탠고) & backwardation(백워데이션)


 
오늘은 "contango"와 "backwardation"에 대해 얘기해볼까 합니다.
프로그램매매를 이해하기 위해서는 contango, backwardation을 이해하셔야 합니다.

contango, backwardation 얘기를 하기 전에 우선 "basis"얘기 먼저 해야겠군요.

 

basis란 간단히 말하면 현물, 선물간의 가격차이를 말합니다.
주식시장에서 예를 찾자면, Kospi200현물가격과 Kospi200선물가격간의 차이를 바로 basis라고 할 수 있습니다.

즉,
현물가격 - 선물가격 = 보유비용 (현물보유수입 - 자금조달비용) = "basis"

 

상식적으로 생각할 때, 현물가격보다 선물가격이 더 비싼 것이 당연하지만, 현물의 매수가 폭발적으로 증가하거나 혹은 선물의 매도가 과도할 때 현물가격이 선물가격보다 비싼 가격역전이 발생할 수 있습니다.

여기서 선물가격이 현물가격보다 비쌀 때를 contango상태라고 하고, 현물가격이 선물가격보다 비쌀 때를 backwardation상태라고 합니다.


보통의 시장에서는 contango가 일반적이지만, 장중 일시적으로 현물가격이 선물가격을 역전하는 backwardation상태로 변하기도 합니다. 혹은 하루이상 backwardation상태가 이어지기도 하지요.

 

일반적인 상품선물시장에서는 현물의 물량부족 및 장래 수급상황의 전망 등에 따라 backwardation시장도 쉽게 볼 수 있지만, 금융선물시장에서는 contango 시장이 일반적이고 backwardation시장은 어디까지나 비정상시장(역조시장 : Inverted Market)이라고 하겠습니다.

 

basis는 현,선물 가격차이이므로 시간이 흐름에 따라 basis폭이 줄면서 결국 현물과 선물의 가격차이는 '0'에 가까와집니다. 즉, 현재의 선물가격이 만기일에 가서는 현물가격과 거의 일치하게 된다는 것입니다. 이를 basis convergence(수렴)이라고 합니다.

 

주가지수선물 9월물은 9일 만기를 맞아 basis가 수렴하여 선물의 생을 마감하고 더이상 선물이 아닌 현물로 남고 10일부터는 12월물이 최근월물이 되는 것이지요.

 

기관의 프로그램 매매가 basis수렴을 전제로 하여 이루어지고 또 이 프로그램 매매가 주가에 상당한 영향력을 행사하고 있기 때문에 basis수렴을 이해하는 것이 그만큼 중요하다 하겠습니다.