2012-05-20 5 views
5

내가 알아 내지 못했던 알고리즘과 관련되어 있기 때문에 이것이 닫히지 않기를 바란다. 기본적으로 수년 전에 나는 뮤추얼 펀드에서 일 했었습니다. 기존 툴을 헤지 할뿐만 아니라 포트폴리오를 최적화하기 위해 다양한 툴을 사용했습니다. 우리는 이러한 결과를 얻고 자체적으로 수정하여 고객에게 판매 할 것입니다. 내 회사가 축소 된 후에 소프트웨어를 만들고 내 사용자 정의를 포함하려는 시도를하고 싶었지만 소프트웨어에 실제로 조합이 어떻게 생성되는지 전혀 알지 못합니다.가능성이 큰 포트폴리오 소프트웨어가 포트폴리오 제안을 너무 빨리 생성하는 방법은 무엇입니까?

6 개월 간의 시험을 본 후, 나는 나의 접근법이 불가능하다는 것을 인정하고 있습니다. 나는 Knuth의 책과 같은 콤비네이션 알고리즘을 사용하고, bit 조합을 사용하여 뉴욕 증권 거래소 (NYSE (5,000+ 주))의 가능한 모든 포트폴리오 (30 개 주식으로 제한)를 찾으려고 노력했습니다. 그러나 내가 말한 모든 사람들은 하루 일과 결과를 얻기 위해 수십억 억년이 걸릴 것입니다. (GPU에서 저에게 2 일 연속 처리를 중단했습니다).

그래서 나는 무엇을 놓치고 있습니까? 우리는 시장에 대한 위험 관용과 전망 (주식 시장 성장 기대치, 인플레이션 기대치, 사료 자금 기대치 등)을 입력하면 몇 초/분 이내에 이상적인 포트폴리오 (이론상 ..)를 얻을 수 있습니다. 수천 가지 가능성과 수십억 가지 가중치 조합을 통해 결과를 어떻게 빨리 (또는 전혀) 계산할 수 있습니까? 시스템의 관리자로서 매일 100MB 미만의 파일을 다운로드하고 mssql 데이터베이스에로드했을뿐입니다. 시장 데이터가 너무 많아서 모든 가능성이있는 것 같지 않습니다. 위의 방법을 사용하면 5 기가를 얻을 수 있습니다. Knuth의 콤보 알고리즘을 사용하는 분 동안의 파일)과 애플리케이션은 오프라인으로 작업했기 때문에 어딘가에 거대한 수퍼 컴퓨터가 아닌 데스크톱/랩탑 CPU에서 로컬로 실행 중이어야하고 실행하는데 최소 2 분이 걸렸습니다. 분은 세계의 모든 주식을 포함하는 글로벌 펀드에서 가장 길었다). 그들의 작업이 전체 기금의 상관 관계를 요구했기 때문에 매우 혼란 스럽습니다. (나는 그들이 다른 결과를 얻었 기 때문에 그들이 미리 계산 한 최고 주식을 보내고 있다고 생각하지 않습니다.) 따라서 2 %의 수익을 내고 시장과의 상관 관계가 부정적인 30 개의 주식 펀드를 원한다면 60 %의 헤지가 있었고 어떻게 소프트웨어가 수십억 가지의 가능성 중에서 그렇게 빨리 포트폴리오를 생성 할 수 있었 을까요? 메모, 나는 수학이나 금융 부분에 대해 묻지 않습니다. 나는 그것이 전체 시장에서 30 %의 수익을 올릴 수 있었던 방법을 묻는 것입니다. 30 가지 주식 포트폴리오 (혼자만해도 그것이 수십억 년 동안 계속 될 것입니다. 다른 제약으로 인해 더 복잡해집니다).

프로그래밍 방식으로 어떻게 수행됩니까? 나는 그들이 모든 결과를 생성하기 위해 Knuth의 조합 알고리즘을 사용하고 있지 않다고 믿기 시작했는데 결과는 무작위로 선택되지 않았으며 주식을 개별적으로 선택하는 것은 상관 관계 부분을 놓치고있는 것처럼 보입니다. 이렇게 많은 투자 소프트웨어가 어떻게 이런 일을 할 수 있습니까?

