문제

많은 Quants / Hedgies와의 인터뷰에서, 나는 그들 중 많은 사람들이 많은 작업에 Homebrew 언어 또는 OCAML을 사용하고 있다는 결론에 도달했습니다. 그들 중 많은 사람들이 대답 할 수 없었던 것은 그 이유였습니다.

왜 그들이 C ++를 대부분 사용하고 싶지 않은지 확실히 이해할 수 있지만, 왜 Python, Ruby 등의 다른 스크립팅 언어와 비교할 때 OCAML이 이러한 용도에 대해 왜 우수합니까?

도움이 되었습니까?

해결책

읽으십시오 CAML Trading- 월스트리트에서 기능 프로그래밍 경험 Yaron Minsky와 Stephen Weeks (사과,이 기사는 Jane Capital에서 무료로 주최했지만 더 이상 존재하지 않으므로 ACM 링크를 참조 할 수 있습니다). 그들은 OCAML의 장점과 단점이라고 생각하는 것에 대해 자세히 설명하지만, 대부분의 경우 대부분의 다른 옵션보다 낫다는 것을 주어진다 (즉, C ++, Python과의 직접적인 비교는 많지 않습니다. , 당신은 무엇입니까).

저자는 Jane Street Capital에서 OCAML 코드에 크게 투자 한 일입니다.

업데이트: 스레드도 참조하십시오 알고리즘 거래 소프트웨어는 어떤 프로그래밍 언어로 작성됩니까?. 중 하나 코멘트 Yaron Minsky가 Jane Street Capital의 CAML 사용에 대한 CMU에서 제공 한 프레젠테이션을 언급했습니다. 약 1 시간 길이, 그리고 매우 흥미로운.

두 개 업데이트: Yaron은 이번에는 ACM 대기열에 대한 또 다른 개요를 작성했습니다. 대중을위한 Ocaml.

다른 팁

예를 들어 참조하십시오 프로그래밍 언어 총격전 속도 비교 :

이제 우리는 모두 거짓말, 저주받은 거짓말 및 벤치 마크에 대한 선을 들었습니다. 그래서 소금 곡물은 추천했습니다. 그러나 이것은 상당히 잘 이루어졌습니다. 하루가 끝나면 자신의 문제와 데이터로 무엇을하는지 중요합니다.

가장 먼저 명심해야 할 것은 OCAML에 대체적이고 명확하고 간결한 구문을 가지고 있지만 Python이나 Ruby와 같은 역동적 인 언어가 아니라는 것입니다. 정적 유형이 있으며 기본 코드로 컴파일됩니다.

정량 분석의 경우 스크립팅 언어가 더 편리합니다. 많은 라이브러리에 액세스 할 수 있으며 정보를 관리하기 위해 빠르고 더러운 스크립트를 쉽게 수행 할 수 있으며, 중소 프로그램을 구축하는 것은 비 프로그래머에게도 쉽습니다.

실제로 거래에 참여하는 알고리즘과 시스템을 만들려면 OCAML과 같은 것을 원합니다. OCAML의 주요 장점은 기능적 특성, 가독성 (파이썬과 같은 역동적 인 언어만큼 잘 읽음), 신뢰성이지만 대부분 속도입니다. OCAML은 대부분의 사람들이 믿는 것보다 훨씬 빠릅니다. C가 빠릅니다 (실제로 C보다 약간 느리지 만 다이나믹 언어보다 많은 경우). OCAML은 HFT 시스템을 만들기에 충분히 빠릅니다.이 시스템은 파이썬이나 루비에 대해 말할 수있는 것이 아닙니다.

또한 Scala와 Clojure가 현장에 오기 전에 Jane Street (가장 성악 한 Ocaml Evangelist)가 Ocaml을 채택했습니다.

기능적 언어이기 때문에 본질적으로 수학적이며, 아마도이 회사들이 해결해야 할 문제의 종류와 잘 어울릴 것입니다. 그리고 다른 사람들이 지적했듯이, 그것은 좋은 성능 프로파일을 가지고 있습니다.

아마도 이것이 Microsoft가 F#을 위해 OCAML을 공동으로 사용하는 이유 일 것입니다.

그것은 매우 빠르기 때문에 (그리고 C ++보다 훨씬 간결합니다).

Don 's Post에서 픽업, Jane Street Captial은 페이지 acaml 전용 페이지, OCAML 참여에 대한 추가 링크가 포함되어 있습니다 ( 블로그). OCAML의 성과는 일반적으로 큰 논쟁이지만, 기능적 패러다임이 그들의 분석 작업에 매우 잘 어울리기 때문에 "quants"도 그것을 좋아한다고 생각합니다. 그래서 나는 그들이 얼리 어답터라고 생각합니다. 그리고 회사는 시스템 프로그래밍에 똑같이 적합하다는 것을 알게됩니다.

Python/Ruby와 비교하여 사소한 병렬화? 적어도 이것은 F#에게는 사실이지만, 같은 이유로 CAML/OCAML의 경우에 해당해야합니다.

내가 루비를 좋아하는만큼, 그것은 대부분 수학적이거나 집계 인 강력한 과제에 대한 나의 첫 번째 선택이 아니며, 파이썬이나 루비는 아직 멀티 스레딩을 잘 지원하지 않습니다.

패턴 매칭과 불변성에 대한 선호도 덕분에 비교적 복잡한 계산 파이프 라인의 간결함 (루비에서는 시행하기 어렵고 파이썬에서는 약간 쉽지만 ML 기반 언어보다 여전히 어렵음)은 큰 데이터 세트의 계산에 가장 가치가 있습니다.

나는 그런 곳에서 일하지 않기 때문에 이것들은 내가 왜 그들의 위치에서 그것을 할 수 있는지에 대한 추측 일뿐입니다.

일반적으로 Ruby 및 Python과 같은 언어보다 약간 빠르며 정적으로 입력 한 기능 언어로서 일반적으로 코드에 대해 추론하기가 다소 쉽고 미묘한 버그가 포함되지 않는다는 것을 알고 있습니다. (예, 단위 테스트는 그것들을 잡는 데 도움이되지만 재무 수치가 망가지 않는다는 추가 보증은 좋습니다.) 또한 기능적 프로그래밍은 대부분의 고급 언어보다 수학과 매우 밀접한 관련이 있습니다. 패러다임 (수학의 OO 분기는 없음)이므로 실제로하는 일을 모델링하는 데 능숙합니다.

quants에 대한 나의 경험에서 그것은 c# 또는 f#를 가진 VBA (읽기 : Excel)입니다.

편집하다:

나는 그것을 다시 파악할 것이다. 어느 CAML을 사용하는 quants ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top