Author: byun1114

  • 투자에 대한 생각, 하워드 막스

    Oaktree Capital Management의 공동 설립자인 Howard Marks의 책이다. 이 사람의 저술한 책이 몇 권이 있는데 서문의 내용으로 보면 아마 The Most Important Thing Illuminated: Uncommon Sense for the Thoughtful Investor를 번역한 것으로 생각된다.

    현재 주식 시장은 꽤 뜨겁다고 보여지는데, 이러한 상황에서 어떻게 투자해야 할 것인지 뜨거움을 식혀주는 내용으로 가득찬 책이다. 좋은 내용이 꽤 많다. 책 전체 내용 중 마지막 문단의 첫 번째 문장이 이 책 전체의 내용을 대표할 수 있을 것이라고 생각된다.

    남다른 통찰력을 가진 투자자들만이 미래의 사건들을 좌우하는 확률분포를 주기적으로 예측할 수 있으며, 잠재 수익이 확률분포도의 좌측 꼬리에 숨어 있는 리스크를 보상하는 때가 언제인지 감지할 수 있다.

    참고로 Oaktree는 부실 채권 투자 전문회사이다. 2019 Q2까지 1달러 언저리 정도의 배당금을 지불했는데 이 회사의 최근 5년의 주식 평균 가격은 25~26달러였으며, 2020년에도 안정적으로 주가를 유지했다.

    여기서 자주 언급되는 그 메모는 홈페이지에 가면 정말로 구독을 할 수 있다. 다른 목적으로 이용될 수는 없다고 명시되어 있다. 과거 평균을 보면 대략 1년에 3번 정도는 작성하는 것 같으며 2020년에는 꽤 작성하였다. Marks 씨는 지금 대략 75세 정도이다.

  • 리눅스 화면 끄기

    보통 리눅스를 CLI 모드로 사용하게 설치하면 부팅 후에 ID를 입력하는 화면에서 멈추게 된다. 그리고 추가 입력이 있을 때까지 계속 그 상태로 있다. 이 상황에서 모니터를 끄게 하는 방법을 찾아보려고 했는데 이상하게 하나도 먹히지 않았다. 하지만 그 중에서 화면을 어둡게 하는 방법은 찾았고 성공했다.

    /etc/default/grub 파일을 수정한다. GRUB_CMDLINE_LINUX_DEFAULT 구절을 찾는다. 어떤 값이 입력되어 있는 경우가 있을 수 있다.

    GRUB_CMDLINE_LINUX_DEFAULT="quite"

    그 뒤에 consoleblank=10을 입력한다. 여기서는 단위가 초(second)이다.

    GRUB_CMDLINE_LINUX_DEFAULT="quite consoleblank=10"

    그 다음에 이를 적용시켜 준다.

    sudo update-grub
  • require()

    R을 사용한지 거의 10년이 되어가는데 이제야 library()와 require()를 구별할 수 있게 되었다. 일단 둘 다 패키지를 불러온다는 점에 있어서는 동일하다.

    패키지가 없을 경우 library()는 오류 메세지를 출력한다.

    require()은 True/False로 결과를 반납한다. 패키지가 있으면 패키지가 로딩이 된다. 이를 이용하면 패키지가 없을 때 패키지를 설치하도록 하는 것을 구현할 수 있다. CDM 연구로 다른 사람들 스크립트를 볼 때 이런것도 좀 챙겼으면 더 빨리 알 수 있었을 텐데.

    if (!require('caret')) {install.packages('caret')}
  • doMC 패키지

    내가 분석하는 경우에 다중코어가 지원되는 경우가 거의 없어서 열심히 알아보지 않은 건데, 이번에 기계학습을 돌려보면서 꽤 빨라지는 것을 확인했다. 설정도 딱히 없다.

    registerDoMC 명령어로 사용할 코어수를 설정하고, getDoParWorkers로 사용중인 코어수를 확인한다.

    library(“doMC”)
    registerDoMC(cores = 4)
    getDoParWorkers()

    그런데 여기서 문제가 생길 수도 있다.

    내가 다중 코어를 이용하고자 하는 이유는 caret패키지를 이용해서 예측 모델 선정을 위한 것이다. caret 패키지와 관련된 자료를 검색해 보면 다음의 내용이 있다.

    https://topepo.github.io/caret/model-training-and-tuning.html#the-traincontrol-function

    trainControl과 관련된 것 중에서 allowParallel이 있는데 이게 기본적으로 True로 보인다.
    trainControl function | R Documentation

    설정 충돌인지 꼬인건지는 모르겠는데 registerDoMC(cores = 4) 이렇게 한참 진행하면 갑자기 느려지는 경우가 있다. 4C8H CPU에서 2500%를 찍는 이런 일이 생긴다. registerDoMC(cores = 1)로 설정을 해두어도 670% 정도로 여러 코어를 사용하는 것을 볼 수 있고, 속도가 제대로 나온다.

    학습 모델에 따라서 코어 설정을 변경해 주는 것이 필요할 것 같다.