+2

"비밀입니다." – bmargulies

답변

3

이러한 알고리즘은 거의 모든 가능성을 생성하지 않습니다.

포트폴리오 선택은 아주 좋은 답변을 줄 다른 기술로는 매우 쉽습니다. 두 사람은 가능성이 가장 높은 :

  • 당신이 위험 주위에 가정을 단순화/당신이 수학적으로 최적의 포트폴리오 해결
  • 돌연변이/크로스 오버 작업을 수행하는 유전자 알고리즘 (수학의 일부 http://en.wikipedia.org/wiki/Capital_asset_pricing_model 참조) 수 반환 한 경우 무작위 샘플 포트홀리로에 아주 좋은 해결책을 찾아 낼 것이다. 가능한 결과의 범위를 이해하기 위해 Monte-Carlo 스타일 모델링 접근법과 이것을 결합 할 수 있습니다.

유전자 알고리즘 접근법을 개인적으로 제안합니다. 수학적으로 순수한 것은 아니지만 좋은 답변을 줄 수 있으며 아주 쉽게 던지려는 제약 조건을 처리 할 수 ​​있어야합니다 (예 : 최대 수 포트폴리오 포트폴리오의 주식)

+0

답변을 주셔서 감사합니다 (조합 알고리즘에 대한 6 개월간의 작업이 실현되지 못했다는 사실을 깨닫고 내 반 폭언이었습니다). 나는 유전 알고리즘에 대한 독서의 밤을 보냈지 만 올바른 포트폴리오를 찾는 문제를 어떻게 극복 할 수 있습니까? 예를 들어 3 %의 수익률을 가진 30 개의 주식 포트폴리오를 원한다고 가정 해보십시오. 먼저 30 개 종목을 찾아야하며, 3 % 수익률을 계산해야합니다 (30 개 콤보 문제보다 최악입니다). 왜냐하면 2 %의 수익률로 5 %의 수익률을 올리는 마이너스 수익률의 종목을 갖기 때문입니다. 너는 돌아온다). –

+0

유전자 알고리즘을 얻지 못해서 미안하지만 유전자 알고리즘이 어떻게 그 문제를 극복해야 할 것인가? 그들은 단지 몇 가지를한다면 최적의 수익률을 얻지 못할 수도 있습니다. 맞습니까? –

+0

유전자 알고리즘을위한 목적 함수를 정의해야합니다. 아마도 3 %의 수익을 원한다면 실제로 "최소 분산으로 가능한 한 3 %에 가까운 수익을내는"것을 의미합니다. 따라서 일부 상수 k에 대해 목적 함수를'- (return - 3 %)^2 - (k * variance)'로 정의하고 그 값을 최대화하기위한 해를 구합니다. – mikera

2

현대 포트폴리오 이론은 "현대 포트폴리오 이론 및 투자 분석"과 같은 서적이 있으며 http://en.wikipedia.org/wiki/Modern_portfolio_theory에 소개되어 있습니다.

실제로 해결할 수있는 한 가지 방법은 문제를 수학적 최적화 문제로 다루는 것입니다. 당신이 구입 한 각 주식의 양을 알려주는 벡터를 가지고 있다면, 다양한 가정 하에서 수익은이 벡터의 선형 함수이고, 위험은이 벡터의 2 차 함수입니다. 주어진 위험에 대한 수익률을 극대화하거나 주어진 수익률에 대한 위험을 최소화하는 것은 아주 많은 주식의 경우에도 잘 이해 된 수학적 문제입니다. http://en.wikipedia.org/wiki/Quadratic_programming.

실용적인 문제는 시장에 나와있는 거의 모든 주식의 일부를 구매한다고 대답하는 것입니다. 제 생각에 실제 프로그램은 당신이 실제로 구입할 준비가되어있는 주식의 수에 대한 제약을 조건으로 완벽한 해답을 보장하지는 않지만 "실제로 사용할 수있는 비밀 소스"휴리스틱을 사용합니다. 완벽한 답을 되 찾는 일은 어려운 문제입니다. http://arxiv.org/ftp/arxiv/papers/1105/1105.3594.pdf