KR102017877B1 - 사용자―규정 알고리즘 전자 거래 - Google Patents

사용자―규정 알고리즘 전자 거래 Download PDF

Info

Publication number
KR102017877B1
KR102017877B1 KR1020187031495A KR20187031495A KR102017877B1 KR 102017877 B1 KR102017877 B1 KR 102017877B1 KR 1020187031495 A KR1020187031495 A KR 1020187031495A KR 20187031495 A KR20187031495 A KR 20187031495A KR 102017877 B1 KR102017877 B1 KR 102017877B1
Authority
KR
South Korea
Prior art keywords
block
event
algorithm
order
blocks
Prior art date
Application number
KR1020187031495A
Other languages
English (en)
Other versions
KR20180121690A (ko
Inventor
리차드 레인
마이클 유네티치
다니엘 리도르
나탄 에드워즈
Original Assignee
트레이딩 테크놀러지스 인터내셔날, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 트레이딩 테크놀러지스 인터내셔날, 인코포레이티드 filed Critical 트레이딩 테크놀러지스 인터내셔날, 인코포레이티드
Publication of KR20180121690A publication Critical patent/KR20180121690A/ko
Application granted granted Critical
Publication of KR102017877B1 publication Critical patent/KR102017877B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04847Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes

Abstract

특정 실시예들은 사용자에 의한 프로그래밍 코드의 기록을 감소시키거나 제거함으로써 신택스 에러들, 불명확한 로직과 같은 통상적으로 프로그래밍된 알고리즘들의 위험들, 및 거래자에 의해 규정된 알고리즘을 비거래자 프로그래머가 개발할 필요성을 감소시킨다. 특정 실시예들은 알고리즘을 규정하기 위해 구축 블록 버튼들 및 알고리즘 영역을 제공한다. 특정 실시예들은 알고리즘이 규정됨에 따라 표현의 라이브 평가를 제공한다. 특정 실시예들은 알고리즘을 설계하기 위해 설계 캔버스 영역 및 블록들을 제공한다. 특정 실시예들은 알고리즘이 설계됨에 따라 블록들에 대한 라이브 피드백을 제공한다. 특정 실시예들은, 값 축으로부터 선택된 사용자-규정 거래 알고리즘에 의해 관리될 주문의 배치를 개시하는 것 및 값 축 상의 상이한 사용자-규정 거래 알고리즘들에 의해 관리되는 작업중인 주문들을 디스플레이하는 것을 제공한다. 특정 실시예들은 랭킹 툴을 제공한다.

Description

사용자―규정 알고리즘 전자 거래{USER-DEFINED ALGORITHM ELECTRONIC TRADING}
관련 출원들에 대한 교차 참조
본 출원은 2009년 10월 20일자로 출원된 "Trading Application with Futures Ranking and Order Tool, Price Level Indicator Tool, and Market Change Audio Indicator Tool"란 명칭의 미국 가출원 제 61/253,315 호; 2009년 10월 20일자로 출원된 "System and Method for Building User-Defined Algorithms for Electronic Trading Exchange"란 명칭의 미국 가출원 제 61/253,324 호; 2009년 11월 20일자로 출원된 "System and Method for Building User-Defined Algorithms for Electronic Trading Exchange"란 명칭의 미국 가출원 제 61/263,300 호; 2010년 3월 9일자로 출원된 "System and Method for Launching Automated Trading Applications"란 명칭의 미국 가출원 제 61/312,003 호; 2010년 3월 29일자로 출원된 "System and Method for Virtualizing User-Defined Algorithms for Electronic Trading Exchange"란 명칭의 미국 가출원 제 61/318,685 호; 2010년 4월 1일자로 출원된 "System and Method for Automating Feedback-Based User-Defined Algorithms for Electronic Trading Exchange"란 명칭의 미국 가출원 제 61/320,061 호; 2010년 10월 14일자로 출원된 "User-Defined Algorithm Electronic Trading"란 명칭의 미국 가출원 제 61/393,313 호; 2010년 10월 15일자로 출원된 "User-Defined Algorithm Electronic Trading"란 명칭의 미국 가출원 제 12/905,709 호; 및 2010년 10월 15일자로 출원된 "Virtualizing for User-Defined Algorithm Electronic Trading"란 명칭의 미국 가출원 제 12/905,726 호의 우선권을 청구한다. 이들 출원들 각각은 전체로 본원에 참조로서 통합된다.
본원에 기재된 기술은 전자 거래 시스템들에 관한 것이다. 더욱 상세하게, 특정 실시예들은 사용자-규정 알고리즘 전자 거래에 관한 것이다.
전자 거래 시스템은 일반적으로 클라이언트 디바이스에 대한 호스트로서 역할을 할 수 있는 전자 교환기(electronic exchange)와 통신하는 클라이언트 디바이스를 포함한다. 통상적으로, 전자 거래 시스템은 거래될 거래 가능한 물건들을 구매 및 판매하기 위한 전자적으로 매칭하는 오더들을 제공한다. 거래 가능한 물건은 거래될 수 있는 물품이다. 주식들, 옵션들, 선물 계약들, 유가 증권들, 및 원자재들이 거래 가능한 물건들의 몇몇의 예들이다.
전자 교환기는 시장 데이터를 클라이언트 디바이스에 전송한다. 시장 데이터는, 예를 들면, 가격 데이터, 시장 깊이 데이터, 최종 거래된 수량 데이터, 거래 가능한 물건에 대한 시장에 관련된 데이터, 및/또는 이들의 조합들을 포함할 수 있다. 클라이언트 디바이스는 전자 교환기로부터 시장 데이터를 수신한다.
일부 전자 거래 시스템들에서, 클라이언트 디바이스는 디스플레이 디바이스 상에 시장 데이터를 디스플레이하지 않고 시장 데이터를 수신 및 처리한다. 예를 들면, "블랙-박스" 알고리즘 거래 시스템은 자동적으로 및 시장 데이터를 디스플레이하지 않고 실행될 수 있다. 그러나, 다른 전자 거래 시스템들에서, 클라이언트 디바이스는 디스플레이 디바이스 상에 처리된 시장 데이터를 디스플레이한다. 클라이언트 디바이스는 거래 스크린을 생성하는 소프트웨어를 포함할 수 있다. 일반적으로, 거래 스크린은 사용자가 전자 거래 세션에 참여하도록 한다. 예를 들면, 거래 스크린은 사용자가 시장 데이터를 보고, 거래 주문을 전자 교환기에 제출하고, 시장 시세를 획득하고, 위치를 모니터링하고, 그리고 이들의 조합들을 가능하게 할 수 있다.
일부 전자 거래 시스템들에서, 클라이언트 디바이스는 거래 주문들을 전자 교환기에 전송한다. 그러나, 다른 전자 거래 시스템들에서, 서버 측 디바이스들과 같은 다른 디바이스들은 하나 이상의 거래 주문들을 전자 교환기에 전송하는 것을 담당한다. 거래 주문 수신 시에, 전자 교환기는 거래 주문을 교환 주문 북에 입력하고, 거래 주문의 수량과 하나 이상의 반대 측(contra-side) 거래 주문들의 수량과 매칭시키려고 시도한다. 예로서, 판매 주문은 동일한 가격을 갖는 구매 주문에 대해 반대 측이다. 마찬가지로, 구매 주문은 동일한 가격을 갖는 판매 주문에 대해 반대 측이다. 비매칭된 거래 주문의 수량은 거래 주문의 수량이 전자 교환기에 의해 매칭될 때까지 교환 주문 북에 보유된다. 비매칭된 거래 주문의 수량은 또한 거래 주문이 클라이언트 디바이스 또는 전자 교환기 중 어느 하나에 의해 취소될 때 주문 북으로부터 제거될 수 있다. 거래 주문의 수량 매칭 시에, 전자 교환기는 주문 거래의 수량이 매칭된 클라이언트 디바이스에 확인서(confirmation)를 전송할 수 있다.
전자 교환기는 증가하는 수의 참여자들이 임의의 주어진 시간에 시장에서 활성화되는 것을 가능하게 한다. 이롭게도, 잠재적인 시장 참여자들의 수적인 증가는 무엇보다도 더 경쟁력 있는 시장 및 더 큰 유동성을 유도하고 있다. 매 초 또는 1 초의 몇 분의 1인 카운트들이 거래 기회들을 인터셉트하는 전자 거래와 같은 경쟁력 있는 환경에서, 참여자가 시장터들에서 효과적으로 경쟁하는 것을 돕거나 또는 다른 것들에 비해 경쟁력을 갖는 툴들을 제공하는 것이 바람직하다.
몇몇의 현재 시스템들은, 시장 정보에서의 변화들에 대해 더 신속한 평가 및 반응을 허용할 수 있는 알고리즘 거래 시스템들을 포함한다. 그러나, 그러한 시스템들은 통상적으로 숙련된 프로그래머들에게 거래 알고리즘들을 개발할 것을 요구하고, 테스트 및 디버깅하는데 시일(또는 심지어 몇 달)이 걸리고, 거래자가 상이한 접근법으로 결정하거나 알고리즘의 로직에 대해 수정을 원할 때, 개발 및 디버깅 프로세스가 반복되어야 한다.
본원에 기재된 실시예들은 다양한 디바이스들, 시스템들, 방법들, 및 컴퓨터 프로그램 물건들을 포함하지만, 이에 제한되지 않는다.
특정 실시예들은 알고리즘을 규정하기 위해 구축 블록 버튼들 및 알고리즘 영역을 제공한다. 특정 실시예들은 단일 거래 세션 동안에서조차 알고리즘의 파라미터들 및 로직 양자를 신속하게 조절하는 것을 허용한다. 특정 실시예들은 알고리즘이 규정됨에 따라 표현의 라이브 평가를 제공한다. 특정 실시예들은, 사용자에 의한 프로그래밍 코드의 기록을 감소시키거나 제거함으로써 신택스 에러들, 불명확한 로직과 같은 통상적으로 프로그래밍된 알고리즘들의 위험들, 및 거래자에 의해 규정된 알고리즘을 비거래자 프로그래머가 개발할 필요성을 감소시킨다. 특정 실시예들은 알고리즘을 모두 동시에 (실제 시장 데이터를 사용하여) 구축, 디버깅, 및 시뮬레이팅하기 위한 단일의 애플리케이션을 제공한다. 게다가, 단일의 애플리케이션은 또한 상기 알고리즘을 사용하여 주문들의 배치를 개시하는 것을 제공할 수 있다.
특정 실시예들은 알고리즘을 설계하기 위한 설계 캔버스 영역 및 블록들을 제공한다. 특정 실시예들은 알고리즘에서 사용하기 위한 복잡한 기능을 블록들에 제공한다. 특정 실시예들은 설계 캔버스 영역에 배치된 그룹 블록들을 제공한다. 특정 실시예들은 특정 이산 이벤트들을 취급하기 위해 알고리즘의 부분들의 동적인 예시화(instantiation)를 가능하게 하는 가상화된 그룹 블록들을 제공한다. 특정 실시예들은 단일의 거래 세션 동안에조차 알고리즘의 파라미터들 및 로직 양자를 신속하게 조절하는 것을 허용한다. 특정 실시예들은 알고리즘이 설계됨에 따라 블록들에 대한 라이브 피드백을 제공한다. 특정 실시예들은 알고리즘이 설계될 때 잠재적인 에러들을 감소시키기 위한 안전 특징들을 제공한다. 특정 실시예들은 클라이언트 디바이스 및 알고리즘 서버 사이의 접속이 파손될 때 알고리즘의 일부 또는 모든 부분들의 동작을 제공한다. 특정 실시예들은, 사용자에 의한 프로그래밍 코드의 기록을 감소시키거나 제거함으로써 신택스 에러들, 불명확한 로직과 같은 통상적으로 프로그래밍된 알고리즘들의 위험들, 및 거래자에 의해 규정된 알고리즘을 비거래자 프로그래머가 개발할 필요성을 감소시킨다. 특정 실시예들은 알고리즘을 모두 동시에 (실제 시장 데이터를 사용하여) 구축, 디버깅, 및 시뮬레이팅하기 위한 단일의 애플리케이션을 제공한다. 게다가, 단일의 애플리케이션은 또한 상기 알고리즘을 사용하여 주문들의 배치를 개시하는 것을 제공할 수 있다.
특정 실시예들은 주문 형태로서 선택된 알고리즘에 의해 관리될 주문의 배치를 개시하는 것을 제공한다. 특정 실시예들은 값 축으로부터의 선택된 사용자-규정 거래 알고리즘에 의해 관리될 주문의 배치를 개시하는 것을 제공한다. 특정 실시예들은 알고리즘이 주문을 관리하는 동안 알고리즘에 대한 변수를 변경하는 것을 제공한다. 특정 실시예들은 알고리즘에 의해 관리되는 주문을 수동으로 수정하는 것을 제공한다. 특정 실시예들은 주문을 관리하기 위한 알고리즘을 비관리된 주문에 할당하는 것을 제공한다. 특정 실시예들은 값 축 상의 상이한 사용자-규정 거래 알고리즘들에 의해 관리되는 작업중인 주문들을 디스플레이하는 것을 제공한다.
특정 실시예들은 랭킹 툴을 제공한다. 특정 실시예들은 주문 배치에서 사용될 선택된 거래 가능한 물건들의 랭킹의 디스플레이를 제공한다. 특정 실시예들은 랭킹에 기초하여 주문(들)을 개시하기 위한 실행 전략을 선택하는 것을 제공한다.
다른 실시예들이 아래에 설명된다. 또한, 본 발명의 교시 및 범위로부터 벗어나지 않고 설명된 실시예들에 대해 수정들이 이루어질 수 있다.
예시적인 실시예들이 다음의 도면들을 참조하여 본원에 설명된다.
도 1은 특정 실시예들이 사용될 수 있는 전자 거래 시스템의 블록도.
도 2a는 특정 실시예들에 따른 거래 인터페이스를 예시한 도면.
도 2b는 특정 실시예들에 따른 기구 선택 인터페이스를 예시한 도면.
도 2c 내지 도 2i는 특정 실시예들에 따른 거래 인터페이스에서 알고리즘을 위한 규정을 구축하는 것을 예시한 도면.
도 2j는 특정 실시예들에 따른 거래 인터페이스를 예시한 도면.
도 3a는 특정 실시예들이 사용될 수 있는 전자 거래 시스템의 블록도.
도 3b는 특정 실시예들에 따른 거래 인터페이스를 예시한 도면.
도 3c는 특정 실시예들에 따른 거래 인터페이스에서 사용될 수 있는 블록들의 예들을 예시한 도면.
도 3da 내지 도 3dg은 특정 실시예들에 따라 생성된 예시적인 프로그래밍 코드를 예시한 도면.
도 3e 내지 도 3r은 특정 실시예들에 따른 거래 인터페이스들을 예시한 도면.
도 4a 내지 도 4f는 특정 실시예들에 따른 거래 인터페이스들을 예시한 도면.
도 5는 특정 실시예들에 따른 랭킹 툴을 예시한 도면.
도 6은 특정 실시예들에 따른 컴퓨팅 디바이스의 블록도.
앞서 말한 요약 및 다음의 상세한 설명은 특정 실시예들을 도시한 도면들과 관련하여 판독할 때 더 양호하게 이해될 것이다. 도면들은 특정 실시예들을 예시하기 위한 것이지만, 본 발명이 도면들에 도시된 배열들 및 수단으로 제한되지 않는다는 것이 이해되어야 한다.
I. 예시적인 전자 거래 시스템
도 1은 특정 실시예들이 사용될 수 있는 전자 거래 시스템(100)의 블록도를 예시한다. 시스템(100)은 클라이언트 디바이스(110), 게이트웨이(120), 및 전자 교환기(130)를 포함한다. 클라이언트 디바이스(110)는 게이트웨이(120)와 통신한다. 게이트웨이(120)는 전자 교환기(130)와 통신한다.
본원에 사용된 바와 같이, 문구 "~ 와 통신하는"은 직접적인 통신 및 하나 이상의 매개 컴포넌트들을 통한 간접적인 통신을 포함할 수 있다.
동작 시에, 클라이언트 디바이스(110)는 교환기(130)에서 거래 가능한 물건들을 구매 또는 판매하기 위한 주문들을 전송할 수 있다. 예를 들면, 사용자는 주문들을 전송하기 위해 클라이언트 디바이스(110)를 활용할 수 있다. 주문들은 게이트웨이(120)를 통해 교환기(130)로 전송된다. 또한, 시장 데이터는 교환기(130)로부터 게이트웨이(130)를 통해 클라이언트 디바이스(110)로 전송된다. 사용자는 또한 이러한 시장 데이터를 모니터링하기 위해 클라이언트 디바이스(110)를 활용하고, 시장 데이터 상에서 거래 가능한 물건에 대한 주문을 전송하기 위해 베이스 결정을 활용할 수 있다.
거래 가능한 물건은 수량 및/또는 가격을 통해 거래될 수 있는 임의의 것이다. 예를 들면, 주식들, 옵션들, 채권들, 선물들, 통화(currency), 신주인수권들(warrants), 펀드 파생상품들, 증권들, 원자재들(commodities), 거래된 이벤트들, 상품들, 및 콜렉션들 및 이들의 조합들과 같은 금융 제품들이 거리 가능한 물건들일 수 있다. 거래 가능한 물건은 "실제" 또는 "합성(synthetic)"일 수 있다. 실제 거리 가능한 물건은 교환기에 의해 목록화된 제품들을 포함한다. 합성 거래 가능한 물건은 사용자에 의해 규정되고 교환기에 의해 목록화되지 않는 제품들을 포함한다. 예를 들면, 합성 거래 가능한 물건은 클라이언트 디바이스(110)를 활용하는 거래자에 의해 생성된 합성 스프레드와 같은 실제(또는 다른 합성) 제품들의 조합을 포함할 수 있다.
클라이언트 디바이스(110)는, 예를 들면, 핸드-헬드 디바이스, 랩톱, 데스크톱 컴퓨터, 단일 또는 다중-코어 프로세서를 갖는 워크스테이션, 다수의 프로세서들을 갖는 서버, 및/또는 컴퓨터들의 클러스터와 같은 하나 이상의 전자 컴퓨팅 플랫폼들을 포함할 수 있다. 예를 들면, 단일 디바이스로서 논리적으로 표현되지만, 클라이언트 디바이스(110)는 서버와 통신하는 거래 단말을 포함할 수 있고, 여기서 총괄적으로 거래 단말 및 서버는 클라이언트 디바이스(110)이다. 거래 단말은 사용자에게 거래 스크린을 제공할 수 있고, 주문하기와 같이, 거래 스크린을 통한 사용자 입력들의 부가적인 처리를 위한 명령들을 서버로 통신할 수 있다.
클라이언트 디바이스(110)는 일반적으로 사용자에 의해 소유, 동작, 제어, 프로그래밍, 구성, 또는 그렇지 않다면 사용된다. 본원에 사용된 문구 "사용자"는 인간(예를 들면, 거래자) 또는 전자 거래 디바이스(예를 들면, 프로세서 또는 메모리 또는 알고리즘 거래 시스템을 포함함)를 포함할 수 있지만, 이에 제한되지 않는다. 하나 이상의 사용자들은, 예를 들면, 소유, 동작, 제어 프로그래밍, 구성, 또는 다른 사용에 관련될 수 있다.
클라이언트 디바이스(110)는 하나 이상의 거래 애플리케이션들을 포함할 수 있다. 거래 애플리케이션(들)은, 예를 들면, 거래 및 차트 윈도우들에 시장 데이터를 배열 및 디스플레이함으로써 시장 데이터를 처리할 수 있다. 시장 데이터는, 예를 들면, 교환기(130)로부터 수신될 수 있다. 또 다른 예로서, 시장 데이터는, 이력 데이터를 제공하고 그리고/또는 교환을 시뮬레이팅하지만 실세계 거래들을 유발하지 않는 시뮬레이션 환경으로부터 수신될 수 있다. 이러한 처리는, 예를 들면, 사용자 선호도들에 기초할 수 있다. 거래 애플리케이션(들)은, 예를 들면, 자동화된 스프레드 거래 툴과 같은 자동화된 거래 툴을 포함할 수 있다. 하나 이상의 거래 애플리케이션들은 클라이언트 디바이스(110)의 컴퓨팅 디바이스들 중 하나 이상의 컴퓨팅 디바이스에 걸쳐 분산될 수 있다. 예를 들면, 거래 애플리케이션의 특정 컴포넌트들은 거래 워크스테이션 상에서 실행될 수 있고, 거래 애플리케이션의 다른 컴포넌트들은 워크스테이션과 통신하는 서버 상에서 실행될 수 있다.
클라이언트 디바이스(110)는, 예를 들면, 전자 거래 워크스테이션, 휴대용 거래 디바이스, "블랙 박스" 또는 "그레이 박스" 시스템과 같은 알고리즘 거래 시스템, 내장된 거래 시스템, 및/또는 자동화된 거래 툴을 포함할 수 있다. 예를 들면, 클라이언트 디바이스(110)는 미국, 일리노이, 시카고 소재의 트레이딩 테크놀러지스 인터내셔날, 인코포레이티드 사에 의해 제공된 전자 거래 플랫폼, X-TRADER®의 복제품을 실행시키는 컴퓨터 시스템일 수 있다. 또 다른 예로서, 클라이언트 디바이스(110)는, 또한 트레이딩 테크놀러지스 인터내셔날, 인코포레이티드 사에 의해 제공된 Autospreader® 및/또는 AutotraderTM과 같은 자동화된 거래 툴을 실행시키는 컴퓨팅 디바이스일 수 있다.
거래 애플리케이션들은 클라이언트 디바이스(110)의 컴퓨터 판독 가능 매체에 저장될 수 있다. 특정 실시예들에서, 거래 애플리케이션의 특정 컴포넌트들은 거래 워크스테이션 상에 저장될 수 있고, 거래 애플리케이션의 다른 컴포넌트들은 워크스테이션과 통신하는 서버 상에 저장될 수 있다. 특정 실시예들에서, 거래 애플리케이션의 하나 이상의 컴포넌트들은 또 다른 컴퓨터 판독 가능 매체로부터의 클라이언트 디바이스(110)의 컴퓨터 판독 가능 매체로 로딩될 수 있다. 예를 들면, 거래 애플리케이션(또는 거래 애플리케이션에 대한 업데이트들)은 제조자, 개발자, 또는 공개자에 의해 하나 이상의 CD들 또는 DVD들 상에 저장될 수 있고, 그후, 이들은 상기 애플리케이션을 클라이언트 디바이스(110) 상에 로딩하는 것을 담당하는 누군가 또는 클라이언트 디바이스(110)가 거래 애플리케이션을 검색하는 서버에 제공된다. 또 다른 예로서, 클라이언트 디바이스(110)는, 예를 들면, 인터넷 또는 내부 네트워크를 통해 서버로부터 거래 애플리케이션(또는 거래 애플리케이션에 대한 업데이트들)을 수신할 수 있다. 클라이언트 디바이스(110)는 클라이언트 디바이스(110)에 의해 요청될 때("풀 분배") 및/또는 클라이언트 디바이스(110)에 의해 요청되지 않을 때("푸시 분배") 거래 애플리케이션 또는 업데이트들을 수신할 수 있다.
클라이언트 디바이스(110)는 거래 가능한 물건을 구매 또는 판독하기 위한 주문들을 전송하도록 구성된다. 또한, 클라이언트 디바이스(110)는, 예를 들면, 주문들을 취소하고, 주문들을 변경하고 그리고/또는 교환을 질의하도록 구성될 수 있다. 또 다른 예로서, 클라이언트 디바이스(110)는 실세계 거래들을 유발하지 않는 시뮬레이션 환경에서 시뮬레이팅된 교환기에 주문들을 전송하도록 구성될 수 있다.
클라이언트 디바이스(110)에 의해 전송된 주문들은, 예를 들면, 사용자의 요청 시에 또는 자동적으로 전송될 수 있다. 예를 들면, 거래자는 주문 가격 및/또는 수량과 같은 주문에 대한 다양한 파라미터들을 수동으로 제공하여 특정 거래 가능한 물건에 대한 주문을 하기 위해 전자 거래 워크스테이션을 활용할 수 있다. 또 다른 예로서, 자동화된 거래 툴은 주문에 대한 하나 이상의 파라미터들을 계산하고, 주문을 자동으로 전송할 수 있다. 일부 예들에서, 자동화된 거래 툴은 전송될 주문을 준비하지만, 사용자로부터의 확인 없이는 실제로 주문을 전송할 수 없다.
특정 실시예들에서, 클라이언트 디바이스(110)는 사용자 인터페이스를 포함한다. 사용자 인터페이스는, 예를 들면, 거래 애플리케이션의 텍스트-기반 또는 그래픽 인터페이스를 사용자에게 제시하기 위한 하나 이상의 디스플레이 디바이스들을 포함할 수 있다. 예를 들면, 디스플레이 디바이스들은 컴퓨터 모니터들, 핸드-헬드 디바이스 디스플레이들, 프로젝터들, 및/또는 텔레비전들을 포함할 수 있다. 사용자 인터페이스는 거래 애플리케이션을 사용하여 주문에 대한 파라미터들을 지정하거나 검토하도록 사용자에 의해 사용될 수 있다. 사용자 인터페이스는, 예를 들면, 사용자로부터 입력을 수신하기 위한 하나 이상의 입력 디바이스들을 포함할 수 있다. 예를 들면, 입력 디바이스들은 키보드, 트랙볼, 2 개 또는 3 개의 버튼 마우스, 및/또는 터치 스크린을 포함할 수 있다. 사용자 인터페이스는 사용자와 상호 작용하기 위한 다른 디바이스들을 포함할 수 있다. 예를 들면, 정보는 스피커를 통해 청각으로 사용자에게 제공되고 그리고/또는 마이크로폰을 통해 수신될 수 있다.
특정 실시예들에서, 거래 애플리케이션은 거래자가 하나 이상의 시장들과 상호 작용하는 것을 가능하게 하기 위해 하나 이상의 거래 스크린들을 포함할 수 있다. 거래 스크린들은, 예를 들면, 다양한 거래 전략들을 구현하는 동안, 거래자들이 시장 정보를 획득하고 보고, 주문 입력 파라미터들을 설정하고, 주문들을 입력 및 취소하고 그리고/또는 위치들을 모니터링하도록 할 수 있다. 예를 들면, 거래 애플리케이션은 정보(가령, 입찰 가격들, 입찰 수량들, 매도 가격들, 매도 수량들, 과거 판매들에 대한 가격들 및 수량들, 및/또는 다른 시장 관련 정보)를 교환기(130)로부터 수신할 수 있고, 그 다음 상기 정보는 클라이언트 디바이스(110)의 사용자 인터페이스를 사용하여 디스플레이될 수 있다. 수신된 정보에 기초하여, 거래 스크린은 거래 가능한 물건들에 관련하여 가격 레벨들의 범위 및 가격 레벨들에 대한 대응하는 입찰 및 매도 수량들을 디스플레이할 수 있다. 거래자에게 적절한 거래 정보를 제공하기 위해, 거래 스크린은 내부 시장 주변의 가격들의 범위(및 대응하는 입찰 및 매도 수량들)를 디스플레이할 수 있다. 정보는 거래 애플리케이션에 연속하여 또는 규칙적으로 제공될 수 있고, 이는 거래 애플리케이션이 현재 시장 정보로 거래 스크린을 업데이트하도록 허용한다. 거래자는, 예를 들면, 거래 가능한 물건들에 대한 구매 및 판매 주문들을 하기 위해 또는 그렇지 않다면 디스플레이된 정보에 기초하여 거래 가능한 물건들을 거래하기 위해 거래 스크린을 사용할 수 있다.
거래 스크린들은 하나 이상의 거래 툴들을 디스플레이할 수 있다. 거래 툴들은 전자 거래를 허용, 보조 그리고/또는 촉진하는 전자 툴들이다. 예시적인 거래 툴들은 차트들, 거래 사다리들, 주문 입력 툴들, 자동화된 거래 툴들, 자동화된 스프레딩 툴들, 위험 관리 툴들, 주문 파라미터 툴들, 주문 입력 시스템들, 시장 그리드들, 이행 윈도우들(fill windows), 및 시장 주문 윈도우들, 이들의 조합들, 거래, 거래 준비 또는 거래 관리를 위해 사용되는 다른 전자 툴들을 포함하지만, 이에 제한되지 않는다.
특정 실시예들에서, 클라이언트 디바이스(110)는 알고리즘 거래 애플리케이션을 포함한다. 예를 들면, 클라이언트 디바이스(110)는 블랙 박스 또는 그레이 박스 거래 애플리케이션을 포함할 수 있다. 또 다른 예로서, 클라이언트 디바이스(110)는, 시장 데이터를 알고리즘 방식으로 처리하지만 알고리즘 처리에 기초하여 사용자가 수동으로 주문들을 하거나 자동적으로 주문된 주문들을 조작하도록 허용하기 위한 사용자 인터페이스를 제공하는 거래 애플리케이션을 포함할 수 있다. 알고리즘 거래 애플리케이션은 특정 동작들을 수행하기 위한 자동적으로 처리된 알고리즘을 포함하는 거래 애플리케이션이다. 즉, 거래 애플리케이션은 규정된 동작(들)을 수행하기 위한 자동화된 일련의 명령들을 포함한다. 동작들은 특정 방식으로 시장 데이터를 처리하고, 주문을 하고, 기존의 주문을 수정하고, 주문을 삭제하고, 주문하는 것을 삼가하고, 조치를 취할 거래 가능한 물건(들)을 선택하고, 주문하거나 주문을 수정할 가격을 결정하고, 주문하거나 주문을 수정할 수량을 결정하고, 주문이 구매 또는 판매되어야 하는 것인지를 결정하고, 시간 기간 동안에 동작을 지연시키는 것을 포함할 수 있다.
본원에 사용된 알고리즘(또한, 거래 알고리즘으로서 지칭됨)은, 거래에서 사용될 알고리즘을 기술하는 논리 표현들 및 파라미터들을 포함하는 규정에 의해 지정된다. 논리 표현들은 파라미터들을 간의 관계를 지정하고, 더 많은 파라미터들을 생성할 수 있다. 파라미터들은, 예를 들면, 알고리즘의 논리 표현들로의 입력들을 포함할 수 있다. 알고리즘의 규정은 알고리즘 거래 애플리케이션에 의해 적어도 부분적으로 지정될 수 있다. 예를 들면, 알고리즘 거래 애플리케이션은 사용자가 미리 규정된 논리 표현들에 의해 사용될 파라미터들만을 지정하도록 허용할 수 있다. 또 다른 예로서, 알고리즘 거래 애플리케이션은 사용자가 논리 표현들 중 일부 또는 모두 및 파라미터들 중 일부 또는 모두를 지정하도록 허용할 수 있다. 논리 표현들이 사용자에 의해 지정되는 거래 알고리즘은 사용자-규정 거래 알고리즘이다.
특정 실시예들에서, 클라이언트 디바이스(110)로부터의 주문들은 게이트웨이(120)를 통해 교환기(130)로 전송된다. 클라이언트 디바이스(110)는, 예를 들면, 로컬 영역 네트워크, 광역 네트워크, 가상 개인용 네트워크, T1 라인, T3 라인, ISDN 라인, POP(point-of-presence), 및 인터넷을 사용하여 게이트웨이(120)와 통신할 수 있다.
게이트웨이(120)는 클라이언트 디바이스(110) 및 교환기(130)와 통신하도록 구성된다. 게이트웨이(120)는 클라이언트 디바이스(110)와 교환기(130) 간의 통신을 용이하게 한다. 예를 들면, 게이트웨이(120)는 클라이언트 디바이스(110)로부터 주문들을 수신하고, 주문들을 교환기(130)로 전송할 수 있다. 또 다른 예에서, 게이트웨이(120)는 교환기(130)로부터 시장 정보를 수신하고, 시장 데이터를 클라이언트 디바이스(110)로 전송할 수 있다.
특정 실시예들에서, 게이트웨이(120)는 클라이언트 디바이스(110)와 교환기(130) 사이에서 통신된 데이터에 대해 처리를 수행한다. 예를 들면, 게이트웨이(120)는 클라이언트 디바이스(110)로부터 수신된 주문을 교환기(130)에 의해 수용 가능한 데이터 포맷으로 처리할 수 있다. 마찬가지로, 게이트웨이(120)는 교환기(130)로부터 수신된 교환기-특정 포맷의 시장 데이터를 클라이언트 디바이스(110)에 의해 이해되는 포맷으로 변환할 수 있다. 또한, 게이트웨이(120)의 처리는, 예를 들면, 클라이언트 디바이스(110)로부터의 주문들을 추적하고, 교환기(130)로부터 수신된 이행 확인서들에 기초하여 주문의 상태를 업데이트하는 것을 포함할 수 있다. 또 다른 예로서, 게이트웨이(120)는 교환기(130)로부터 시장 데이터를 합치고, 이를 클라이언트 디바이스(110)에 제공할 수 있다.
특정 실시예들에서, 게이트웨이(120)는 클라이언트 디바이스(110)와 교환기(130) 사이에서 통신된 데이터를 처리하는 것 이외에 서비스들을 제공한다. 예를 들면, 게이트웨이(120)는 위험 처리를 제공할 수 있다.
게이트웨이(150)는, 예를 들면, 핸드-헬드 디바이스, 랩톱 컴퓨터, 데스크톱 컴퓨터, 단일 또는 다중-코어 프로세서를 갖는 워크스테이션, 다수의 프로세서들을 갖는 서버, 및/또는 컴퓨터들의 클러스터와 같은 하나 이상의 전자 컴퓨팅 플랫폼들을 포함할 수 있다.
게이트웨이(120)는 하나 이상의 게이트웨이 애플리케이션들을 포함할 수 있다. 게이트웨이 애플리케이션(들)은, 예를 들면, 주문 처리 및 시장 데이터 처리를 취급할 수 있다. 이러한 처리는, 예를 들면, 사용자 선호도들에 기초할 수 있다.
특정 실시예들에서, 게이트웨이(120)는 로컬 영역 네트워크, 광역 네트워크, 가상 개인용 네트워크, T1 라인, T3 라인, ISDN 라인, POP(point-of-presence), 및/또는 인터넷을 사용하여 교환기(130)와 통신한다.
일반적으로, 교환기(130)는 교환 엔티티에 의해 소유, 동작, 제어 또는 사용될 수 있다. 예시적인 교환 엔티티들은 CME 그룹, LIFFE(London International Financial Futures and Options Exchange), ICE(IntercontinentalExchange), 및 Eurex를 포함한다. 교환기(130)는, 예를 들면, 교환기에 의한 거래를 위해 제공된 거래 가능한 물건들이 구매 및 판매되도록 허용하도록 구성된, 컴퓨터, 서버, 또는 다른 컴퓨팅 디바이스와 같은 전자 매칭 시스템일 수 있다.
교환기(130)는 거래 가능한 물건들을 구매 및 판매하기 위한 주문들을 매칭시키도록 구성된다. 거래 가능한 물건들은 교환기(130)에 의해 거래를 위해 목록화될 수 있다. 주문들은, 예를 들면, 클라이언트 디바이스(110)로부터 수신된 주문들을 포함할 수 있다. 주문들은, 예를 들면, 게이트웨이(120)를 통해 클라이언트 디바이스(110)로부터 수신될 수 있다. 또한, 주문들은 교환기(130)와 통신하는 다른 디바이스들로부터 수신될 수 있다. 즉, 통상적으로 교환기(130)는 또한 매칭되는 주문들을 제공하는 다양한 다른 클라이언트 디바이스들(클라이언트 디바이스(110)와 유사할 수 있음)과 통신할 것이다.
교환기(130)는 시장 데이터를 제공하도록 구성된다. 시장 데이터는, 예를 들면, 클라이언트 디바이스(110)에 제공될 수 있다. 시장 데이터는, 예를 들면, 게이트웨이(120)를 통해 클라이언트(110)에 제공될 수 있다. 시장 데이터는, 예를 들면, 내부 시장을 나타내는 데이터를 포함할 수 있다. 내부 시장은 특정 시점에서 최저 판매 가격(또한 "최상의 매도가"로서 지칭됨) 및 최고의 구매 가격(또한 "최상의 호가"로서 지칭됨)이다. 시장 데이터는 또한 시장 깊이(market depth)를 포함할 수 있다. 시장 깊이는 내부 시장에서 이용 가능한 수량들을 지칭하고, 또한 내부 시장으로부터 떨어진 다른 가격들에서 이용 가능한 수량들을 지칭할 수 있다. 따라서, 내부 시장은 시장 깊이의 제 1 레벨로 고려될 수 있다. 내부 시장으로부터 떨어진 하나의 틱(tick)은, 예를 들면, 시장 깊이의 제 2 레벨로 고려될 수 있다. 특정 실시예들에서, 시장 깊이는 모든 가격 레벨들에 대해 제공된다. 특정 실시예들에서, 시장 깊이는 모든 가격 레벨들에 대해 제공되지는 않는다. 예를 들면, 시장 깊이는 내부 시장의 어느 한 측면 상에서 제 1의 5 개의 가격 레벨들에 대해서만 제공될 수 있다. 시장 데이터는 또한 최종 거래 가격(LTP), 최종 거래 수량(LTQ), 및 주문 이행 정보와 같은 정보를 포함할 수 있다.
특정 실시예들에서, 시스템(100)은 2 개 이상의 클라이언트 디바이스(110)를 포함한다. 예를 들면, 상술된 클라이언트 디바이스(110)와 유사한 다수의 클라이언트 디바이스들은 주문들을 교환기(130)로 전송하기 위해 게이트웨이(120)와 통신할 수 있다.
특정 실시예들에서, 시스템은 2 개 이상의 게이트웨이(120)를 포함한다. 예를 들면, 상술된 게이트웨이(120)와 유사한 다수의 게이트웨이들은 클라이언트 디바이스(110) 및 교환기(130)와 통신할 수 있다. 그러한 어레인지먼트는, 예를 들면, 하나의 게이트웨이(120)가 실행한 경우에 리던던시(redundancy)를 제공하는데 사용될 수 있다.
특정 실시예들에서, 시스템(100)은 2 개 이상의 교환기(130)를 포함한다. 예를 들면, 게이트웨이(120)는 상술된 교환기(130)와 유사한 다수의 교환기들과 통신할 수 있다. 그러한 어레인지먼트는, 예를 들면, 클라이언트 디바이스(110)가 게이트웨이(120)를 통해 2 개 이상의 교환기에서 거래하도록 허용할 수 있다.
특정 실시예들에서, 시스템(100)은 2 개 이상의 교환기(130) 및 2 개 이상의 게이트웨이(120)를 포함한다. 예를 들면, 상술된 게이트웨이(120)와 유사한 다수의 게이트웨이들은 상술된 교환기(130)와 유사한 다수의 교환기들과 통신할 수 있다. 각각의 게이트웨이는, 예를 들면, 하나 이상의 상이한 교환기들과 통신할 수 있다. 그러한 어레인지먼트는, 예를 들면, 하나 이상의 클라이언트 디바이스들(110)이 2 개 이상의 교환기에서 거래하도록 (및/또는 중복 접속들을 다수의 교환기들에 제공하도록) 허용할 수 있다.
특정 실시예들에서, 클라이언트 디바이스(110)는 하나 이상의 컴퓨팅 디바이스들 또는 처리 컴포넌트들을 포함한다. 다시 말해서, 클라이언트 디바이스(110)의 기능은 2 개 이상의 컴퓨팅 디바이스에 의해 수행될 수 있다. 예를 들면, 하나의 컴퓨팅 디바이스는 교환기(130)로 전송될 주문들을 생성할 수 있고, 반면에 또 다른 컴퓨팅 디바이스는 그래픽 사용자 인터페이스를 거래자에게 제공할 수 있다. 특정 실시예들에서, 게이트웨이(120)는 하나 이상의 컴퓨팅 디바이스들 또는 처리 컴포넌트들을 포함할 수 있다. 다시 말해서, 게이트웨이(120)의 기능은 2 개의 이상의 컴퓨팅 디바이스에 의해 수행될 수 있다. 특정 실시예들에서, 교환기(130)는 하나 이상의 컴퓨팅 디바이스들 또는 처리 컴포넌트들을 포함한다. 다시 말해서, 교환기(130)의 기능은 2 개 이상의 컴퓨팅 디바이스에 의해 수행될 수 있다.
특정 실시예들에서, 게이트웨이(120)는 클라이언트 디바이스(110)의 일부분이다. 예를 들면, 게이트웨이(120)의 컴포넌트들은 클라이언트 디바이스(110)와 동일한 컴퓨팅 플랫폼의 일부분일 수 있다. 또 다른 예로서, 게이트웨이(120)의 기능은 클라이언트 디바이스(110)의 컴포넌트들에 의해 수행될 수 있다. 특정 실시예들에서, 게이트웨이(120)는 존재하지 않는다. 그러한 어레인지먼트는 클라이언트 디바이스(110)가, 예를 들면, 교환기(130)와 통신하기 위해 게이트웨이(120)를 활용할 필요가 없을 때 발생할 수 있다. 예를 들면, 클라이언트 디바이스(110)가 교환기(130)와 직접적으로 통신하도록 구성되는 경우이다.
특정 실시예들에서, 게이트웨이(120)는 클라이언트 디바이스(110)와 동일한 사이트에 물리적으로 위치된다. 특정 실시예들에서, 게이트웨이(120)는 교환기(130)와 동일한 사이트에서 물리적으로 위치된다. 특정 실시예들에서, 클라이언트 디바이스(110)는 교환기(130)와 동일한 사이트에서 물리적으로 위치된다. 특정 실시예들에서, 게이트웨이(120)는 클라이언트 디바이스(110) 및 교환기(130) 양자로부터 분리된 사이트에서 물리적으로 위치된다.
명확히 하기 위해 도시되지 않았지만, 특정 실시예들에서, 시스템(100)은 미들웨어, 방화벽들, 허브들, 스위치들, 라우터들, 교환기-특정 통신 장비, 모뎀들, 보안 관리기들, 및/또는 암호화/암호 해독 디바이스들과 같이 통신 아키텍처에 대해 특정한 다른 디바이스들을 포함할 수 있다.
상술된 시스템(100)의 컴포넌트들, 엘리먼트들 및/또는 기능은, 예를 들면, 하드웨어, 펌웨어 및 소프트웨어의 명령들의 세트의 다양한 형태들로 홀로 또는 조합하여 구현될 수 있다. 특정 실시예들은 범용 컴퓨터 또는 다른 처리 디바이스 상에서의 실행을 위해, 메모리, 하드 디스크, CD-ROM, DVD, EPROM, 및/또는 파일 서버와 같은 컴퓨터-판독 가능 매체 상에 상주하는 명령들의 세트로서 제공될 수 있다.
II. 알고리즘 주문 구축기
특정 실시예들은 알고리즘을 규정하기 위해 구축 블록 버튼들 및 알고리즘 영역을 제공한다. 특정 실시예들은 단일의 거래 세션 동안에서조차 알고리즘의 파라미터들 및 로직 양자를 조절하는 것을 허용한다. 특정 실시예들은 알고리즘이 규정됨에 따라 표현의 라이브 평가를 제공한다. 특정 실시예들은 사용자에 의한 프로그래밍 코드의 기록을 감소시키거나 제거함으로써 신택스 에러들, 불명확한 로직과 같은 통상적으로 프로그래밍된 알고리즘들의 위험들, 및 거래자에 의해 규정된 알고리즘을 비거래자 프로그래머가 개발할 필요성을 감소시킨다. 특정 실시예들은 알고리즘을 모두 동시에 (실제 시장 데이터를 사용하여) 구축, 디버깅, 및 시뮬레이팅하기 위한 단일의 애플리케이션을 제공한다. 게다가, 단일의 애플리케이션은 또한 상기 알고리즘을 사용하여 주문들의 배치를 개시하는 것을 제공할 수 있다.
도 2a는 특정 실시예들에 따른 거래 인터페이스(200)를 예시한다. 거래 인터페이스(200)는 AOB(Algorithmic Order Builder)로서 지칭되는 알고리즘 거래 애플리케이션에 대한 거래 인터페이스이다. AOB는 거래자가 배치될 주문에 대한 알고리즘을 생성하도록 허용한다. 그러나, 예시된 거래 인터페이스(200)의 얼리먼트들이 다른 거래 인터페이스들에 통합될 수 있다는 것이 이해되어야 한다.
거래 인터페이스(200)는 기구 선택 버튼(201), 시장 그리드(202), 시뮬레이팅된 표시 주문 입력 영역(203), 자동 헤지 옵션(auto hedge option)(204), 스크래치 수량(205), 변수 영역(206), 알고리즘 영역(210), 및 구축 블록 버튼들(215)을 포함한다. 알고리즘 영역(210)은 가격 영역(211), 수량 영역(212), 및 조건부 영역(213)을 포함한다.
동작 시에, 알고리즘은 가격 영역(211), 수량 영역(212), 및/또는 조건부 영역(213)에 표현을 구축하기 위해 하나 이상의 구축 블록 버튼들(215)을 활용함으로써 알고리즘 영역(210)에서 규정된다. 알고리즘에서 사용자-규정 변수들에 대한 디폴트 값들은 변수 영역(206)을 사용하여 지정될 수 있다. 일단 알고리즘이 규정되면, 시뮬레이팅된 표시 주문 입력 영역(203)은 표현의 로직이 행동하는 방법을 표시하는데 사용될 수 있다. 그후, 규정된 알고리즘에 따라 관리되는 주문은 거래 인터페이스를 사용하여 개시될 수 있다.
기구 선택 버튼(201)은 배치될 주문이 관련된 기구(즉, 거래 가능한 물건)의 선택을 제공한다. 도 2a에 예시된 바와 같이, 기구 선택 버튼(201)은, 기구 선택 버튼(201)에 디스플레이된 선택된 기구의 명칭에 의해 표시된 바와 같이, GEH1-GEM1 캘린더 스프레드를 선택하는데 이미 사용되어 왔다. 기구가 선택되지 않는다면, 기구 선택 버튼(201)은 "기구 선택"을 디스플레이하거나, 기구가 아직 선택되지 않았다는 몇몇의 다른 표시를 제공할 수 있다.
기구 선택 버튼(210)의 활성화 시에(예를 들면, 포인터로 상기 버튼을 선택하거나 터치 스크린 상에서 상기 버튼을 터치함으로써), 기구 선택 인터페이스는 기구의 선택을 허용하도록 디스플레이될 수 있다.
도 2b는 특정 실시예들에 따른 기구 선택 인터페이스(220)를 예시한다. 기구 선택 인터페이스(220)는 거래 가능한 제품들의 리스트를 디스플레이하고, 기구 트리(instrument tree)를 따름으로써 사용자가 거래될 특정 거래 가능한 물건을 지정하도록 허용한다. 기구 트리는, 예를 들면, 사용자가 표시될 기구, 기구 형태(예를 들면, 스프레드들 또는 선물들), 및 특정 계약들을 선택하도록 허용한다. 예를 들면, 예시된 바와 같이, GEH1-GEM1 캘린더 스프레드가 선택되었다.
도 2a를 다시 참조하면, 시장 그리드(202)는 거래 가능한 물건에 대한 시장 정보를 디스플레이한다. 거래 가능한 물건은, 예를 들면, 기구 선택 버튼(201)로 선택된 기구일 수 있다. 또 다른 예로서, 거래 가능한 물건은 사용자에 의해 선택된 또 다른 거래 가능한 물건일 수 있다. 시장 그리드(202)는, 예를 들면, 거래 가능한 물건에 대한 입찰 및/또는 매도 가격, 입찰 및/또는 매도 수량, 최종 거래 가격 및/또는 수량 정보를 디스플레이할 수 있다. 예를 들면, 시장 그리드(202)는 선택된 기구에 대한 내부 시장 가격들 및 수량들을 디스플레이할 수 있다.
시뮬레이팅된 표시 주문 입력 영역(203)은 알고리즘 영역(210)에 규정된 알고리즘의 동작 양상들을 평가하기 위한 피드백을 생성하는 것을 제공한다. 사용자는 표현의 로직이 행동하는 방법을 표시하기 위한 시뮬레이팅된 표시 주문 입력 영역(203)을 사용하여 선택된 기구를 구매 또는 판매하기 위한 가상적인 주문의 배치를 시뮬레이팅할 수 있다. 가상적인 주문에 대한 가격 및/또는 수량은 또한 시뮬레이팅된 표시 주문 입력 영역(203)을 사용하여 지정될 수 있다. 또한, 특정 실시예들에서, 시뮬레이팅된 표시 주문 입력 영역(203)은, 주문이 규정된 알고리즘에 따라 관리되는 경우에, 선택된 기구를 구매 또는 판매하기 위한 실제 주문의 배치를 개시하도록 (예를 들면, 체크박스를 선택함으로써) 구성될 수 있다.
자동 헤지 옵션(204)은 개시된 주문이 이행될 때 반대 주문(counter order)이 배치되어야 한다는 것을 지정하는 것을 제공한다. 반대 주문은 이행된 주문이 구매하기 위한 주문일 때 판매하기 위한 주문이고, 반대 주문은 이행된 주문이 판매하기 위한 주문일 때 구매하기 위한 주문이다. 반대 주문의 수량은, 예를 들면, 이행된 수량과 동일할 수 있다. 반대 주문은, 예를 들면, 이행된 주문의 가격으로부터 하나의 거래 가능한 증분(교환기에 의해 규정된 바와 같음)과 같이 이득이 되는 거래 가격에서 초기에 배치된다. 예를 들면, 이행 주문이 100의 가격에서 10의 수량을 구매하였다면, 반대 주문은 101의 가격에서 10의 수량을 판매하는 것일 수 있다. 또 다른 예로서, 이행된 주문이 100의 가격에서 5의 수량을 판매하였다면, 반대 주문은 99의 가격에서 5의 수량을 구매하는 것일 수 있다.
스크래치 수량(205)은 자동 헤지 옵션(204)과 함께 사용된다. 반대 주문의 가격 레벨에서 시장의 수량이 지정된 스크래치 수량(205) 아래로 떨어질 때, 그후 반대 주문의 가격 레벨은 대응하는 이행된 주문의 가격이 되도록 변경된다. 이러한 경우에, 이행된 주문은 "스크래칭된다고" 불리어지고, 거래 상에서 어떠한 이득도 존재하지 않는다. 특정 실시예들에서, 반대 주문은 이득 또는 손실과 상관없이 포지션 마감 가격으로 배치될 수 있다.
변수 영역(206)은 알고리즘 영역(210)에서 사용되는 사용자-규정 변수들을 지정 및 수정하는 것을 제공한다. 변수 영역(206)은 각각의 변수 명칭 및 그의 값을 디스플레이한다. 변수 영역은 변수 명칭 및/또는 그의 값을 변경하도록 선택될 수 있다. 변수들은 또한 알고리즘의 파라미터들로서 지칭될 수 있다.
알고리즘 영역(210)은 주문을 관리하기 위한 알고리즘을 규정하는 것을 제공한다. 알고리즘 영역(210)은 가격 영역(211), 수량 영역(212), 및 조건부 영역(213)을 포함한다. 각각의 영역은 알고리즘의 상이한 양상에 대응한다.
구축 블록 버튼들(215)은 알고리즘을 규정하기 위한 알고리즘 영역(210)에서 표현들을 구축하는데 사용된다. 표현들은 알고리즘 영역(210)의 각각의 영역에 대한 값을 결정하도록 평가된다. 표현은 구축 블록 버튼들(215)로 지정된 하나 이상의 엘리먼트들을 포함한다. 구축 블록 버튼들(215)의 사용은 아래에 더욱 상세히 논의된다.
일단 알고리즘이 알고리즘 영역(210)에서 규정되면, 구매 또는 판매하기 위한 주문이 거래 인터페이스를 사용하여 개시될 수 있다. 예를 들면, 가상적인 주문을 개시하는 것을 제공하는 것에 부가하여, 특정 실시예들에서, 시뮬레이팅된 표시 주문 입력 영역(203)은 또한 실제 주문을 개시하는 것을 제공할 수 있다. 또 다른 예로서, 아래에 논의되는 것과 유사한 거래 인터페이스들은 주문을 개시하는데 사용될 수 있다. 그후, 개시된 주문은 규정된 알고리즘에 따라 관리된다.
가격 영역(211)은 관리되는 주문이 배치되어야 하는 가격을 결정하도록 평가된다. 가격 영역(211)은 가격을 나타내는 숫자로 평가한다. 가격 영역(211)이 블랭크(blank)이면, 시뮬레이팅된 표시 주문 입력 영역(203)에 지정된 가격이 사용된다. 가격 영역(211)이 표현을 포함하면, 시뮬레이팅된 표시 주문 입력 영역(203)에 지정된 가격이 무시될 수 있다. 가격 영역(211)은 시장 데이터가 변할 때와 같이 상이한 시간들에서 상이한 값으로 평가할 수 있다. 그렇다면, 관리되는 주문은 새로운 가격에서 작동하도록 변경된다. 이것은, 예를 들면, 주문을 삭제하고 새로운 가격에서 새로운 주문을 하거나 취소/대체 명령을 사용함으로써 성취될 수 있다.
수량 영역(212)은 관리되는 주문이 배치되어야 하는 수량을 결정하도록 평가된다. 수량 영역(212)은 수량을 나타내는 숫자로 평가한다. 수량 영역(212)이 블랭크이면, 시뮬레이팅된 표시 주문 입력 영역(203)에 지정된 수량이 사용된다. 수량 영역(212)이 표현을 포함하면, 시뮬레이팅된 표시 주문 입력 영역(203)에 지정된 수량이 무시될 수 있다. 수량 영역(212)은, 시장 데이터가 변할 때와 같이, 상이한 시간들에서 상이한 값으로 평가할 수 있다. 그렇다면, 관리되는 주문은 새로운 수량에서 작동하도록 변경된다. 이것은, 예를 들면, 주문을 삭제하고, 새로운 수량으로 새로운 주문을 하거나 변경 주문 수량 명령을 사용함으로써 성취될 수 있다. 수량 영역(212)이 0으로 평가하면, 관리되는 주문은 수량 영역(212)이 비-제로 값으로 평가할 때까지 시장에서 삭제될 수 있다. 이것은, 후술되는 바와 같이 "거짓"으로 평가하는 조건부 영역(213)과 유사할 수 있다.
특정 실시예들에서, 알고리즘 영역(210)은 수량 영역(212)을 포함하지 않는다. 대신에, 수량은 고정되거나 미리 규정될 수 있다. 예를 들면, 헤지 주문들을 관리하기 위한 거래 인터페이스(예를 들면, 거래 전략의 거래 가능한 물건에 대한 또 다른 주문이 이행될 때 자동적으로 배치된 주문들: 이것은 또한 헤지 관리기 인터페이스로서 지칭될 수 있음)은, 이행된 다른 주문의 수량에 기초하고 따라서 알고리즘의 관점으로부터 미리 결정된 수량을 사용할 수 있다. 따라서, 알고리즘이 헤지 주문들을 작업하기 위해 사용되도록 허용할 수 있는 그러한 거래 인터페이스 내의 알고리즘 영역은, 알고리즘이 활용될 때 수량이 미리 결정되는 것으로 인해 수량 값이 지정될 필요가 없기 때문에 수량 영역(212)을 포함하지 않을 수 있다.
조건부 영역(213)은 알고리즘이 활성화되어야 하는지를 결정하도록 평가된다. 조건부 영역(213)은 불 값(Boolean value)으로 평가한다. 조건부 영역(213)이 "참"으로 평가하면, 알고리즘은 활성이다. 조건부 영역(213)이 "거짓"으로 평가하면, 알고리즘은 불활성이다. 조건부 영역(213)이 블랭크이면, 알고리즘은 항상 활성이다. 조건부 영역(213)은 시장 데이터가 변할 때와 같이, 상이한 시간들에서 상이한 값으로 평가할 수 있다. 알고리즘이 활성일 때, 관리되는 주문은, 후술되는 바와 같이 결정된 가격 및 수량에 따라 시장에 입력되고 작동된다. 알고리즘이 불활성일 때, 관리되는 주문은 시장으로부터 삭제된다. 이것은, 예를 들면, 주문을 삭제함으로써 성취될 수 있다.
특정 실시예들에서, 알고리즘 영역(210)은 조건부 영역(213)을 포함하지 않는다. 대신에, 알고리즘은 일단 주문이 개시되면 간단하게 항상 "활성"일 수 있다. 예를 들면, 헤지 관리기 인터페이스에서, 헤지 주문이 가능한 신속하게 이행되는 것이 요구될 수 있기 때문에, 헤지 주문을 관리하는 알고리즘은 항상 활성일 수 있다.
가격 영역(211), 수량 영역(212) 및/또는 조건부 영역 내의 표현들이 적절한 형태의 값(가격 영역(211) 및 수량 영역(212)에 대한 숫자 및 조건부 영역(213)에 대한 불 값)으로 평가되지 않는다면, 표현이 무효하다. 표현이 무효하다는 것을 표시하기 위해, 특정 영역의 배경은 녹색(유효 표현을 표시함)으로부터 적색(무효 표현을 표시함)으로 변경될 수 있다. 알고리즘 영역(210)의 영역들 중 하나 영역 내의 표현이 무효할 때, 주문이 배치될 수 없다.
특정 실시예들에서, 알고리즘 영역(210)의 영역 내의 표현이 무효하다는 것을 표시하기 위해, 배경 컬러 이외에(또는 이에 부가하여) 다른 표시자들이 사용될 수 있다. 예를 들면, 상이한 배경 패턴, 상이한 경계 컬러 또는 스타일, "준비" 또는 "무효"와 같은 텍스트 메시지, 및/또는 감탄 부호의 아이콘이 사용될 수 있다.
알고리즘에 따라 관리되는 주문이 이행되면, 반대 주문은 후술되는 바와 같이 자동 헤지 옵션(204) 및 스크래치 수량(205)에 기초하여 자동적으로 배치될 수 있다.
상술된 바와 같이, 구축 블록 버튼들(215)은 알고리즘을 규정하기 위한 알고리즘 영역(210)에서 표현들을 구축하는데 사용된다. 또한, 구축 블록 버튼들(215)은, 예를 들면, 아이콘들, 이동 가능한 아이콘들, 아이콘 버튼들, 이동 가능한 버튼들, 또는 사용자 인터페이스 엘리먼트들로서 지칭될 수 있다. 표현들은 엘리먼트들(로직 표현들 및 파라미터들)을 포함하고, 알고리즘 영역(210)의 각각 영역에 대한 값을 결정하도록 평가된다. 구축 블록 버튼(215)은 표현을 구축하기 위해 알고리즘 영역(210)의 특정 영역에서 선택되고 배치될 수 있다. 예를 들면, 사용자는 하나 이상의 구축 블록 버튼들(215)을 가격 영역(211), 수량 영역(212), 및/또는 조건부 영역(213)과 같은 알고리즘 영역(210)의 영역들 중 하나 이상의 영역에 드래그 및 드롭할 수 있다. 또 다른 예로서, 사용자는, 예를 들면, 구축 블록 버튼(215) 위를 클릭함으로써 구축 블록 버튼(215)을 선택할 수 있고, 그후 구축 블록 버튼(215)은 가장 최근에 사용된 알고리즘 영역(210)에 배치될 수 있다. 구축 블록 버튼(215)을 알고리즘 영역(210)에 배치하는 것은 알고리즘 영역(210)에 구축된 표현 내에 엘리먼트를 배치한다. 후술되는 바와 같이, 표현 내의 특정 엘리먼트들은, 예를 들면, 서브-표현들로서 작동하는 부가적인 엘리먼트들을 포함할 수 있다.
구축 블록 버튼들(215)의 형태들은, 기구들, 상수들, 산술 연산자들, 논리 연산자들, 순위 연산자들(precedence operator), if-then-else 구조들, 및 변수들을 포함한다. 기구 구축 블록 버튼들은, 예를 들면, 입찰 가격 및 매도 수량과 같은 선택된 기구의 속성들을 지정한다. 상수 값 구축 블록 버튼들은, 예를 들면, 수 및 불 상수 값들을 지정한다. 산술 연산자 구축 블록 버튼들은 합산("+"), 감산("-"), 승산("*"), 및 제산("/")과 같은 산술 연산자들을 포함한다. 또한, 산술 연산자 구축 블록 버튼들은 "+/-"와 같은 주문 측 특정 산술 연산들을 포함하고, 이는 구매 주문들을 위한 합산 및 판매 주문들을 위한 감산(또는, 사용자에 의해 지정되는 바와 같이, 판매 주문들을 위한 합산 및 구매 주문들을 위한 감산)이다. 논리 연산자 구축 블록 버튼들은, 예를 들면, AND, OR 및 NOT과 같은 논리 연산들 및 초과(">"), 미만("<"), 초과 또는 동일(">="), 미만 또는 동일("<="), 및 동일("=")과 같은 비교들을 포함한다. 또한, 논리 연산자 구축 블록 버튼들은 ">/<"과 같은 주문 측 특정 논리 연산들을 포함할 수 있고, 이는 구매 주문에 대해 초과 및 판매 주문들에 대해 미만(또는, 사용자에 의해 지정된 바와 같이, 판매 주문들에 대해 초과 및 구매 주문들에 대해 미만)이다. 순위 연산자 구축 블록 버튼들은 괄호들("("and")")을 포함한다. 특정 실시예들에서, 순위 연산자 구축 블록 버튼들은 괄호들 사이의 엘리먼트들로 구성된 서브-표현들을 형성하는데 사용될 수 있다. if-then-else 구조 구축 블록 버튼은, 예를 들면, 조건부 값들을 지정하는 것을 허용한다. if-then-else 구조 구축 블록 버튼은 서브-표현들이 하나 이상의 엘리먼트들을 사용하여 구축될 수 있는 부분들을 제공한다. 후술된 바와 같이, 변수 구축 블록 버튼들은, 예를 들면, 변수 영역(206)을 사용하여 변경된 그의 값을 가질 수 있는 사용자-규정 변수를 지정한다.
도 2c 내지 도 2i는 특정 실시예들에 따른 거래 인터페이스(200)에서 알고리즘에 대한 규정을 구축하는 것을 예시한다.
도 2c에 예시된 바와 같이, 기구 구축 블록 버튼(231)은 기구 구축 블록(232)으로서 가격 영역(211)에서 선택되고 배치된다. 기구 구축 블록(232)은 선택된 기구의 어떠한 속성이 리스트(233)로부터 사용되어야 하는지를 사용자 선택하도록 허용한다. 기구 입찰 가격이 선택되었다. 따라서, 기구 구축 블록(232)(기구 입찰 가격인 것으로 지정됨)을 포함하는 가격 영역(211)은 시장에서 순간적인 기구 입찰 가격으로 평가한다.
선택된 기구의 속성들의 예들은 입찰 가격, 매도 가격, 입찰 수량, 매도 수량, 최종 거래 가격, 최종 거래 수량, 부피, 거래 세션 하이, 거래 세션 로우, 비-암시된 입찰/매도 수량(또한, 실제 입찰/매도 수량으로서 지칭됨), 정산 가격(settlement price), 최소 거래 가능 증분(또한 틱 사이즈로서 지칭됨), 및 가격에서 큐(queue) 내의 주문들의 수(또한 인원수로서 지칭됨)를 포함한다. 또한, 예를 들면, "입찰 가격*", "매도 가격*", "입찰 수량*", 및 "매도 수량*"과 같은 특별한 주문-측-특정 속성들(미도시)이 지정될 수 있다. 이러한 특별한 속성들에 대해, 구매 주문들을 위한 지정된 값이 사용되고, 판매 주문들을 위한 특별한 값의 반대 값이 사용된다. 예를 들면, "매도 가격*"이 선택되면, 표현은 구매 주문을 위한 매도 가격 및 판매 주문을 위한 입찰 가격으로 평가한다.
도 2d에 예시된 바와 같이, 감산 산술 연산자 구축 블록 버튼(241)은 감산 구축 블록(242)으로서 가격 영역(211) 내에 선택 및 배치된다. 이제 가격 영역(211) 내의 표현은 기구 구축 블록(232) 및 감산 구축 블록(242)을 포함한다.
그러나, 가격 영역(211) 내의 표현은 이제 무효하고, 평가될 수 없다("입찰 가격-"은 구문적으로 의미가 있음). 이것은, 상술된 바와 같이, 무효한 영역의 형태와 유사하게 처리될 수 있다. 즉, 가격 영역(211) 내의 표현이 무효하기 때문에, 가격 영역(211)의 배경은 녹색(유효 표현을 표시함)으로부터 적색(무효 표현을 표시함)으로 변하게 된다.
도 2e에 예시된 바와 같이, 수치적으로 상수값 구축 블록 버튼이 상수값 구축 블록(252)으로서 가격 영역(211) 내에 선택 및 배치된다. 사용자는 상수값 구축 블록(252)이 "0.5"의 값을 가져야 한다고 지정한다. 가격 영역(211) 내의 표현은 이제 다시 유효하고(배경이 적색으로부터 다시 녹색으로 변한다는 것을 유의), 기구의 즉각적인 입찰 가격에서 마이너스 0.5로 평가한다.
도 2f에 예시된 바와 같이, if-then-else 구조 구축 블록 버튼(261)은 if-then-else 구조 구축 블록(262)으로서 수량 영역(212) 내에 선택 및 배치된다. if-then-else 구조 구축 블록(262)은 IF 부분(263), THEN 부분(264), 및 ELSE 부분(265)을 포함한다. 하나 이상의 엘리먼트들(네스팅된(nested) if-then-else 구조 구축 블록들을 포함함)의 서브-클래스는 if-then-else 구조 구축 블록(262)의 각각의 부분 내에 구축될 수 있다. if-then-else 구조 구축 블록(262)이 평가될 때, 그의 값은 다음과 같이 결정된다. IF 부분(263)은 불 값을 결정하도록 평가된다. IF 부분(263)으로부터 결정된 불 값이 "참"으로 평가할 때, if-then-else 구조 구축 블록(262)은 THEN 부분(264) 내의 표현의 값으로 평가한다. IF 부분(263)으로부터 결정된 불 값이 "거짓"으로 평가할 때, if-then-else 구조 구축 블록(262)은 ELSE 부분(265) 내의 표현의 값으로 평가한다.
구축 블록 버튼들(215)은 또한 if-then-else 구조 구축 블록(262)의 부분들 내의 표현들을 구축하는데 사용된다. 예시된 바와 같이, IF 부분(263)은 기구 입찰 수량이 어떤 것보다 큰지를 결정하기 위해 비교를 위한 부분적으로 구축된 표현을 포함한다. 그러나, 이러한 표현이 구문적으로 의미가 없기 때문에, 이것은 무효하다. 결과적으로, IF 부분(263)의 배경이 이것을 표현하기 위해 적색이고 녹색이 아니라는 것을 유의하라. 또한, if-then-else 구조 구축 블록(262)이 유효하지 않기 때문에(그의 IF 부분(263)이 유효하지 않기 때문에), 수량 영역(212) 내의 표현은 유효하지 않고, 따라서 이것은 역시 적색 배경을 갖는다.
도 2g에 예시된 바와 같이, if-then-else 구조 구축 블록(262)은 이제 각각의 그의 부분들 내의 유효 표현들을 포함하고, 따라서 수량 영역(212)에 대한 표현이 또한 유효하다.
도 2h에 예시된 바와 같이, if-then-else 구조 구축 블록들이 내포될 수 있다. if-then-else 구조 구축 블록(262)의 ELSE 부분(265)은 또 다른 if-then-else 구조 구축 블록(266)을 포함한다. 예시된 바와 같이, if-then-else 구조 구축 블록(266)이 그의 부분들 중 임의의 부분 내에 임의의 표현들을 포함하지 않기 때문에, 이것은 평가될 수 없고, 따라서 if-then-else 구조 구축 블록(266)의 ELSE 부분(265) 내의 무효 표현이다. 결과적으로, ELSE 부분(265)은 그의 표현이 무효하다는 것을 표시하기 위해 적색 배경을 갖는다. 또한, ELSE 부분(265)이 무효 표현을 갖기 때문에, if-then-else 구조 구축 블록(262)은 유효 표현을 갖지 않고, 따라서 수량 영역(212)의 배경이 적색이다.
도 2i에 예시된 바와 같이, if-then-else 구조 구축 블록(262)의 IF 부분(263) 내의 표현은 변수 구축 블록들(273, 274, 275, 및 276)을 포함한다. 변수 구축 블록들(273, 274, 275, 및 276)은 변수 구축 블록 버튼을 사용하거나, 상수값이 변수이어야 한다는 것을 표시하기 위해 상수값 구축 블록 버튼을 사용할 때 옵션을 선택함으로써 배치될 수 있다. 변수 구축 블록(273)은 변수의 명칭("M_TH_1") 및 그의 값("5000")을 디스플레이한다. 이것은, 예를 들면, 최소 임계치를 표현할 수 있다. 상술된 바와 같이, 변수 영역(206)은 각각의 변수 명칭 및 그의 값을 디스플레이한다. 예시된 바와 같이, 변수 영역(206)은 각각의 변수 구축 블록(273, 274, 275, 및 276)에 대한 엔트리들을 갖는 명칭 컬럼(271) 및 각각의 변수에 대한 대응하는 디폴트 값 엔트리들을 갖는 디폴트 값 컬럼(272)을 포함한다. 사용자는 각각의 변수 구축 블록의 디폴트 값을 변경하기 위해 디폴트 값 컬럼(272) 내의 디폴트 값 엔트리를 선택할 수 있어서, 수량 영역(212) 내의 표현의 평가 시에 새로운 디폴트 값이 사용된다. 마찬가지로, 사용자는 각각의 변수 구축 블록의 명칭을 변경하기 위해 명칭 컬럼(271) 내의 명칭 엔트리를 선택할 수 있다. 변수 구축 블록들(273, 274, 275, 및 276)은 변수의 값을 변경함으로써 사용자가 근본적인 로직이라기보다는 알고리즘의 행동을 조작하도록 허용할 수 있고, 변수의 값은, 예를 들면, 알고리즘에 대한 파라미터로서 역할을 한다.
거래 인터페이스(200)는 라이브 평가 특징을 제공한다. 도 2c 내지 도 2i에 예시된 바와 같이, 라이브 평가 특징은 표현에 대한 평가 값의 디스플레이를 제공한다. 라이브 평가 값은, 예를 들면, 알고리즘이 규정됨에 따라 제공될 수 있다. 라이브 평가 값은, 예를 들면, 평가되는 표현에 관련하여 디스플레이될 수 있다. 표현이 변하거나 표현 내의 구축 블록의 값이 변할 때마다, 평가가 수행될 수 있다. 평가는 또한 주기적으로 또는 연속적으로 수행될 수 있다. 특정 실시예들에서, 라이브 평가 값은 서브-표현들에 대해 제공될 수 있다. 특정 실시예들에서, 라이브 평가 값은 표현의 개별적인 엘리먼트들에 대해 제공될 수 있다.
도 2c에 예시된 바와 같이, 상술된 바와 같이, 기구 입찰 가격은 기구 구축 블록(232)에 대한 속성으로서 선택되었다. 가격 영역(211)의 라이브 평가(281)는 "8.5"를 디스플레이하고, 이는 기구에 대한 현재 입찰 가격(또한 시장 그리드(202)에 도시됨)이다. 도 2d에 예시된 바와 같이, 상술된 바와 같이, 가격 영역(211) 내의 표현이 평가될 수 없기 때문에, 가격 영역(211) 내의 표현은 무효하고, 따라서 어떠한 라이브 평가도 디스플레이되지 않는다. 도 2e에 예시된 바와 같이, 가격 영역(211)의 라이브 평가(282)는 "8"을 디스플레이하고, 이는 기구 입찰 가격(805) 마이너스 상수값(0.5)이다.
가격 영역(211), 수량 영역(212), 및 조건부 영역(213)의 라이브 평가에 부가하여, 라이브 평가는 이러한 영역들 내의 표현들에 대해 수행될 수 있다. 예를 들면, 도 2g에 예시된 바와 같이, if-then-else 구조 구축 블록(262)의 부분들 각각 및 수량 영역(212) 자체에 대해 라이브 평가들이 제공된다. 기구 입찰 수량(863)이 60과 동일하거나 그보다 크기 때문에, IF 부분(263)에 대한 라이브 평가(283)는 "참"이다. THEN 부분(264) 내의 표현이 단지 상수값 2이기 때문에, THEN 부분(264)에 대한 라이브 평가(284)는 2이다. 마찬가지로, ELSE 부분(265) 내의 표현이 단지 상수값 1이기 때문에, ELSE 부분(1)에 대한 라이브 평가(285)는 상수값 1이다. IF 부분(263)이 "참"으로 평가하기 때문에, if-then-else 구조 구축 블록(262)의 평가가 THEN 부분(264)의 값이므로, 수량 영역(212)에 대한 라이브 평가(286)는 "2"이다.
거래 인터페이스(200)의 구축 블록 버튼들(215) 및 알고리즘 영역(210)은 거래자 또는 비프로그래머와 같은 사용자가 알고리즘을 개발하는데 요구되는 시간 및 위험을 감소시키도록 허용한다. 이것은 신택스 에러들(예를 들면, 특정 프로그래밍 언어들의 복잡성들로 인한 것임)을 감소시키고 구축되는 알고리즘에 대한 라이브 평가 및 피드백을 제공함으로써(예를 들면, 에러들을 플래깅(flagging)하고, 알고리즘이 구축되는 동안 로직의 디버깅을 허용함으로써) 부분적으로 성취된다.
일단 알고리즘이 알고리즘 영역(210)에 규정되면, 알고리즘이 저장될 수 있다. 알고리즘에는 또한 명칭이 제공될 수 있다(예를 들면, 알고리즘이 구축되는 동안 및/또는 알고리즘이 저장될 때). 그후, 저장된 알고리즘은 거래 인터페이스(200) 또는 또 다른 거래 인터페이스를 사용하여 미래의 시간에서 소환 또는 참조될 수 있다. 예를 들면, 저장된 알고리즘은 거래 인터페이스(200)를 사용하여 로딩될 수 있어서, 알고리즘이 또 다른 주문에 대해 편집되거나 재사용될 수 있다. 또 다른 예에서, 저장된 알고리즘은 상술된 바와 같은 또 다른 거래 인터페이스로부터 주문 형태로서 참조될 수 있다.
도 2j는 특정 실시예들에 따른 거래 인터페이스(290)를 예시한다. 거래 인터페이스(290)는 알고리즘에 의해 관리되는 주문을 개시하는 것을 제공하도록 구성된 주문 티켓이고, 알고리즘은 상기 주문에 대해 특정하게 규정된다.
거래 인터페이스(290)는 알고리즘 영역(299), 알고리즘 주문 버튼(294), 및 구축 블록 버튼들(295)을 포함한다. 알고리즘 영역(299)은 가격 영역(292), 수량 영역(293), 및 조건부 영역(294)을 포함한다. 가격 영역(291)은 상술된 가격 영역(211)과 유사하다. 수량 영역(292)은 상술된 수량 영역(212)과 유사하다. 조건부 영역(293)은 상술된 조건부 영역(213)과 유사하다. 구축 블록 버튼들(295)은 상술된 구축 블록 버튼들(215)과 유사하다.
거래 인터페이스(290)는 통상적인 거래 주문들의 배치를 개시하는데 사용될 수 있다. 또한, 알고리즘 주문 버튼(294)은 알고리즘 영역(299)을 인에이블하도록 선택될 수 있다. 인에이블될 때, 알고리즘 주문 영역(299)은 거래 인터페이스(200)에 대해 상술된 것과 유사한 방식으로 가격 영역(291), 수량 영역(292), 및 조건부 영역(293)을 사용하여 알고리즘을 규정하는 것을 제공한다. 일단 알고리즘이 알고리즘 영역(299)에 규정되고 개시되면, 알고리즘은 거래 인터페이스(200)에 대해 상술된 것과 유사한 방식으로 규정된 알고리즘에 따라 관리된다.
마찬가지로, 거래 인터페이스(200 및 290) 내의 것들과 유사한 알고리즘 영역 및 구축 블록 버튼들이 거래 애플리케이션의 다른 컴포넌트들에 통합될 수 있다. 예를 들면, 헤지 관리기 인터페이스는 유사한 특징들을 통합하도록 구성될 수 있어서, 알고리즘이 헤지 주문을 관리하도록 규정 및 지정될 수 있다.
상술된 거래 인터페이스(200) 및 거래 인터페이스(290)의 컴포넌트들, 엘리먼트들, 및/또는 기능은 홀로 또는, 예를 들면, 하드웨어, 펌웨어의 다양한 형태들과 조합하여, 및/또는 소프트웨어의 명령들의 세트로서 구현될 수 있다. 특정 실시예들은 범용 컴퓨터 또는 다른 처리 디바이스 상에서의 실행을 위해 메모리, 하드 디스크, CD-ROM, DVD, EPROM, 및/또는 파일 서버와 같은 컴퓨터-판독 가능 매체 상에 상주하는 명령들의 세트로서 제공될 수 있다.
III. Algo Design Lab
특정 실시예들은 알고리즘을 설계하기 위한 설계 캔버스 영역 및 블록들을 제공한다. 특정 실시예들은 알고리즘에서 사용하기 위한 복잡한 기능을 갖는 블록들을 제공한다. 특정 실시예들은 설계 캔버스 영역에 배치된 블록들을 그룹화하는 것을 제공한다. 특정 실시예들은 특정 이산 이벤트들을 처리하기 위해 알고리즘의 부분들의 동적인 예시화를 가능하게 하는 가상화된 그룹 블록들을 제공한다. 특정 실시예들은 단일의 거래 세션 동안에서조차 알고리즘의 로직 및 파라미터들 양자를 신속하게 조절하는 것을 허용한다. 특정 실시예들은 알고리즘이 설계됨에 따라 블록들에 대한 라이브 피드백을 제공한다. 특정 실시예들은 알고리즘이 설계될 때 잠재적인 에러들을 감소시키기 위한 안전한 특징들을 제공한다. 특정 실시예들은 클라이언트 디바이스와 알고리즘 서버 간의 접속이 파손될 때 알고리즘의 일부 또는 모든 부분들의 운영을 제공한다. 특정 실시예들은 신택스 에러들, 불명확한 로직, 및 사용자에 의한 프로그래밍 코드의 기록을 감소시키거나 제거함으로써 거래자에 의해 지정된 바와 같은 알고리즘을 비거래자 프로그래머가 개발할 필요성과 같은 통상적으로 프로그래밍된 알고리즘들의 위험성들을 감소시킨다. 특정 실시예들은 알고리즘을 모두 동시에 (실제 시장 데이터를 사용하여) 구축, 디버깅, 및 시뮬레이팅하기 위한 단일의 애플리케이션을 제공한다. 게다가, 단일의 애플리케이션은 또한 상기 알고리즘을 사용하여 주문들의 배치를 개시하는 것을 제공할 수 있다.
도 3a는 특정 실시예들이 사용될 수 있는 전자 거래 시스템(300)의 블록도를 예시한다. 시스템(300)은 하나 이상의 클라이언트 디바이스들(301), 하나 이상의 알고리즘 서버들(302), 및 하나 이상의 전자 교환기들(303)을 포함한다. 각각의 클라이언트 디바이스(301)는 하나 이상의 알고리즘 서버들(302)과 통신한다. 각각의 알고리즘 서버(302)는 하나 이상의 교환기들(303)과 통신한다. 또한, 특정 실시예들에서, 도 3a에 도시되지 않지만, 클라이언트 디바이스(301)는 또한 하나 이상의 교환기들(303)과 통신할 수 있다. 클라이언트 디바이스(301) 및/또는 알고리즘 서버(302)에 의한 교환기와의 통신은, 예를 들면, 상술된 게이트웨이(120)와 유사한 게이트웨이를 통해 이루어질 수 있다.
클라이언트 디바이스(301)는, 예를 들면, 상술된 클라이언트 디바이스(110)와 유사할 수 있다. 특정 실시예들에서, 클라이언트 디바이스(301)는 거래자 단말로서 지칭될 수 있다. 교환기(303)는, 예를 들면, 상술된 교환기(130)와 유사할 수 있다.
특정 실시예들에서, 알고리즘 서버(302)는 물리적으로 교환기(303) 근처에 또는 교환기(303)에 위치된다. 특정 실시예들에서, 알고리즘 서버(302)는 클라이언트 디바이스(301)의 일부분이다.
동작 시에, 전자 거래를 위한 알고리즘은 클라이언트 디바이스(301) 상에서 설계될 수 있다. 그후, 상기 알고리즘은 알고리즘 서버(302)로 통신될 수 있다. 알고리즘 서버(302)는 교환기(303)와 전자 거래를 수행하기 위해 상기 알고리즘을 실행한다. 시장 데이터는 알고리즘에 의한 사용을 위해 알고리즘 서버(302)에 의해 수신될 수 있다. 또한, 시장 데이터는 알고리즘 설계 시에 사용하기 위해 클라이언트 디바이스(301)에 의해 수신될 수 있다. 시장 데이터는, 예를 들면, 교환기(303)로부터 수신될 수 있다. 또 다른 예로서, 시장 데이터는 시뮬레이터로부터 또는 저장된 데이터/이력 데이터로부터 수신될 수 있다.
도 3b는 특정 실시예들에 따른 거래 인터페이스(310)를 예시한다. 거래 인터페이스(310)는 ADL(Algo Design Lab)로서 지칭되는 알고리즘 거래 애플리케이션에 대한 거래 인터페이스이다. ADL은 거래자가 전자 거래를 위한 알고리즘을 설계하도록 허용한다. 그러나, 예시된 거래 인터페이스(310)의 엘리먼트들이 다른 거래 인터페이스들에 통합될 수 있다는 것이 이해되어야 한다.
거래 인터페이스(310)는 설계 캔버스 영역(311), 블록 리스트 영역(312), 변수 영역(313), 및 제어 영역(314)을 포함한다. 특정 실시예들에서, 이러한 영역들 중 하나 이상의 영역은 개별적인 윈도우들 또는 툴바들 내에 존재할 수 있다. 예를 들면, 블록 리스트 영역(312)은 설계 캔버스 영역(311)으로부터 개별적인 윈도우 내에 있을 수 있다.
동작 시에, 알고리즘은 블록 리스트 영역(312)으로부터 하나 이상의 블록을 활용함으로써 설계 캔버스 영역(311)에 규정된다. 알고리즘 내의 사용자-규정 변수들에 대한 디폴트 값들은 변수 영역(313)을 사용하여 지정될 수 있다. 일단 알고리즘이 규정되면, 알고리즘은 어떻게 알고리즘의 로직이 행동할 것인지를 표시하기 위해 제어 영역(314) 내의 제어들을 사용하여 시뮬레이팅될 수 있다. 그후, 규정된 알고리즘에 따라 관리될 주문은 거래 인터페이스를 사용하여 개시될 수 있다.
설계 캔버스 영역(311)은 알고리즘을 규정하는 것을 제공한다. 설계 캔버스 영역(311)은 또한 화이트보드 영역으로서 지칭될 수 있다. 설계 캔버스 영역(311)은 알고리즘을 설계하기 위한 시각적인 프로그래밍 환경을 제공한다. 알고리즘을 설계하는 것은 구축, 테스팅, 시뮬레이팅, 및 알고리즘 평가를 포함한다.
특정 실시예들에서, 설계 캔버스 영역(311)은 거래 애플리케이션(310)을 위한 인터페이스의 주요 포커스이고, 예를 들면, 큰, 백색의 공간일 수 있다. 설계 캔버스 영역(311)에서, 블록들은 사용자의 선호도에 따라 배열될 수 있다. 특정 실시예들에서, 설계 캔버스 영역(311)은 블록들을 배열하는데 사용될 수 있는 그리드 라인들을 제공한다. 특정 실시예들에서, 설계 캔버스 영역(311)은 많은 블록들을 갖는 큰 알고리즘을 통해 내비게이팅하는데 사용될 수 있는 개관 디스플레이 또는 맵을 포함한다. 특정 실시예들에서, 설계 캔버스 영역(311)은 사용자가 한번에 더 많거나 더 적은 알고리즘을 볼 수 있도록 줌 인 또는 줌 아웃될 수 있다.
블록들은 설계 캔버스 영역(311)에 배치되고, 알고리즘을 규정하도록 접속된다. 배치될 블록들은 블록 리스트 영역(312)으로부터 선택될 수 있다. 일단 블록이 배치되면, 블록은 다른 배치된 블록들에 접속될 수 있다.
블록 리스트 영역(312)은 설계 캔버스 영역(311)에 배치되고 선택될 수 있는 하나 이상의 블록들을 포함한다. 블록들은 알고리즘을 구축하기 위해 사용자 선호도에 따라 조합될 수 있는 상이한 기능들을 나타낸다.
일반적으로, 블록들은 입력들 및 출력들을 갖는다. 그러나, 특정 블록들은 입력들만을 가질 수도 있고, 다른 블록들은 출력들만을 가질 수도 있다. 예를 들면, 중지 블록(pause block)은 입력만을 가질 수 있다. 또 다른 예로서, 수치 블록은 출력만을 가질 수 있다.
블록들의 입력들 및 출력들은 2 개의 주요 형태들: 연속 또는 이산 형태들 중 하나이다. 임의의 특정 시점에서 연속 형태 입력/출력은 (따라서 연속적인) 값을 갖는다. 이산 형태 입력/출력은 몇몇의 특정 시점에서 발생하는 특정 동작들/이벤트들에 대응하는 이산 이벤트들(개별적인 메시지들/오브젝트들)을 수신/제공한다. 특정 동작/이벤트가 발생할 때, 대응하는 이산 이벤트가 생성될 수 있다.
주요 형태의 입력/출력에 부가하여, 입력/출력은 특정 값 형태들을 가질 수 있다. 예를 들면, 연속적인 입력은 불 수, 정수, 부동 소숫점수(floating point number), 또는 기구의 값 형태를 가질 수 있다. 또 다른 예로서, 블록은 변수 값 형태의 2 개의 연속적인 입력들을 가질 수 있고, 여기서 2 개의 입력들에 대한 값 형태는, 예를 들면, 불 또는 수치적일 수 있지만, 매칭해야 한다. 2 개의 입력들을 취하고 입력들이 동일한지 여부를 표시하는 불을 출력하기 위해 2 개의 입력들을 비교하는 등호(equal) 블록은, 등호 블록이 예를 들면, 불들 또는 수치들 또는 기구들을 비교하는데 사용될 수 있도록 변수 입력들을 가질 수 있다. 또 다른 예로서, 이산 출력은 이행 확인의 값 형태를 가질 수 있다. 즉, 이산 출력은 이행 확인 이산 이벤트들을 제공할 수 있다. 또 다른 예로서, 이산 출력은 주문 요청 확인들(주문이 배치되었다는 것을 표시함), 이행 확인들(주문이 이행되었거나 부분적으로 이행되었다는 것을 표시함), 주문 변경 확인들(가격 또는 수량과 같은 작업중인 주문 파라미터들이 변경되었음을 표시함), 주문 삭제 확인들(작업중인 주문이 삭제되거나 취소되었음을 표시함), 또는 거래 확인들(거래가 발생함으로 표시함)과 같은 동작들을 위한 이산 이벤트의 2 개의 이상의 형태를 제공할 수 있다. 또 다른 예로서, 이산 이벤트는 그가 이벤트가 발생하였다는 것만을 표시한다는 점에서 비어있을 수 있다. 비어 있는 이산 이벤트는, 예를 들면, 타이머, 불 값에서의 변화에 의해 트리거링되거나, 특정 시간(가령, 예를 들면, 특정 시장 조건들이 충족되는 시간 또는 하루 중 시간)에 알고리즘의 부분을 활성화하는데 사용될 수 있다. 특정 형태의 이산 이벤트는 또 다른 형태의 이산 이벤트와 상이한 정보를 포함할 수 있다. 예를 들면, 주문 확인은 주문 식별자 및/또는 기구와 같은 정보를 포함할 수 있다. 또 다른 예로서, 이행 확인 이산 이벤트는 주문 식별자, 가격, 수량, 기구, 및/또는 이행의 시간과 같은 정보를 포함할 수 있다. 또 다른 예로서, 주문 삭제 확인은 주문 식별자, 기구, 및/또는 삭제의 시간을 포함할 수 있다. 또 다른 예로서, 비어 있는 이산 이벤트는 임의의 정보를 포함하지 않을 수 있다(또는 이벤트가 발생된 시간만을 포함할 수 있음). 이산 이벤트는 사용자-규정 정보를 포함할 수 있다. 예를 들면, 기구 A에 대한 이행된 주문에 대한 이산 이벤트 이행 확인은 기구 A에서 이행의 시간에서 기구 B에서 입찰 가격과 같은 사용자-규정 시장 정보를 포함할 수 있다.
특정 실시예들에서, 블록은 그의 입력들/출력들에 대한 주요 형태의 표시자들을 포함한다. 예를 들면, 연속적인 입력들/출력들은 특정 배경 컬러, 전경(foreground) 컬러, 배경 패턴, 경계 컬러, 경계 스타일, 형상, 심볼, 수치, 텍스트, 및/또는 폰트로 표시될 수 있고, 이산 입력들/출력들은 또 다른 컬러, 패턴, 경계, 형상, 심볼, 수치, 텍스트, 및/또는 폰트로 표시될 수 있다.
특정 실시예들에서, 블록은 그의 입력들/출력들에 대해 값 형태의 표시자들을 포함한다. 예를 들면, 특정 값 형태를 갖는 입력들/출력들은 특정 배경 컬러, 전경(foreground) 컬러, 배경 패턴, 경계 컬러, 경계 스타일, 형상, 심볼, 수치, 텍스트, 및/또는 폰트로 표시될 수 있고, 상이한 값 형태를 갖는 입력들/출력들은 또 다른 컬러, 패턴, 경계, 형상, 심볼, 수치, 텍스트, 및/또는 폰트로 표시될 수 있다.
특정 실시예들에서, 입력 또는 출력의 주요 형태 및/또는 값 형태는 커서가 블록 근처에 위치될 때 팝-업 윈도우에 디스플레이된다. 특정 실시예들에서, 블록의 구성에 관한 정보는 커서가 블록 근처에 위치될 때 팝-업 윈도우에 디스플레이된다.
블록들은 상이한 기능을 나타낸다. 거래 인터페이스(310)에서, 블록들은 기능의 4 개의 일반적인 카테고리들: 기본 블록들, 거래 블록들, 이산 블록들, 및 다양성(miscellaneous) 블록들로 분리된다. 그러나, 이러한 그룹들은 사용자에 의해 편의적인 조직화 및 활용을 위한 것이고, 블록들은 그룹화될 필요가 없고, 블록의 그룹은 특정 특정들을 필요로 하지 않는다. 일부 블록들은 2 개 이상의 카테고리에 적절히 적합할 수 있고, 블록들의 다른 조직화들 또는 그룹화들이 또한 사용될 수 있다.
기본 블록들은 일반적으로 연속적인 입력들 및 출력들을 갖고, 산술 연산자들(예를 들면, 합산, 감산, 승산, 및 제산), 논리 연산들(예를 들면, AND, OR 및 균등, 이상, 및 미만과 같은 비교), 상수값들(예를 들면, 수치 및 불), 및 if-then-else 구조들을 제공한다.
거래 블록들은 일반적으로 주문을 조작하는 것(예를 들면, 주문하기, 기존의 주문 변경, 또는 주문 삭제)에 관련된 더 복잡한 기능 또는 주문-관련 정보(예를 들면, 이행 확인)를 제공한다. 거래 블록들은 연속 및 이산 입력들 및 출력들 양자를 가질 수 있다. 예를 들면, 시장 메이커 블록은 기구, 가격, 수량, 및 주문의 견적을 내기 위한 조건을 지정하기 위한 연속적인 입력들을 가질 수 있고, 작업중인 수량의 연속적인 출력 및 이행들의 통지를 제공하기 위한 이산 출력을 가질 수 있다. 거래 블록들은 비프로그래머들(가령, 거래자들)을 포함하는 사용자들이 거래 알고리즘들을 생성 및 활용하기 위해 시각적인 설계 환경(가령, ADL에 의해 제공되는 것)을 사용하도록 허용한다. 거래 블록들은 다른 시각적인 프로그래밍 플랫폼들과 비교하여 더 적은 단계들 또는 명령들을 사용하여, 통상적인 프로그래머와 비교하여 알고리즘의 더 신속하고 정확한 설계를 허용할 수 있다.
이산 블록들은 일반적으로 이산 입력들 및 출력들을 갖고, 이산 이벤트들의 바생에 기초하여 동작들을 제공한다. 예를 들면, 생성기 블록은 이산 이벤트의 발생을 생성할 수 있다. 또 다른 예로서, 값 추출기 블록은 이산 이벤트로부터 값을 추출하고, 그 값이 알고리즘의 또 다른 부분에 대한 연속적인 값으로서 이용 가능하도록 할 수 있다. 또 다른 예로서, 시퀀서 블록은 이산 이벤트에 응답하여 후속 블록들이 처리되는 시퀀스를 제어하는데 사용될 수 있다. 특정 이산 블록들은 후속 시간에서 참조될 데이터를 저장할 수 있다. 예를 들면, 값 누산기 블록은 이산 이벤트를 수신하고, 이로부터 사용자-규정 값을 추출할 수 있다. 추출된 값은 각각의 수신된 이산 이벤트로부터 추출된 값들로 누산될 수 있다.
다양성 블록들은 상술된 카테고리들에 반드시 적합하지는 않을 수 있는 다양한 기능을 제공한다. 예를 들면, 이들 블록들은 특수 목적 또는 더 복잡한 계산들을 제공할 수 있거나, 알고리즘 자체의 실행에 부가적인 제어를 부가할 수 있다. 또한, 다양성 블록은 위험을 제어하고, 수치들을 거래 가능한 값들로 변환하거나, 입력 또는 변수로서 시간(정확한 시간 또는 경과된 시간)을 사용하기 위한 더 정밀한 툴들을 제공할 수 있다.
도 3c는 특정 실시예들에 따른 거래 인터페이스(310)에서 사용될 수 있는 블록들(320)의 예들을 예시한다. 상기 식별된 카테고리들 각각으로부터 예시적인 블록들이 예시된다. 예시적인 기본 블록은 합산 블록(321) 및 if-then-else 블록(322)을 포함한다. 예시적인 거래 블록들은 시장 메이커 블록(323), 조건분 구매/판매 블록(324), 및 주문 처리기 블록(325)을 포함한다. 예시적인 이산 블록들은 값 추출기 블록(326) 및 브랜치 블록(327)을 포함한다. 예시적인 다양성 블록들은 노트 블록(328) 및 중지 블록(329)을 포함한다. 특정 실시예들에 포함될 수 있는 블록들의 다른 예들과 함께, 이들 블록들 각각은 아래에 더욱 상세하게 논의된다.
기본 블록들은, 예를 들면, 합산, 감산, 승산, 및 제산, 초과, 미만, 이상, 및 이하, AND, OR, 등호, IF-THEN-ELSE, 수치, 불, 및 상수 블록들을 포함할 수 있다.
합산 블록은 하나의 연속적인 수치적 출력을 생성하기 위해 2 개의 연속적인 수치 입력들을 함께 합산할 수 있다. 합산 블록은 중앙에 플러스 심볼("+"), 좌측 상의 2 개의 연속적인 입력들, 및 우측 상의 하나의 연속적인 출력을 갖는 삼각형을 가질 수 있다. 합산 블록은 또한 합산기 블록으로서 지칭될 수 있다.
감산 블록은 하나의 연속적인 수치 출력을 생성하기 위해 제 2 연속적인 수치 입력(예를 들면, 상부 입력)으로부터 하나의 연속적인 수치 입력(예를 들면, 하부 입력)을 감산할 수 있다. 감산 블록은 중앙에 마이너스 심볼("-"), 좌측 상의 2 개의 연속적인 입력들, 및 우측 상의 하나의 연속적인 출력을 갖는 삼각형을 가질 수 있다.
승산 블록은 하나의 연속적인 수치 출력을 생성하기 위해 2 개의 연속적인 수치 입력들을 함께 승산할 수 있다. 승산 블록은 중앙에 마이너스 심볼("X" 또는 "*"), 좌측 상의 2 개의 연속적인 입력들, 및 우측 상의 하나의 연속적인 출력을 갖는 삼각형을 가질 수 있다.
제산 블록은 하나의 연속적인 수치 출력을 생성하기 위해 제 2 연속적인 수치 입력(예를 들면, 하부 입력)으로 하나의 연속적인 수치 입력(예를 들면, 상부 입력)을 제산할 수 있다. 제산 블록은 중앙에 마이너스 심볼("/" 또는 "÷"), 좌측 상의 2 개의 연속적인 입력들, 및 우측 상의 하나의 연속적인 출력을 갖는 삼각형을 가질 수 있다.
초과 블록(greater than block)은 하나의 입력(예를 들면, 상부 입력)이 제 2 입력(예를 들면, 하부 입력)보다 큰지를 결정하기 위해 2 개의 연속적인 수치 입력들을 비교할 수 있다. 출력은 제 1 입력이 제 2 입력보다 크고 모든 다른 조건들에 대해 거짓인 경우 참의 연속적인 불 출력이다. 초과 블록은 중앙에 초과 심볼(">"), 좌측 상의 2 개의 연속적인 수치 입력들, 및 우측 상의 하나의 연속적인 불 출력을 갖는 좌측 상의 직사각형 및 우측에 대해 아치형을 가질 수 있다.
미만 블록(less than block)은 하나의 출력(예를 들면, 상부 입력)이 제 2 입력(예를 들면, 하부 입력)보다 작은지를 결정하기 위해 2 개의 연속적인 수치 입력들을 비교할 수 있다. 출력은 제 1 입력이 제 2 입력보다 작고 모든 다른 조건들에 대해 거짓인 경우 참의 연속적인 불 출력이다. 미만 블록은 중앙에 미만 심볼("<"), 좌측 상의 2 개의 연속적인 수치 입력들, 및 우측 상의 하나의 연속적인 불 출력을 갖는 좌측 상의 직사각형 및 우측에 대해 아치형을 가질 수 있다.
이상 블록(greater than or equal block)은 하나의 입력(예를 들면, 상부 입력)이 제 2 입력(예를 들면, 하부 입력)보다 크거나 동일한지를 결정하기 위해 2 개의 연속적인 수치 입력들을 비교할 수 있다. 출력은 제 1 입력이 제 2 입력보다 크거나 동일하고 모든 다른 조건들에 대해 거짓인 경우 참의 연속적인 불 출력이다. 이상 블록은 중앙에 이상 심볼(">=" 또는 "≥"), 좌측 상의 2 개의 연속적인 수치 입력들, 및 우측 상의 하나의 연속적인 불 출력을 갖는 좌측 상의 직사각형 및 우측에 대해 아치형을 가질 수 있다.
이하 블록(less than or equal block)은 하나의 입력(예를 들면, 상부 입력)이 제 2 입력(예를 들면, 하부 입력)보다 작거나 동일한지를 결정하기 위해 2 개의 연속적인 수치 입력들을 비교할 수 있다. 출력은 제 1 입력이 제 2 입력보다 작거나 동일하고 모든 다른 조건들에 대해 거짓인 경우 참의 연속적인 불 출력이다. 이하 블록은 중앙에 이하 심볼("<=" 또는 "≤"), 좌측 상의 2 개의 연속적인 수치 입력들, 및 우측 상의 하나의 연속적인 불 출력을 갖는 좌측 상의 직사각형 및 우측에 대해 아치형을 가질 수 있다.
AND 블록은, 제 1 입력(예를 들면, 상부 입력)이 참이고 제 2 입력(예를 들면, 하부 입력)이 참인 경우 불 출력이 참이도록 2 개의 연속적인 불 입력들의 논리적 결합을 수행할 수 있다. 입력들 중 어느 하나가 거짓인 경우, 출력 값은 거짓이다. AND 블록은 중앙에 "AND" 텍스트, 좌측 상의 2 개의 연속적인 불 입력들, 및 우측 상의 하나의 연속적인 불 출력을 갖는 좌측 상의 직사각형 및 우측에 대해 아치형을 가질 수 있다.
OR 블록은, 입력들 중 어느 하나가 참인 경우, 불 출력이 참이도록 2 개의 연속적인 불 입력들의 논리적 분리(disjunction)를 수행할 수 있다. 입력들 양자가 거짓인 경우, 출력 값은 거짓이다. OR 블록은 중앙에 "OR" 텍스트, 좌측 상의 2 개의 연속적인 불 입력들, 및 우측 상의 하나의 연속적인 불 출력을 갖는 좌측 상의 직사각형 및 우측에 대해 아치형을 가질 수 있다.
등호 블록은 하나의 출력(예를 들면, 상부 입력)이 제 2 입력(예를 들면, 하부 입력)과 동일한지를 결정하기 위해 2 개의 연속적인 입력들을 비교할 수 있다. 입력들은, 각각의 입력이 동일한 형태인 경우 등호 블록들이 수치, 불, 또는 기구와 같은 값들을 수용할 수 있도록 변수 값 형태일 수 있다. 출력은 2 개의 입력들이 동일하고 모든 다른 조건들에 대해 거짓인 경우 참의 연속적인 불 출력이다. 등호 블록은 중앙에 등호 심볼("="), 좌측 상의 2 개의 연속적인 변수 입력들, 및 우측 상의 하나의 연속적인 불 출력을 갖는 좌측 상의 직사각형 및 우측에 대해 아치형을 가질 수 있다. 등호 블록은 또한 균등(equality) 블록으로서 지칭될 수 있다.
IF-THEN-ELSE 블록은 3 개의 연속적인 입력들: 불 IF 입력, 변수 THEN 입력, 및 변수 ELSE 입력을 가질 수 있다. IF-THEN-ELSE 블록은 하나의 연속적인 변수 출력을 갖는다. IF 입력 값이 참인 경우, 출력은 THEN 입력의 값이다. IF 입력 값이 거짓인 경우, 출력은 ELSE 입력의 값이다. IF-THEN-ELSE 블록은 중앙에 "?" 심볼, 좌측 상의 하나의 연속 불 IF 입력 및 2 개의 연속적인 변수 ELSE 및 THEN 입력들, 및 우측 상의 하나의 연속적인 변수 출력을 갖는 직사각형을 가질 수 있다.
숫자 블록은 사용자에 의해 지정된 수치 값을 제공하는 하나의 연속적인 수치 출력을 가질 수 있다. 배치될 때, 사용자는 숫자 블록에 대한 수치 값을 입력하도록 프롬프트될 수 있다. 대안적으로, 숫자 블록은 1과 같은 미리 규정된 값으로 디폴팅될 수 있다. 또한, 값은 주문 티켓 수량 또는 주문 티켓 가격으로 지정될 수 있다. 그렇다면, 숫자 블록의 값은 주문이 알고리즘을 사용하여 관리되도록 개시될 때 지정된 각각의 값일 것이다. 지정된 값은, 예를 들면, 숫자 블록을 선택하고 값을 입력하도록 프롬프트될 메뉴 아이템 또는 더블-클릭과 같은 동작을 사용함으로써 알고리즘의 설계 동안에 사용자에 의해 변경될 수 있다. 지정된 값은 또한, 숫자 블록이 변수로 지정되는 경우 후술되는 변수 영역(313)을 사용하여 변경될 수 있다. 숫자 블록은 중앙에 지정된 숫자 및 좌측 상의 하나의 연속적인 수치 출력을 갖는 원형을 가질 수 있다. 이러한 블록은 또한 상수 블록으로서 지칭될 수 있다.
불 블록은 사용자에 의해 지정된 불 값을 제공하는 하나의 연속적인 불 출력을 가질 수 있다. 배치될 때, 사용자는 불 블록에 대한 불 값을 입력하도록 프롬프트될 수 있다. 대안적으로 불 블록은 참과 같은 미리 규정된 값으로 디폴팅될 수 있다. 지정된 값은, 예를 들면, 불 블록을 선택하고 값을 입력하도록 프롬프트될 메뉴 아이템 또는 더블-클릭과 같은 동작을 사용함으로써 알고리즘의 설계 동안에 사용자에 의해 변경될 수 있다. 지정된 값은 또한, 불 블록이 변수로 지정되는 경우 후술되는 변수 영역(313)을 사용하여 변경될 수 있다. 불 블록은 중앙에 지정된 텍스트로 디스플레이되는 불 값 및 우측 상의 하나의 연속적인 불 출력을 갖는 원형을 가질 수 있다. 이러한 블록은 또한 상수 불 블록으로서 지칭될 수 있다.
특정 실시예들에서, 숫자 블록 및 불 블록은 상수 블록과 같은 단일의 블록으로 통합될 수 있다. 상수 블록은 사용자에 의해 지정된 값을 제공하는 하나의 연속적인 변수 출력을 가질 수 있다. 배치될 때, 사용자는 상수 블록에 대한 값 형태 및 값을 입력하도록 프롬프트될 수 있다. 대안적으로, 상수 블록은 수치와 같은 미리 규정된 값 형태 및 1과 같은 미리 규정된 값으로 디폴팅될 수 있다. 또한, 값은 주문 티켓 수량 또는 주문 티켓 가격으로 지정될 수 있다. 그렇다면, 상수 블록의 값은, 주문이 알고리즘을 사용하여 관리되도록 개시될 때 지정된 각각의 값일 것이다. 지정된 값은, 예를 들면, 상수 블록을 선택하고 값을 입력하도록 프롬프트될 메뉴 아이템 또는 더블-클릭과 같은 동작을 사용함으로써 알고리즘의 설계 동안에 사용자에 의해 변경될 수 있다. 지정된 값은 또한, 상수 블록이 변수로 지정되는 경우 후술되는 변수 영역(313)을 사용하여 변경될 수 있다. 상수 블록은 중앙에 텍스트로 디스플레이되는 지정된 값 및 우측 상의 하나의 연속적인 변수 출력을 갖는 원형을 가질 수 있다. 특정 실시예들에서, 상수 블록은 또한 후술되는 기구 블록과 유사하게 값에 대한 기구를 지정하는 것을 지원할 수 있다.
거래 블록들은, 예를 들면, 기구, 기구 속성, 시장 메이커, 레거(legger), 고객 스프레드(custom spread), 응답성 구매/판매, 조건부 구매/판매, 주문 처리기, IF-THEN-ESLE 기구, 가격에서의 기구 속성, 차액(spread between), 거래, 주문, 이행 계산기, 및 이행 누산기 블록들을 포함할 수 있다.
기구 블록은 기구 명칭을 제공하는 하나의 연속적인 기구 출력을 가질 수 있다. 기구 명칭은, 예를 들면, 교환기-리스트 기구 또는 합성 기구일 수 있다. 배치될 때, 사용자는 기구 블록에 대한 기구 명칭을 지정하도록 프롬프트될 수 있다. 기구 명칭은, 예를 들면, 리스트로부터 선택될 수 있다. 대안적으로, 기구 블록은 미리 규정된 값으로 디폴팅될 수 있다. 지정된 값은, 예를 들면, 기구 블록을 선택하고 값을 입력하도록 프롬프트될 메뉴 아이템 또는 더블-클릭과 같은 동작을 사용함으로써 알고리즘의 설계 동안에 사용자에 의해 변경될 수 있다. 지정된 값은 또한 기구 블록이 변수로 지정되는 경우 변수 영역(313)을 사용하여 변경될 수 있다.
기구 속성 블록은 연속적인 기구 입력 및 연속적인 수치 출력을 가질 수 있다. 기구 속성 블록은 기구 명칭을 취하고, 기구의 지정된 속성에 대한 값을 출력할 수 있다. 속성들은 최상의 입찰 수량, 최상의 입찰 가격, 최상의 매도 수량, 최상의 매도 가격, 부피, 세션 하이 가격, 세션 로우 가격, 최소 거래 가능 증분, 최종 거래 가격, 최종 거래 수량, 총 수량(거래가 새로운 가격에서 발생할 때까지, 최종 거래 가격에서 거래된 총 수량), 이전 거래 세션으로부터의 정산 가격, 실제(비암시된) 최상의 입찰 수량, 실제 (비암시된) 최상의 매도 수량, 입찰 인원수(최상의 입찰 가격에서 시장에서의 주문들의 수), 매도 인원수(최상의 매도 가격에서 시장에서의 주문들의 수), 또는 위치(특정 기구에서 사용자의 전체 재고)를 포함할 수 있다. 배치될 때, 사용자는 기구 속성 블록에 의해 제공될 속성을 입력하도록 프롬프트될 수 있다. 대안적으로, 기구 속성 블록은 입찰 수량과 같은 미리 규정된 값으로 디폴팅될 수 있다. 지정된 속성은, 예를 들면, 기구 속성 블록을 선택하고 속성을 입력하도록 프롬프트될 메뉴 아이템 또는 더블-클릭과 같은 동작을 사용함으로써 알고리즘의 설계 동안에 사용자에 의해 변경될 수 있다. 지정된 속성은 또한 기구 속성 블록이 변수로 지정되는 경우 후술되는 변수 영역(313)을 사용하여 변경될 수 있다.
시장 메이커 블록은, 조건 연속적인 불 입력이 참일 때, 2 개의 연속적인 수치 입력들에 의해 지정된 가격 및 수량에서 연속적인 기구 입력에 의해 지정된 거래 가능한 물건에 대한 구매 또는 판매 주문을 제출할 수 있다. 조건 입력은 선택적이고, 어떠한 입력도 제공되지 않는 경우 참으로 디폴팅된다. 시장 메이커 블록은 조건 입력이 거짓일 대 주문을 삭제할 수 있다. 시장 메이커 블록은 또한, 각각의 가격 및 수량 입력 값들이 변하는 경우 기존의 주문의 가격 또는 수량을 수정할 수 있다. 수량 입력에서 지정된 값은 이전 이행들을 고려하여 최대 원하는 이행 수량을 나타낸다. 예를 들면, 5의 수량 입력 값이 제공되면, 5에 대한 주문이 시장에 입력될 수 있고, 3의 수량이 이행되면, 가격 입력이 변할지라도 2의 주문이 계속해서 작동될 것이다. 수량 입력이 변하면, 작업되는 주문은 지정된 새로운 수량 마이너스 3의 이미 이행된 수량에 대한 것일 것이다. 시장 메이커 블록은 이행 확인 및/또는 주문 요청 이산 이벤트들을 제공하는 하나 이상의 이산 출력들을 제공할 수 있다. 시장 메이커 블록은, 알고리즘이 삭제, 중단, 정지, 또는 중지될지라도 시장 메이커 블록에 의해 생성된 주문들이 주문 북 내에 그대로 있어야 한다는 것을 지정하기 위한 옵션을 포함할 수 있다. 이러한 특징은, 예를 들면, 알고리즘들의 헤지 부분들에 대해 유용할 수 있다. 시장 메이커 블록은, 주문이 주문 북에서 디스플레이되는 동안 시장 메이커 블록에 의해 생성된 주문이 걸려있는 것으로 마킹된다는 것을 지정하기 위한 옵션을 포함할 수 있고, 이는 부적절하게 기능하거나 불완전한 알고리즘을 식별하는 것을 더 용이하게 할 수 있다(예를 들면, 주문들이 주문 북에 그대로 있는 것으로 예상되지 않는 경우). 또한, 시장 메이커 블록은, 예를 들면, 주문 윈도우에서 주문들을 더 용이하게 식별하게 하기 위해 시장 메이커 블록에 의해 배치된 주문들과 연관될 컬러 또는 텍스트 플래그를 지정하기 위한 옵션을 포함할 수 있다.
레거 블록은 고객 스프레드의 레그들의 거래 가능한 물건들에 대한 구매 또는 판매 주문들을 제출할 수 있고, 여기서 각각의 레그에 대한 거래 가능한 물건들은 연속적인 기구 입력에 의해 지정된다. 고객 스프레드에 대해 요구된 가격 및 수량은 2 개의 연속적인 수치 입력들에 의해 지정된다. 레거 블록은 조건 연속적인 불 입력이 참일 때 고객 스프레드에 대한 개별적인 주문(들)을 작동시킨다. 조건 입력은 선택적이고, 어떠한 입력도 제공되지 않는다면 참으로 디폴팅된다. 레거 블록은 조건 입력이 거짓일 때 주문(들)을 삭제할 수 있다. 레거 블록은 또한 가격 및/또는 수량 입력 값들이 변하는 경우 작업중인 주문(들)의 가격 및/또는 수량을 수정할 수 있다. 수량 입력에서 지정된 값은 이전 이행들을 고려하여 고객 스프레드의 최대 원하는 이행 수행을 나타낸다. 예를 들면, 5의 수량 입력 값이 제공되면, 5에 대한 주문이 시장에 입력될 수 있고, 3의 수량이 이행되면, 가격 입력이 변할지라도 2의 주문이 계속해서 작동될 것이다. 수량 입력이 변하면, 작업되는 주문은 지정된 새로운 수량 마이너스 3의 이미 이행된 수량에 대한 것일 것이다. 레거 블록은 스프레드 이행, 주문 요청, 및/또는 레그 이행 이산 이벤트들을 제공하는 하나 이상의 이산 출력들을 제공할 수 있다. 기구들이 스프레드의 레그들에 대해 제공된 후에, 레거는, 예를 들면, 레거 블록을 선택하고 파라미터들 및 설정들을 지정하도록 프롬프트될 메뉴 아이템 또는 더블-클릭과 같은 동작을 사용함으로써 구성될 수 있다. 스프레드의 각각의 레그에 대해 지정될 수 있는 파라미터들은 "배수(multiple)"(스프레드 레그의 계수), "거래 수량"(스프레드의 각각의 레그에 대한 수량, 여기서 양의 수는 구매이고, 음의 수는 판매임), "시장 작동?"(스프레드의 레그가 능동적으로 시세를 매기는지를 토글함), "순수 변화(net change)"(고객 스프레드 계산을 가격보다는 순수 변화로 변환할지를 토글함), "틱들을 지불(pay-up ticks)"(고객 스프레드가 기울어진 레그에 대해 제한 주문을 입력할 최소 가격 증분들의 수, 양의 수는 더 적극적인 이행을 의미하고, 음의 수는 덜 적극적인 이행을 의미함), 및 "기울어진 비율(lean ratio)"(예를 들면, 시세 레그 상에서 하나의 수량 단위를 작동시키기 위해 기울어진 레그 상에 존재하도록 요구된 수량 단위들, 이것은 2 개의 레그들 사이의 수량의 비율 또는 기울어진 레그의 임계치 수량일 수 있음)을 포함한다. 지정될 수 있는 설정들은 "사이드"(고객 스프레드를 구매 또는 판매), "내부 시장을 항상 작용"(참일 때, 레거 블록이 최상 또는 내부 시장 상에서 보이는 개별적인 레그 주문들만을 작동시킬 것이고, 특정 실시예들에서, 시장 입찰/매도 크기 비율들을 조사함으로써 결정된 바와 같이 아마도 이행될 레그만을 작동시킬 것이라는 것을 토글함), "'저격(sniping)' 모드 디스에이블"(레거 블록이 원하는 스프레드 가격을 성취할 수 있는 경우, 레거 블록이 현재 작업중인 주문들을 삭제하고, 원하는 스프레드 가격에서 이행될 모든 레그들에 대한 주문들을 동시에 제출할 것이라는 것을 디폴트 행동을 토글링함, 디스에이블될 때, 원하는 가격이 잠깐 이용 가능하게 될지라도 레거 블록은 지정된 "시장 작동?" 레그들만을 작동시킬 것임), "클립 크기"(제공된 스프레드 수량 입력에 의해 규정된 바와 같은 총 수량이 이행될 때까지 증분적으로 증가하는 하나의 시간에서 작업될 수량), 및 "플래그"(주문들을 더 용이하게 식별하게 하기 위해 스프레드 이행 이산 이벤트와 연관된 사용자-규정 플래그를 지정함)를 포함한다. 레거 블록은 알고리즘이 삭제, 중단, 정지, 또는 중지될지라도 레거 블록에 의해 생성된 주문들이 주문 북 내에 그대로 있어야 한다는 것을 지정하기 위한 옵션을 포함할 수 있다. 레거 블록은, 주문이 주문 북에서 디스플레이되는 동안 레거 블록에 의해 생성된 주문이 걸려있는 것으로 마킹된다는 것을 지정하기 위한 옵션을 포함할 수 있고, 이는 부적절하게 기능하거나 불완전한 알고리즘을 식별하는 것을 더 용이하게 할 수 있다(예를 들면, 주문들이 주문 북에 그대로 있는 것으로 예상되지 않는 경우). 또한, 레거 블록은, 예를 들면, 주문 윈도우에서 주문들을 더 용이하게 식별하게 하기 위해 레거 블록에 의해 배치된 주문들과 연관될 컬러 또는 텍스트 플래그를 지정하기 위한 옵션을 포함할 수 있다. 이러한 북은 또한 오토스프레딩 블록 또는 스프레더 블록으로서 지칭된다.
고객 스프레드 블록은 고객 스프레드의 레그들의 거래 가능한 물건들에 대한 구매 또는 판매 주문들을 제출할 수 있고, 여기서 고객 스프레드는 외부 애플리케이션으로부터 기구로서 제공된다. 고객 스프레드에 대해 요구된 가격 및 수량은 2 개의 연속적인 수치 입력들에 의해 지정된다. 고객 스프레드 블록은 조건 연속적인 불 입력이 참일 때 고객 스프레드에 대한 개별적인 주문(들)을 작동시킨다. 조건 입력은 선택적이고, 어떠한 입력도 제공되지 않는다면 참으로 디폴팅된다. 고객 스프레드 블록은 조건 입력이 거짓일 때 주문(들)을 삭제할 수 있다. 고객 스프레드 블록은 또한 가격 및/또는 수량 입력 값들이 변하는 경우 작업중인 주문(들)의 가격 및/또는 수량을 수정할 수 있다. 수량 입력에서 지정된 값은 이전 이행들을 고려하여 고객 스프레드의 최대 원하는 이행 수행을 나타낸다. 예를 들면, 5의 수량 입력 값이 제공되면, 5에 대한 주문이 시장에 입력될 수 있고, 3의 수량이 이행되면, 가격 입력이 변할지라도 2의 주문이 계속해서 작동될 것이다. 수량 입력이 변하면, 작업되는 주문은 지정된 새로운 수량 마이너스 3의 이미 이행된 수량에 대한 것일 것이다. 고객 스프레드 블록은 헤지 레그들 상에 제시될 원 주문 수량을 요구하는 대신에 개별적인 주문들의 레그들의 주문 수량들의 동적인 사이징을 가능하게 하기 위한 선택적인 불 입력을 포함할 수 있다. 고객 스프레드 블록은 이행 확인 및/또는 주문 요청 이산 이벤트들을 제공하는 하나 이상의 이산 출력들을 제공할 수 있다. 배치될 때, 사용자는 외부 애플리케이션으로부터의 고객 설계 기구를 지정하도록 프롬프트될 수 있고, 여기서 고객 설계 기구는 거래 전략을 나타내는 합성 시장 데이터를 제공한다. 대안적으로 지정된 고객 설계 기구는, 예를 들면, 고객 스프레드 블록을 선택하고 외부 애플리케이션으로부터의 고객 설계 기구를 지정하도록 프롬프트될 메뉴 아이템 또는 더블-클릭과 같은 동작을 사용함으로써 알고리즘의 설계 동안에 사용자에 의해 지정 및/또는 변경될 수 있다. 또한, 알고리즘의 설계 동안에, 사용자는 "'저격(sniping)' 모드 디스에이블"(고객 스프레드 블록이 원하는 스프레드 가격을 성취할 수 있는 경우, 고객 스프레드 블록이 현재 작업중인 주문들을 삭제하고, 원하는 스프레드 가격에서 이행될 모든 레그들에 대한 주문들을 동시에 제출할 것이라는 것을 디폴트 행동을 토글링함, 디스에이블될 때, 원하는 가격이 잠깐 이용 가능하게 될지라도 고객 스프레드 블록은 지정된 시세 레그들만을 작동시킬 것임) 및 "클립 크기"(제공된 스프레드 수량 입력에 의해 규정된 바와 같은 총 수량이 이행될 때까지 증분적으로 증가하는 하나의 시간에서 작업될 수량)를 포함할 수 있는 설정들을 지정할 수 있다. 고객 스프레드 블록은 알고리즘이 삭제, 중단, 정지, 또는 중지될지라도 레거 블록에 의해 생성된 주문들이 주문 북 내에 그대로 있어야 한다는 것을 지정하기 위한 옵션을 포함할 수 있다. 고객 스프레드 블록은, 주문이 주문 북에서 디스플레이되는 동안 고객 스프레드 블록에 의해 생성된 주문이 걸려있는 것으로 마킹된다는 것을 지정하기 위한 옵션을 포함할 수 있고, 이는 부적절하게 기능하거나 불완전한 알고리즘을 식별하는 것을 더 용이하게 할 수 있다(예를 들면, 주문들이 주문 북에 그대로 있는 것으로 예상되지 않는 경우). 또한, 고객 스프레드 블록은, 예를 들면, 주문 윈도우에서 주문들을 더 용이하게 식별하게 하기 위해 고객 스프레드 블록에 의해 배치된 주문들과 연관될 컬러 또는 텍스트 플래그를 지정하기 위한 옵션을 포함할 수 있다. 특정 실시예들에서, 고객 스프레드 블록은 연속적인 기구 출력으로서 외부 애플리케이션으로부터의 지정된 고객 설계 기구를 제공할 수 있다. 특정 실시예들에서, 고객 스프레드 블록은 연속적인 수치 또는 불 출력으로서 외부 애플리케이션으로부터의 지정된 수치 또는 불 값을 제공할 수 있다. 이러한 블록은 또한 고객 전략 블록 또는 고객 외부 애플리케이션 블록으로서 지칭될 수 있다.
응답성 구매/판매 블록은, 이산 이벤트가 이산 입력 상에서 수신될 때 연속적인 기구 입력에 의해 지정된 기구에 대한 구매 또는 판매 주문의 배치를 개시할 수 있다. 주문을 배치하기 위한 가격 및/또는 수량은 연속적인 수치 입력들에 의해 제공될 수 있다. 대안적으로 가격 및/또는 수량은, 사용될 각각의 가격 또는 수량 값을 결정하도록 평가된 사용자-규정 방정식들에 의해 지정될 수 있다. 특정 실시예들에서, 가격 및 수량 중 하나는 연속적인 수치 입력에 의해 제공될 수 있고, 다른 것은 사용자-규정 방정식을 평가함으로써 제공될 수 있다. 가격 및/또는 수량에 대한 지정된 방정식(들)(사용되는 경우)은, 예를 들면, 응답성 구매/판매 블록을 선택하고 방정식(들)을 입력하도록 프롬프트될 메뉴 아이템 또는 더블-클릭과 같은 동작을 사용함으로써 알고리즘의 설계 동안에 사용자에 의해 변경될 수 있다. 방정식은, 예를 들면, 상술된 구축 블록 버튼들(215)과 유사한 구축 블록 버튼들을 사용하거나 텍스트로 입력될 수 있다. 일단 응답성 구매/판매 블록이 주문의 배치를 개시하면, 주문은 제공된 가격 및/또는 수량 값들에서의 후속 변화들에 기초하여 업데이트되지 않는다. 응답성 구매/판매 블록은 알고리즘이 삭제, 중단, 정지, 또는 중지될지라도 응답성 구매/판매 블록에 의해 생성된 주문들이 주문 북 내에 그대로 있어야 한다는 것을 지정하기 위한 옵션을 포함할 수 있다. 응답성 구매/판매 블록은, 주문이 주문 북에서 디스플레이되는 동안 응답성 구매/판매 블록에 의해 생성된 주문이 걸려있는 것으로 마킹된다는 것을 지정하기 위한 옵션을 포함할 수 있고, 이는 부적절하게 기능하거나 불완전한 알고리즘을 식별하는 것을 더 용이하게 할 수 있다(예를 들면, 주문들이 주문 북에 그대로 있는 것으로 예상되지 않는 경우). 또한, 응답성 구매/판매 블록은, 예를 들면, 주문 윈도우에서 주문들을 더 용이하게 식별하게 하기 위해 응답성 구매/판매 블록에 의해 배치된 주문들과 연관될 컬러 또는 텍스트 플래그를 지정하기 위한 옵션을 포함할 수 있다.
조건부 구매/판매 블록은, 조건 연속적인 불 입력이 참일 때 2 개의 연속적인 수치 입력들에 의해 지정된 가격 및 수량에서 연속적인 기구 입력에 의해 지정된 기구에 대한 구매 또는 판매 주문의 배치를 개시할 수 있다. 조건 입력은 선택적이고, 어떠한 입력도 제공되지 않는 경우 참으로 디폴팅된다. 조건부 구매/판매 블록은 조건 입력 값이 거짓일 때 주문을 삭제하지 않는다(그러나, 주문의 배치는 조건 입력이 참이 될 때까지 개시되지 않음). 조건부 구매/판매 블록은 한번에 하나의 주문만을 제출할 수 있다. 특정 실시예들에서, 조건부 구매/판매 블록은, 주문들이 (예를 들면, 알고리즘 내의 또 다른 블록에 의해 또는 사용자에 의해 수동으로) 삭제될지라도 초기에 제공된 수량 값을 성취하려고 시도하기 위한 주문들(한번에 하나)을 계속해서 제출할 것이다. 일단 조건부 구매/판매 블록이 주문의 배치를 개시하면, 주문은 제공된 가격 및/또는 수량 값들에서의 후속 변화들에 기초하여 업데이트되지 않는다. 조건부 구매/판매 블록은 이행 확인 및/또는 주문 요청 이산 이벤트들을 제공하는 하나 이상의 이산 출력들을 제공할 수 있다. 조건부 구매/판매 블록은 알고리즘이 삭제, 중단, 정지, 또는 중지될지라도 조건부 구매/판매 블록에 의해 생성된 주문들이 주문 북 내에 그대로 있어야 한다는 것을 지정하기 위한 옵션을 포함할 수 있다. 조건부 구매/판매 블록은, 주문이 주문 북에서 디스플레이되는 동안 조건부 구매/판매 블록에 의해 생성된 주문이 걸려있는 것으로 마킹된다는 것을 지정하기 위한 옵션을 포함할 수 있고, 이는 부적절하게 기능하거나 불완전한 알고리즘을 식별하는 것을 더 용이하게 할 수 있다(예를 들면, 주문들이 주문 북에 그대로 있는 것으로 예상되지 않는 경우). 또한, 조건부 구매/판매 블록은, 예를 들면, 주문 윈도우에서 주문들을 더 용이하게 식별하게 하기 위해 조건부 구매/판매 블록에 의해 배치된 주문들과 연관될 컬러 또는 텍스트 플래그를 지정하기 위한 옵션을 포함할 수 있다.
주문 처리기 블록은 이산 입력 상에서 주문 이벤트를 수신하고, 2 개의 연속적인 수치 입력들에 의해 제공된 가격 및 수량 값들에 기초하여 대응하는 주문을 관리할 수 있다. 연속적인 불 입력 상에서 제공된 값이 참이면, 주문이 삭제된다. 주문 처리기 블록은 이행 확인, 삭제 확인, 및/또는 변경 확인 이산 이벤트들을 제공하는 하나 이상의 이산 출력들을 제공할 수 있다. 주문 처리기 블록은 작업중인 수량 및/또는 이행된 수량을 연속적인 수치 출력들 상에서 제공할 수 있다. 주문 처리기 블록은 알고리즘이 삭제, 중단, 정지, 또는 중지될지라도 주문 처리기 블록에 의해 관리되는 주문들이 주문 북 내에 그대로 있어야 한다는 것을 지정하기 위한 옵션을 포함할 수 있다.
IF-THEN-ELSE 기구 블록은 3 개의 연속적인 입력들: 불 IF 입력, 기구 THEN 입력, 및 기구 ELSE 입력을 가질 수 있다. IF-THEN-ELSE 기구 블록은 하나의 연속적인 기구 출력을 갖는다. IF 입력 값이 참이면, 출력은 THEN 입력의 기구 값이다. IF 입력 값이 거짓이면, 출력은 ELSE 입력의 기구 값이다. IF-THEN-ELSE 기구 블록은 중앙에 "?" 심볼, 좌측 상의 하나의 연속적인 불 IF 입력 및 2 개의 연속적인 기구 ELSE 및 THEN 입력들, 및 우측 상의 하나의 연속적인 기구 출력을 갖는 직사각형을 가질 수 있다. IF-THEN-ELSE 기구 블록은 기구 값들에 대해 특수화되지만, 상술된 IF-THEN-ELSE 블록과 유사하다.
가격 블록에서 기구 속성은 연속적인 기구 입력, 연속적인 수치 입력, 및 연속적인 수치 출력을 가질 수 있다. 가격 블록에서 기구 속성은 기구 명칭(연속적인 기구 입력에 의해 제공됨) 및 가격(연속적인 수치 입력에 의해 제공됨)을 취하고, 지정된 가격에서 기구의 지정된 속성에 대한 값을 출력할 수 있다. 속성들은 입찰 수량, 매도 수량, 실제(비암시된) 입찰 수량, 실제 (비암시된) 매도 수량, 입찰 인원수(지정된 가격에서 시장에서의 매도 주문들의 수), 및 매도 인원수(지정된 가격에서 시장에서의 매도 주문들의 수)를 포함할 수 있다. 배치될 때, 사용자는 가격 블록에서 기구 속성에 의해 제공될 속성을 입력하도록 프롬프트될 수 있다. 대안적으로, 가격 블록에서 기구 속성은 입찰 수량과 같은 미리 규정된 값으로 디폴팅될 수 있다. 지정된 속성은, 예를 들면, 가격 블록에서 기구 속성을 선택하고 속성을 입력하도록 프롬프트될 메뉴 아이템 또는 더블-클릭과 같은 동작을 사용함으로써 알고리즘의 설계 동안에 사용자에 의해 변경될 수 있다. 지정된 속성은 또한 가격 블록에서 기구 속성이 변수로 지정되는 경우 후술되는 변수 영역(313)을 사용하여 변경될 수 있다.
차액(spread between) 블록은 2 개의 연속적인 기구 입력들 및 2 개의 연속적인 기구 출력을 가질 수 있다. 차액 블록은 2 개의 기구 명칭들(예를 들면, 하나는 "프론트 레그" 입력이고, 다른 것은 "백 레그" 입력임)을 취하고, 2 개의 제공된 기구들(예를 들면, "프론트 레그-백 레그")의 교환기 리스트 스프레드에 대응하는 기구 명칭을 출력할 수 있다. 예를 들면, 차액 블록은 "CLZ0"(December Crude 2010) 및 "CLF1"(Jan Crude 2011)과 같은 2 개의 상이한 기구들 사이의 차액을 참조하는데 사용될 수 있다. 이러한 "레그들"은 "프론트 레그" 및 "백 레그"으로서 각각 지칭될 수 있다. 차액 블록의 대응하는 출력은 교환기 리스트 스프레드 기구, 본 예에서, 교환기 리스트 기구 "CLZ0-CLF1"(12월 2010-1월 2011 스프레드 시장)이다. 이러한 블록은 기구들 사이의 차액들을 정확히 참조하는 프로세스에서의 에러들을 감소시키기 위한 프로그래밍 안정성을 개선하는데 사용될 수 있다. 예를 들면, 2 개의 입력 기구들은, 알고리즘이 알고리즘에 의해 관리되는 상이한 주문들에 대한 상이한 교환기 리스트 스프레드들로 지정되거나 실행될 때 변경될 수 있는 변수들로서 표기될 수 있다. 차액 블록은, 2 개의 개별적인 기구 변수들을 매칭하도록 설정 또는 변경될 제 3 변수를 필요로 하지 않고 "정확한" 리스트 스프레드 기구를 발견함으로써 안정성을 제공한다. 차액 블록은 또한 특정 교환기 리스트 스프레드들의 존재의 위치를 결정하거나 검색하는데 사용될 수 있다.
거래 블록은 연속적인 기구 입력 상에서 제공된 기구에 대한 이산 이벤트 출력 상에서 이산 이벤트들의 거래 데이터를 제공할 수 있다. 이산 이벤트들은 각각의 거래와 연관된 거래 가격 및 거래 수량 값들을 포함한다. 거래 데이터는, 예를 들면, 교환기로부터 수신될 수 있다. 거래 가격 및 거래 수량은, 예를 들면, 값 추출기 블록, 값 누산기 블록, 이산 최소 블록, 및/또는 이산 최대 블록에 의해 이산 이벤트들로부터 추출될 수 있다.
주문 블록은 기존의 주문(즉, 알고리즘의 외부에서 이미 배치되고 또 다른 알고리즘에 의해 관리되지 않는 주문)이 규정된 알고리즘에 따라 관리되도록 허용할 수 있다. 예를 들면, 주문 블록은 사용자에 의해 수동으로 배치된 제한 주문들에 대한 특정 형태들의 자동-헤지 루틴들을 제공하는데 사용될 수 있다. 주문 블록은 기존 주문에 대한 기구의 연속적인 기구 출력 및 기존 주문에 대한 수량, 가격 및 실행된 수량에 대한 연속적인 수치 출력들을 제공한다. 주문 블록은 또한 이행 확인들과 같이 주문에 관련된 주문 이산 이벤트들에 대한 이산 출력을 제공한다. 특정 실시예들에서, 규정된 알고리즘이 주문 블록을 포함하면, 규정된 알고리즘은, 예를 들면, 주문 윈도우를 포함하는 거래 인터페이스에서 기존의 주문에 적용될 이용 가능한 알고리즘들의 리스트에 제공될 수 있다. 또 다른 예로서, 주문 식별자는, 알고리즘이 주문 블록 자체에서 실행 또는 지정될 때 알고리즘에 대한 변수로서 제공될 수 있다. 기존의 주문에 적용될 때, 주문 블록을 포함하는 규정된 알고리즘은 상기 알고리즘에 따라 주문을 관리할 수 있다.
이행 계산기 블록은 스프레드 이행 이산 이벤트들에 대한 이산 출력을 제공할 수 있다. 이행 계산기 블록은, 알고리즘이 레거 블록 또 고객 스프레드 블록을 사용하지 않고 고객 스프레드를 구매/판매할 때 사용될 수 있다. 이행 계산기 블록은 다수의 연속적인 기구 입력들 및 스프레드의 각각의 거래 실행(이행) 레그에 대한 이산 입력을 수신하고, 전자는 레그들에 대한 기구들을 제공하고, 후자는 이행 확인들에 대한 이산 이벤트들을 제공한다. 기구들이 스프레드의 레그들에 대해 제공된 후에, 이행 계산기 블록은, 예를 들면, 이행 계산기 블록을 선택하고 파라미터들 및 설정들을 지정하도록 프롬프트될 메뉴 아이템 또는 더블-클릭과 같은 동작을 사용함으로써 구성될 수 있다. 스프레드의 각각의 레그에 대해 지정될 수 있는 파라미터들은 "배수(multiple)"(스프레드 레그의 계수), "거래 수량"(스프레드의 각각의 레그에 대한 수량, 여기서 양의 수는 구매이고, 음의 수는 판매임), 및 "순수 변화(net change)"(고객 스프레드 계산을 가격보다는 순수 변화로 변환할지를 토글함)를 포함한다. 지정될 수 있는 설정들은 "사이드"(이행 계산기에 대한 고객 스프레드를 구매 또는 판매), 및 "플래그"(주문들을 더 용이하게 식별하게 하기 위해 스프레드 이행 이산 이벤트와 연관된 사용자-규정 플래그를 지정함)를 포함한다.
누산기 블록은 이산 입력 상에서 주문 또는 이행 이산 이벤트를 수신하고, 수신된 이산 이벤트들에 대한 누산된 수량을 연속적인 수치 출력 상에서 제공할 수 있다. 예를 들면, 누산기 블록이 시장 메이커 블록에 접속되면, 누산기 블록은 시장 메이커 블록으로부터 수신된 각각의 부분적인 이행 이산 이벤트에 대한 그의 연속적인 수치 출력의 값을 증가시킬 수 있다. 이러한 블록은, 예를 들면, 이행들의 총수의 트랙을 유지하는데 사용될 수 있다. 누산기 블록은, 수신된 각각의 이산 이벤트가 대응하는 이산 출력을 통해 통과되도록 관통 블록일 수 있다. 누산기 블록은, 이벤트 수신 시에, 누산된 수량을 0으로 리셋할 리셋 이산 입력을 포함할 수 있다. 누산기 블록은, 그가 이행된 수량만을 누산하기 때문에 더 제한된 기능을 갖지만 후술되는 값 누산기 블록과 유사할 수 있다.
이산 블록들은, 예를 들면, 생성기, 값 추출기, 값 누산기, 값 버킷(bucket), 이산 이동 평균, 상태, 브랜치, 다중화기, 퍼넬(funnel), 시퀀서, 이산 최소, 및 이산 최대 블록들을 포함할 수 있다.
생성기 블록은 조건이 참일 때마다 이산 출력 상에서 이산 이벤트를 제공할 수 있다. 조건 입력이 참이 될 때마다, 이벤트가 생성되도록 조건이 연속적인 불 입력에 의해 제공될 수 있다. 대안적으로, 조건은 "on start"(알고리즘이 시작될 때 조건이 참이고, 이후에 알고리즘이 시작될 때 단일 이산 이벤트가 제공되도록 조건이 거짓임), "on change"(참으로부터 거짓으로 또는 거짓으로부터 참으로 가는 것이 이산 이벤트를 생성하도록 연속적인 불 입력 값이 변할 때다 조건이 참임), "every X"(일단 각각의 시간 간격이 지정되면, 조건은 참이고, 간격은 분, 초 또는 밀리초로 지정될 수 있음)와 같은 이벤트이도록 지정될 수 있다.
값 추출기 블록은 이산 입력 상에서 이산 이벤트를 수신하고, 이벤트로부터 사용자-규정 값을 추출할 수 있다. 대안적으로, 이산 이벤트가 수신될 때, 값 추출 블록은 추출된 값을 결정하기 위해 사용자-규정 방정식을 평가하다. 그후, 추출된 값은 연속 출력을 상에서 제공된다. 출력의 값 형태는 추출된 값의 형태에 의존한다. 다음의 표현들: "기구"(이산 이벤트와 연관된 기구를 제공함), "이행 가격"(이산 이벤트와 연관된 이행 가격을 제공함), "이행 수량"(이산 이벤트와 연관된 이행 수량을 제공함), "주문 수량"(이산 이벤트와 연관된 주문 수량을 제공함), "주문 가격"(이산 이벤트와 연관된 주문 가격을 제공함), "실행된 수량"(주문 수량과 관련하여 이행들의 누산을 제공함), "작업중인 수량"(특정 주문 가격에서 비실행된 주문 수량의 누산을 제공함), "거래 수량"(교환기에서 실행된 거래의 수량을 제공함), "거래 가격"(교환기에서 실행된 거래의 가격을 제공함), 및 "변수"(가상화된 그룹 블록의 일부분이 아닌 알고리즘 내의 임의의 다른 블록 출력의 값 또는 지정된 사용자-규정 변수의 값을 제공함)는 이산 이벤트로부터 추출될 값을 지정하는데 사용하기 위해 이용 가능할 수 있다. 특정 실시예들에서, 값 추출기 블록은 또 다른 블록의 출력을 참조할 수 있다. 값은 후술되는 "변수" 표현을 사용하여 참조될 수 있거나, 값은 예를 들면, 값 추출기 블록의 연속적인 변수 입력에 제공될 수 있다. 값 추출기 블록은 관통 블록일 수 있어서, 수신된 각각의 이산 이벤트는 대응하는 이산 출력을 통해 통과된다.
값 누산기 블록은 이산 출력 상에서 이산 이벤트를 수신하고, 각각의 이산 이벤트가 수신됨에 따라 값을 누산하기 위해 이벤트로부터 사용자-지정 값을 추출할 수 있다. 누산된 값은 연속적인 수치 출력 상에서 제공된다. 다음의 표현들: "이행 가격"(이산 이벤트와 연관된 이행 가격을 제공함), "이행 수량"(이산 이벤트와 연관된 이행 수량을 제공함), "주문 수량"(이산 이벤트와 연관된 주문 수량을 제공함), "주문 가격"(이산 이벤트와 연관된 주문 가격을 제공함), "실행된 수량"(주문 수량과 관련하여 이행들의 누산을 제공함), "작업중인 수량"(특정 주문 가격에서 비실행된 주문 수량의 누산을 제공함), "거래 수량"(교환기에서 실행된 거래의 수량을 제공함), "거래 가격"(교환기에서 실행된 거래의 가격을 제공함), 및 "변수"(가상화된 그룹 블록의 일부분이 아닌 알고리즘 내의 임의의 다른 블록 출력의 값 또는 지정된 사용자-규정 변수의 값을 제공함)는 이산 이벤트로부터 추출될 가격을 지정하는데 사용하기 위해 이용 가능할 수 있다. 값 누산기 블록은 관통 블록일 수 있어서, 수신된 각각의 이산 이벤트는 대응하는 이산 출력을 통해 통과된다. 이벤트 수신 시에, 값 누산기 블록은 누산된 수량을 0으로 리셋할 리셋 이산 입력을 포함할 수 있다. 값 누산기 블록은, 어떠한 값이 누산되는 더 유연한 구성을 지원하지만 상술된 누산기 블록과 유사할 수 있다.
값 버킷 블록은 키-값 쌍들의 표를 생성하는 것을 제공할 수 있다. 표는, 예를 들면, 해시 표(hash table)일 수 있다. 값 버킷 블록의 표에 대한 키는 버킷 홀(bucket hole)로서 지칭된다. 특정 버킷 홀(즉, 표의 키)에 대응하는 표에 대한 값은 버킷 값으로서 지칭된다. 값 버킷 블록은 이산 입력 상에서 이산 이벤트를 수신한다. 이산 이벤트가 수신될 때, 버킷 홀에 대한 사용자-규정 방정식은 표 내의 적절한 엔트리를 결정하도록 평가된다. 그후, 버킷 값에 대한 사용자-규정 방정식은 결정된 버킷 홀에 대응하는 표 내의 엔트리에 대한 새로운 버킷 값을 결정하도록 평가된다. 후술되는 바와 같이, 그후, 새로운 버킷 값은 이전 버킷 값과 조합되거나 이전 버킷 값을 대체할 수 있다. 배치될 때, 사용자는 버킷 홀 및 버킷 값에 대한 방정식들을 입력하도록 프롬프트될 수 있다. 대안적으로, 값 버킷 블록은 "0"의 버킷 홀 및 "0"의 버킷 값과 같이 미리 규정된 방정식들로 디폴팅될 수 있다. 지정된 방정식들은, 예를 들면, 값 버킷 블록을 선택하고 버킷 홀 및 버킷 값 방정식들 중 하나 또는 양자를 입력하도록 프롬프트될 메뉴 아이템 또는 더블-클릭과 같은 동작을 사용함으로써 알고리즘의 설계 동안에 사용자에 의해 변경될 수 있다. 방정식들은, 예를 들면, 상술된 구축 블록 버튼들(215)과 유사한 구축 블록 버튼들을 사용하거나 텍스트로 입력될 수 있다. 방정식들(구축 블록 버튼들에 의해 제공될 수 있음)을 지정하는데 사용하기 위해 이용 가능한 표현들은 "기구"(이산 이벤트와 연관된 기구를 제공함), "이행 가격"(이산 이벤트와 연관된 이행 가격을 제공함), "이행 수량"(이산 이벤트와 연관된 이행 수량을 제공함), "주문 수량"(이산 이벤트와 연관된 주문 수량을 제공함), "주문 가격"(이산 이벤트와 연관된 주문 가격을 제공함), "실행된 수량"(주문 수량과 관련하여 이행들의 누산을 제공함), "작업중인 수량"(특정 주문 가격에서 비실행된 주문 수량의 누산을 제공함), "거래 수량"(교환기에서 실행된 거래의 수량을 제공함), "거래 가격"(교환기에서 실행된 거래의 가격을 제공함), 및 "변수"(가상화된 그룹 블록의 일부분이 아닌 알고리즘 내의 임의의 다른 블록 출력의 값 또는 지정된 사용자-규정 변수의 값을 제공함)를 포함할 수 있다. 값 버킷 방정식을 지정하는 것의 일부분으로서, 사용자는 또한 새로운 버킷 값이 이전 버킷 값과 조합되는 방법을 구성할 수 있다. 예를 들면, 새로운 버킷 값은 이전 버킷 값에 합산될 수 있다(각각의 수신된 이산 이벤트에 대한 동일한 버킷 홀에 대해 결정된 버킷 값들의 합산을 제공함). 또 다른 예로서, 동일한 버킷 홀에 대해 결정된 버킷 홀들의 평균이 결정될 수 있다. 또 다른 예로서, 새로운 버킷 값은 이전 버킷 값을 대체할 수 있다(특정 버킷 홀에 대한 버킷 값으로서 가장 최근의 값을 제공함). 값 버킷 블록은, 예를 들면, 특정 버킷 홀에 대한 버킷 값들을 합산하는 것으로 디폴팅될 수 있다. 값 버킷 블록은 관통 블록일 수 있어서, 수신된 각각의 이산 이벤트가 대응하는 이산 출력을 통해 통과된다. 값 버킷 블록은 또한, 제공된 버킷 홀에 대한 대응하는 버킷 값이 값 연속적인 수치 출력 상에서 제공되도록 버킷 홀로서 사용될 값을 제공하는 홀 연속적인 수치 입력을 가질 수 있다. 값 버킷 블록은, 이벤트 수신 시에, 저장된 표를 리셋할 리셋 이산 입력을 포함할 수 있다.
이산 이동 평균 블록은 이산 이벤트가 이산 입력에서 수신될 때마다 지정된 사용자-규정 방정식을 평가함으로써 결정된 값에 대한 이동 평균을 제공할 수 있다. 이동 평균을 결정하는데 사용될 데이터 포인트들의 수는 연속적인 수치 입력에 의해 지정된다. 이동 평균은 연속적인 수치 출력에 제공된다. 이상 이동 평균 블록은 대응하는 입력에 의해 지정된 데이터 포인트들의 수가 도달될 때까지 평가된 데이터 포인트들의 리스트를 유지할 수 있고, 이 시점에서, 최신의 데이터 포인트가 리스트에 부가될 수 있고, 가장 오래된 것이 리스트로부터 제거되고, 이동 평균은 리스트 내의 데이터 포인트들에 걸쳐 계산된다. 배치될 때, 사용자는 평가될 방정식을 입력하도록 프롬프트될 수 있다. 대안적으로 이상 이동 평균 블록은 방정식에 대해 0과 같은 미리 규정된 값으로 디폴팅될 수 있다. 지정된 방정식은, 예를 들면, 이산 이동 평균 블록을 선택하고 방정식을 입력하도록 프롬프트될 메뉴 아이템 또는 더블-클릭과 같은 동작을 사용함으로써 알고리즘의 설계 동안에 사용자에 의해 변경될 수 있다. 방정식은, 예를 들면, 상술된 구축 블록 버튼들(215)과 유사한 구축 블록 버튼들을 사용하거나 텍스트로 입력될 수 있다. 방정식(구축 블록 버튼들에 의해 제공될 수 있음)을 지정하는데 사용하기 위해 이용 가능한 표현들은 "기구"(이산 이벤트와 연관된 기구를 제공함), "이행 가격"(이산 이벤트와 연관된 이행 가격을 제공함), "이행 수량"(이산 이벤트와 연관된 이행 수량을 제공함), "주문 수량"(이산 이벤트와 연관된 주문 수량을 제공함), "주문 가격"(이산 이벤트와 연관된 주문 가격을 제공함), "실행된 수량"(주문 수량과 관련하여 이행들의 누산을 제공함), "작업중인 수량"(특정 주문 가격에서 비실행된 주문 수량의 누산을 제공함), "거래 수량"(교환기에서 실행된 거래의 수량을 제공함), "거래 가격"(교환기에서 실행된 거래의 가격을 제공함), 및 "변수"(가상화된 그룹 블록의 일부분이 아닌 알고리즘 내의 임의의 다른 블록 출력의 값 또는 지정된 사용자-규정 변수의 값을 제공함)를 포함할 수 있다. 이산 이동 평균 블록은 또한 리셋 입력인 이산 입력을 취할 수 있다. 이산 이벤트가 리셋 입력에 의해 수신될 때, 기록된 데이터 포인트들은 제거된다. 이것은 0 또는 "NaN(Not a Number)"인 이동 평균 출력을 발생시킬 수 있다. 이산 이동 평균 블록은 또한 충분한 수의 데이터 포인트들이 이동 평균을 완전히 계산하도록 기록되는지를 표시하는 OK 연속적인 불 출력을 제공할 수 있다. OK 출력은 요구된 수의 데이터 포인트들이 기록될 때까지 거짓이고, 이후에(리셋 때까지) 참이다. 예를 들면, 데이터 포인트들의 수 입력이 20의 값을 제공하면, 20 개의 데이터 포인트들(즉, 지정된 방정식의 20 개의 평가들, 각각은 이산 이벤트의 수신에 의해 트리거링됨)은 OK 출력이 참이 되기 전에 기록될 필요가 있을 것이다. 이산 이동 평균 블록은 또한 기록된 데이터 포인트들의 수를 표시하는 데이터 포인트들의 수 연속적인 수치 출력을 제공할 수 있다. 이산 이동 평균 블록은 관통 블록일 수 있어서, 수신된 각각의 이산 이벤트는 대응하는 이산 출력을 통해 통과된다.
상태 블록은 이산 입력 상에서 이산 이벤트를 수신하고, 이산 이벤트가 이산 출력 상에 제공되어야 하는지를 결정하기 위해 각각의 이산 출력에 대해 조건을 평가한다. 상태 블록은, 예를 들면, 유한 수의 상태들, 이들 상태 간의 전이들, 및 동작들로 구성된 거동의 모델인 상태 머신을 설계하는데 사용될 수 있다. 다수의 상태 블록들은 "흐름" 그래프와 유사하게 함께 링크될 수 있고, 상기 그래프에서 사용자는 특정 조건들이 충족될 대 로직이 실행되는 방법을 검사할 수 있다. 현재 상태가 과거 상태들에 의해 결정되기 때문에, 상태 블록은 근본적으로 과거에 관한 정보를 기록할 수 있다. 전이는 상태 변화를 나타내고, 전이를 가능하게 하도록 이행될 필요가 있는 조건에 의해 기술된다. 상태 블록은 출구 동작 및 전이를 규정하는 조건을 규정하도록 허용한다. 예를 들면, 상이한 상태 전이에 각각 대응하는 2 개의 이산 출력들을 제공하는 상태 블록에서, 사용자는 각각에 대한 조건을 지정한다. 이산 이벤트가 수신된 후에, 상태 블록은 각각의 전이와 연관된 조건들 중 하나 이상이 참이 되기를 기다린다(이산 이벤트가 수신될 때, 어떠한 조건들도 참이 아닌 경우). 특정 상태 전이와 연관된 조건이 참으로 평가할 때, 상태 블록은 특정 상태 전이와 연관된 출력 상에 이산 이벤트(그가 수신된 이후로 개최됨)를 제공한다. 조건은 연속적인 불 입력 상에서 제공될 수 있다. 대안적으로 조건은 불 값으로 평가하는 지정된 사용자-규정 방정식에 의해 제공될 수 있다. 지정된 방정식은, 예를 들면, 상태 블록을 선택하고 방정식을 입력하도록 프롬프트될 메뉴 아이템 또는 더블-클릭과 같은 동작을 사용함으로써 알고리즘의 설계 동안에 사용자에 의해 변경될 수 있다. 방정식은, 예를 들면, 상술된 구축 블록 버튼들(215)과 유사한 구축 블록 버튼들을 사용하거나 텍스트로 입력될 수 있다. 상태 블록은, 낮지 않은 가격들에서 다수의 연속적인 거래들이 존재하는 경우와 같이 시장에서 사용자 규정 패턴을 평가하는데 사용될 수 있다. 이러한 신호들은, 예를 들면, 시장 메이커 블록과 같은 거래 블록에 대한 조건부 입력으로서 사용될 수 있다. 또한, 상태 블록은, 예를 들면, 이산 이벤트가 구매 또는 판매 메시지인지와 같은 정보를 평가할 수 있다. 방정식(구축 블록 버튼들에 의해 제공될 수 있음)을 지정하는데 사용하기 위해 이용 가능한 표현들은 "기구"(이산 이벤트와 연관된 기구를 제공함), "이행 가격"(이산 이벤트와 연관된 이행 가격을 제공함), "이행 수량"(이산 이벤트와 연관된 이행 수량을 제공함), "주문 수량"(이산 이벤트와 연관된 주문 수량을 제공함), "주문 가격"(이산 이벤트와 연관된 주문 가격을 제공함), "실행된 수량"(주문 수량과 관련하여 이행들의 누산을 제공함), "작업중인 수량"(특정 주문 가격에서 비실행된 주문 수량의 누산을 제공함), "거래 수량"(교환기에서 실행된 거래의 수량을 제공함), "거래 가격"(교환기에서 실행된 거래의 가격을 제공함), 및 "변수"(가상화된 그룹 블록의 일부분이 아닌 알고리즘 내의 임의의 다른 블록 출력의 값 또는 지정된 사용자-규정 변수의 값을 제공함)를 포함할 수 있다.
브랜치 블록은 이산 입력 상에서 이벤트를 수신하고 조건을 평가할 수 있다. 조건이 참이면, 이산 이벤트는 제 1 이산 출력("예" 경로) 상에서 제공될 것이고, 조건이 거짓이면, 이산 이벤트는 제 2 이산 출력("아니오" 경로) 상에서 제공될 것이다. 조건은 연속적인 불 입력 상에 제공될 수 있다. 대안적으로, 조건은 불 값으로 평가하는 지정된 사용자-규정 방정식에 의해 제공될 수 있다. 지정된 방정식은, 예를 들면, 브랜치 블록을 선택하고 방정식을 입력하도록 프롬프트될 메뉴 아이템 또는 더블-클릭과 같은 동작을 사용함으로써 알고리즘의 설계 동안에 사용자에 의해 변경될 수 있다. 방정식은, 예를 들면, 상술된 구축 블록 버튼들(215)과 유사한 구축 블록 버튼들을 사용하거나 텍스트로 입력될 수 있다. 브랜치 블록은, 예를 들면, 이산 이벤트가 구매 또는 판매 이행 이벤트인지를 평가하는데 사용될 수 있다. "구매?" 구축 블록 버튼은 그러한 방정식을 구축하는데 사용될 수 있다. 방정식(구축 블록 버튼들에 의해 제공될 수 있음)을 지정하는데 사용하기 위해 이용 가능한 표현들은 "기구"(이산 이벤트와 연관된 기구를 제공함), "이행 가격"(이산 이벤트와 연관된 이행 가격을 제공함), "이행 수량"(이산 이벤트와 연관된 이행 수량을 제공함), "주문 수량"(이산 이벤트와 연관된 주문 수량을 제공함), "주문 가격"(이산 이벤트와 연관된 주문 가격을 제공함), "실행된 수량"(주문 수량과 관련하여 이행들의 누산을 제공함), "작업중인 수량"(특정 주문 가격에서 비실행된 주문 수량의 누산을 제공함), "거래 수량"(교환기에서 실행된 거래의 수량을 제공함), "거래 가격"(교환기에서 실행된 거래의 가격을 제공함), 및 "변수"(가상화된 그룹 블록의 일부분이 아닌 알고리즘 내의 임의의 다른 블록 출력의 값 또는 지정된 사용자-규정 변수의 값을 제공함)를 포함할 수 있다.
다중화기 블록은 이산 입력 상에서 이산 이벤트를 수신하고, 특정 이상 출력 상에 이산 이벤트를 제공할 수 있다. 예를 들면, 다중화기 블록은 주문 처리기 블록으로부터 이산 이벤트를 수신하고, 이산 이벤트의 형태(예를 들면, 이행, 변경, 또는 삭제)에 기초하여, 다중화기 블록의 적절한 이산 출력 상에 이산 이벤트를 제공할 수 있다. 배치될 때, 사용자는 어떠한 출력들에 대해 어떠한 이산 이벤트 형태들이 제공되는지를 지정하도록 프롬프트될 수 있다. 대안적으로, 다중화기 블록은 모든 이산 이벤트 형태에 대해 출력을 제공하는 미리 규정된 구성으로 디폴팅될 수 있다. 어떠한 출력들에 대해 제공되는 지정된 이산 이벤트 형태들은 다중화기 블록을 선택하고 이산 이벤트 형태들을 지정하도록 프롬프트될 메뉴 아이템 또는 더블-클릭과 같은 동작을 사용함으로써 알고리즘의 설계 동안에 사용자에 의해 변경될 수 있다. 다중화기 블록은, 예를 들면, 주문을 관리하기 위해 주문 처리기 블록과 연관하여 사용될 수 있다.
퍼넬 블록은 2 개 이상의 이산 입력들 상에서 이산 이벤트들을 수신하고, 이들을 단일 이산 출력 상에 제공할 수 있다. 퍼넬 블록은 이산 이벤트를 개최하지 않고, 퍼넬 블록은 이산 이벤트를 출력으로 통과시킨다. 퍼넬 블록은, 예를 들면, 다수의 입력들을 필요로 하는 상태 블록들과 연관하여 사용될 수 있다.
시퀀서 블록은 이산 이벤트들이 출력들로 통과되는 주문을 보장할 수 있다. 시퀀스 블록은 이산 입력 및 2 개 이상의 이산 출력들을 가질 수 있다. 이산 이벤트가 입력에서 수신될 때, 시퀀서 블록은 이산 이벤트를 각각의 출력에 순서대로 제공한다. 즉, 수신된 이산 이벤트에 대한 처리에서, 시퀀스 블록은 먼저 이산 이벤트를 제 1 출력에 제공할 것이고, 이산 이벤트는 제 2 출력으로 제공되는 것 등일 것이다. 이것은 사용자가 이산 입력들을 수신하는 어떠한 주문 블록들이 알고리즘에서 업데이트되는지를 정확하게 결정하도록 허용할 수 있다. 그러나, 다수의 블록들이 시퀀서 블록의 동일한 이산 출력에 접속되면, 이러한 주문 블록들은 지정되지 않은 이산 이벤트를 수신한다. 이러한 블록은 또한 시퀀스 블록으로서 지칭될 수 있다.
이산 최소 블록은 2 개의 이산 입력들을 비교하고, 지정된 속성(예를 들면, 거래 가격, 거래 수량 등)의 최소 값의 연속적인 수치 출력을 제공할 수 있다. 이산 이벤트가 입력들 중 하나의 입력 상에서 수신될 때, 지정된 속성 값은 이벤트로부터 추출되고 저장된다. 추출된 값은 더 작은 값이 무엇인지 및 그 값이 연속적인 수치 출력에 제공된다는 것을 결정하기 위해 다른 이산 입력에 대해 가장 최근에 저장된 값과 비교된다. 입력에 대해 어떠한 이산 이벤트도 수신되지 않는다면, 다른 입력으로부터 추출된 값은 항상 더 큰 값으로서 취급될 수 있다. 대안으로서, 특정 이산 입력에 대한 값은 간단히 0으로 디폴팅될 수 있다. 이산 최소 블록은 관통 블록일 수 있어서, 수신된 각각의 이산 이벤트가 대응하는 이산 출력을 통해 통과된다. 이산 최소 블록은, 이벤트 수신 시에, 각각의 이산 입력에 대한 저장된 값들을 리셋하고 대응하여 최소 출력을 업데이트할 리셋 이산 입력을 포함할 수 있다.
이산 최대 블록은 2 개의 이산 입력들을 비교하고, 지정된 속성(예를 들면, 거래 가격, 거래 수량 등)의 최대 값의 연속적인 수치 출력을 제공할 수 있다. 이산 이벤트가 입력들 중 하나의 입력 상에서 수신될 때, 지정된 속성 값은 이벤트로부터 추출되고 저장된다. 추출된 값은 더 큰 값이 무엇인지 및 그 값이 연속적인 수치 출력에 제공된다는 것을 결정하기 위해 다른 이산 입력에 대해 가장 최근에 저장된 값과 비교된다. 입력에 대해 어떠한 이산 이벤트도 수신되지 않는다면, 다른 입력으로부터 추출된 값은 항상 더 큰 값으로서 취급될 수 있다. 대안으로서, 특정 이산 입력에 대한 값은 간단히 0으로 디폴팅될 수 있다. 이산 최대 블록은 관통 블록일 수 있어서, 수신된 각각의 이산 이벤트가 대응하는 이산 출력을 통해 통과된다. 이산 최대 블록은, 이벤트 수신 시에, 각각의 이산 입력에 대한 저장된 값들을 리셋하고 대응하여 최소 출력을 업데이트할 리셋 이산 입력을 포함할 수 있다.
다양성 블록들은, 예를 들면, 최대, 최소, 라운딩, 10 진법으로의 디스플레이(display to decimal), not, 일단 참(once true), is number, 이동 평균, 조건부 f(x), 수치 f(x), 평균, 타이머, 노트, 랜덤 넘버, 제곱근, 로그, 및 중지 블록들을 포함할 수 있다.
최소 블록은 더 작은 값이 어느 것인지를 결정하고 이를 출력하기 위해 2 개의 연속적인 수치 입력들을 비교할 수 있다. 최소 블록은 중앙에 "MIN" 텍스트, 좌측 상의 2 개의 연속적인 수치 입력들, 및 우측 상의 하나의 연속적인 수치 출력을 갖는 삼각형을 가질 수 있다.
최대 블록은 더 큰 값이 어느 것인지를 결정하고 이를 출력하기 위해 2 개의 연속적인 수치 입력들을 비교할 수 있다. 최대 블록은 중앙에 "MAX" 텍스트, 좌측 상의 2 개의 연속적인 수치 입력들, 및 우측 상의 하나의 연속적인 수치 출력을 갖는 삼각형을 가질 수 있다.
라운딩 블록은, 하나의 연속적인 수치 출력을 생성하기 위해 연속적인 수치 입력에 의해 제공된 숫자를 연속적인 수치 입력에 의해 제공된 가장 가까운 증분으로 라운딩할 수 있다. 어떠한 증분 값도 제공되지 않는다면, 라운딩 블록은 가장 가까운 정수로 라운딩할 수 있다. 또한, 사용자는 라운딩 블록에 대한 3 개의 옵션들: 정상 라운딩, 항상 업 라운딩, 및 항상 다운 라운딩 중 하나를 지정할 수 있다. 정상 라운딩은 종래의 라운딩 규칙들을 사용한다(예를 들면, 0.5는 1로 라운딩 업하고, 0.49는 0으로 라운딩 다운함). 항상 업 라운딩은 값이 2 개의 증분들 사이에 속하면 숫자를 더 높은 증분으로 라운딩할 것이다(예를 들면, 2.1은 3으로 라운딩 업하고, 2는 2로 라운딩함). 항상 다운 라운딩은 값이 2 개의 증분들 사이에 속하면 숫자를 더 낮은 증분으로 라운딩할 것이다(예를 들면, 2.9는 2로 라운딩 다운할 것이고, 2는 2로 라운딩함). 어떠한 옵션도 지정되지 않는다면, 라운딩 블록은, 예를 들면, 정상 라운딩으로 디폴팅될 수 있다. 라운딩 블록은 중앙에 "라운드" 텍스트, 좌측 상의 2 개의 연속적인 수치 입력들, 및 우측 상의 하나의 연속 수치 출력을 갖는 직사각형을 가질 수 있다.
10 진법으로의 디스플레이 블록은, 숫자를 10 진법 포맷으로 출력하기 위해 연속적인 수치 입력에 의해 제공된 숫자 및 연속적인 기구 입력에 의해 제공된 기구를 사용할 수 있다. 예를 들면, 10 진법으로의 디스플레이 블록은 사용자가 값을 10 진법 포맷으로 계산하지 않고 가격과 같은 값(아마도 변수로서)을 알고리즘의 나머지에 제공하기 위해 숫자 블록을 사용하고자 하는 경우에 활용될 수 있다. 사용자는 기구 ZN의 가격을 117215로서 볼 수 있고, 이는 117 및 12.5/32nds의 가격을 나타낼 수 있다. 10 진법으로의 디스플레이 블록을 통해, 숫자 117125는 기구와 함께 입력으로서 제공될 수 있고, 10 진법으로의 디스플레이 블록은 알고리즘의 나머지에 의한 사용을 위해 숫자를 적절한 10 진법 포맷 값(여기서 117.390625)으로 변환할 것이다. 10 진법으로의 디스플레이 블록은 중앙에 "D2Dec" 텍스트, 좌측 상의 하나의 연속 기구 입력 및 하나의 연속 수치 입력, 및 우측 상의 하나의 연속 수치 출력을 갖는 직사각형을 가질 수 있다.
NOT 블록은, 입력 값이 참이면 출력이 거짓이고, 입력 값이 거짓이면 출력이 참이도록 연속적인 불 입력의 논리적 부정(negation)을 수행할 수 있다. NOT 블록은 중앙에 부정 심볼("!" 또는 ""), 좌측 상의 하나의 연속적인 불 입력, 및 우측 상의 하나의 연속 불 출력을 갖는 좌측 상의 직사각형 및 우측 상의 아치형을 가질 수 있다.
일단 참 블록은 연속적인 불 입력이 참으로 턴할 때 알고리즘의 수명에 대한 참의 연속적인 불 출력을 제공할 수 있다. 입력 값이 적어도 한번 참이 될 때까지, 일단 참 블록의 출력 값은 거짓이다. 일단 입력 값이 참이 되면, 일단 참 블록은 입력 값이 후속으로 변하는 경우에도 불구하고 항상 참의 값을 출력한다. 일단 참 블록은 중앙에 "T" 텍스트, 좌측 상의 하나의 연속적인 불 입력 및 우측 상의 하나의 연속적인 불 출력을 갖는, 좌측 상의 직사각형 및 우측 상의 아치형을 가질 수 있다. 이러한 블록은 또한 일단 참 항상 참 블록으로서 지칭될 수 있다.
is number 블록은, 연속적인 수치 입력 상에서 제공된 값이 숫자인 경우 참의 연속적인 불 출력을 제공하고, 제공된 값이 "NaN(Not a Number)"인 경우 거짓을 출력할 수 있다. is number 블록은 중앙에 "IsNum" 텍스트, 좌측 상의 하나의 연속적인 수치 입력 및 우측 상의 하나의 연속적인 불 출력을 갖는, 좌측 상의 직사각형 및 우측 상의 아치형을 가질 수 있다.
이동 평균 블록은 연속적인 수치 입력으로서 데이터 값(가격 또는 수량과 같이 시간에 걸쳐 변할 수 있음) 및 연속적인 수치 입력으로 다수의 분들(minutes) 값을 취하고, 연속적인 수치 출력으로 지정된 수의 분들에 걸쳐 이동 평균을 제공할 수 있다. 이동 평균 블록은 매 초마다 데이터 값을 기록할 수 있다. 예를 들면, 사용자가 일 분의 이동 평균을 갖고자 하면, 이동 평균 블록은 60 개의 데이터 포인트들을 기록하고, 출력을 위해 이들을 평균화할 것이다. 이동 평균 블록은 또한 데이터 값이 유효한지를 표시하는 연속적인 불 값을 취할 수 있다. 이러한 입력 선택적이고, 참으로 디폴팅된다. 데이터 값이 (초 당 한 번의 디폴트에 의해) 막 기록될 때, 이동 평균 블록은 유효 입력이 참인지를 알기 위해 체크한다. 그렇다면, 데이터 값은 데이터 포인트로서 기록된다. 유효 입력이 거짓이면, 데이터 값은 데이터 포인트로서 기록되지 않는다. 이동 평균 블록은 또한 나머지 입력인 이산 입력을 취할 수 있다. 이산 이벤트가 나머지 입력에 의해 수신될 때, 기록된 데이터 포인트들이 삭제된다. 기록된 데이터 값에 의존하여, 이것은 0 또는 "NaN(Not a Number)"인 이동 평균 출력을 발생시킬 수 있다. 이동 평균 블록은 또한, 충분한 수의 데이터 포인트들이 이동 평균을 완전히 계산하도록 기록되는지를 표시하는 OK 연속적인 불 출력을 제공할 수 있다. OK 출력은 요구된 수의 데이터 포인트들이 기록될 때까지 거짓이고, 이후에(리셋 때까지) 참이다. 예를 들면, 분들의 수 입력이 20의 값을 제공하면(20 분 동안 이동 평균), 1200 개의 데이터 포인트들(20 분 기간에 걸쳐 매초에 대한 1 개의 데이터 포인트)는 OK 출력이 참이 되기 전에 기록될 필요가 있을 것이다. 이동 평균 블록은 또한, 기록된 데이터 포인트들의 수를 표시하는 데이터 포인트들의 수 연속적인 수치 출력을 제공할 수 있다. 이동 평균 블록은 중앙에 "MvgAvg" 텍스트, 좌측 상의 4 개의 입력들(2 개의 연속적인 수치 입력들, 1 개의 연속적인 불 입력, 및 1 개의 이산 입력), 및 우측 상의 3 개의 출력들(2 개의 연속적인 수치 출력들 및 1 개의 연속적인 불 출력)을 갖는 직사각형을 가질 수 있다.
조건부 f(x) 블록은 연속적인 불 출력에 대한 값을 제공하는 사용자-규정 방정식을 평가할 수 있다. 배치될 때, 사용자는 평가될 방정식을 입력하도록 프롬프트될 수 있다. 대안적으로, 조건부 f(x) 블록은 참과 같은 미리 규정된 값으로 디폴팅될 수 있다. 지정된 방정식은, 예를 들면, 조건부 f(x) 블록을 선택하고 방정식을 입력하도록 프롬프트될 메뉴 아이템 또는 더블-클릭과 같은 동작을 사용함으로써 알고리즘의 설계 동안에 사용자에 의해 변경될 수 있다. 방정식은 텍스트로 또는, 예를 들면, 상술된 구축 블록 버튼들(215)과 유사한 구축 블록 버튼들을 사용하여 입력될 수 있다. 특정 실시예들에서, 조건부 f(x) 블록은 또 다른 블록의 출력으로부터의 값을 참조할 수 있다. 값은 블록 및 출력을 지정하는 구축 블록 버튼(215)을 사용하여 참조될 수 있거나, 값은 조건부 f(x) 블록의 연속적인 변수 입력에 제공될 수 있다. 조건부 f(x) 블록은 중앙에 "f(x)" 텍스트, 좌측 상의 어떠한 입력들도 없고(값들이 사용자-규정 방정식에서 참조되지 않는 경우, 이러한 경우에 각각의 변수에 대응하는 연속적인 입력들이 제공됨), 우측 상의 하나의 연속적인 불 출력을 갖는, 좌측 상의 직사각형 및 우측 상의 아치형을 가질 수 있다.
수치 f(x) 블록은 연속적인 수치 출력에 대한 값을 제공하는 사용자-규정 방정식을 평가할 수 있다. 배치될 때, 사용자는 평가될 방정식을 입력하도록 프롬프트될 수 있다. 대안적으로, 수치 f(x) 블록은 0과 같은 미리 규정된 값으로 디폴팅될 수 있다. 지정된 방정식은, 예를 들면, 수치 f(x) 블록을 선택하고 방정식을 입력하도록 프롬프트될 메뉴 아이템 또는 더블-클릭과 같은 동작을 사용함으로써 알고리즘의 설계 동안에 사용자에 의해 변경될 수 있다. 방정식은 텍스트로 또는, 예를 들면, 상술된 구축 블록 버튼들(215)과 유사한 구축 블록 버튼들을 사용하여 입력될 수 있다. 특정 실시예들에서, 수치 f(x) 블록은 또 다른 블록의 출력으로부터의 값을 참조할 수 있다. 값은 블록 및 출력을 지정하는 구축 블록 버튼(215)을 사용하여 참조될 수 있거나, 값은 수치 f(x) 블록의 연속적인 변수 입력에 제공될 수 있다. 수치 f(x) 블록은 중앙에 "f(x)" 텍스트, 좌측 상의 어떠한 입력들도 없고(값들이 사용자-규정 방정식에서 참조되지 않는 경우, 이러한 경우에 각각의 변수에 대응하는 연속적인 입력들이 제공됨), 우측 상의 하나의 연속적인 수치 출력을 갖는, 좌측 상의 직사각형 및 우측 상의 아치형을 가질 수 있다.
특정 실시예들에서, 조건부 f(x) 블록 및 수치 f(x) 블록은 f(x) 블록과 같은 단일 블록으로 통합될 수 있다. f(x) 블록은 연속적인 변수 출력에 대한 불 또는 수치 값 중 어느 하나를 제공하는 사용자-규정 방정식을 평가할 수 있다. 배치될 때, 사용자는 평가될 방정식을 입력하도록 프롬프트될 수 있다. 대안적으로, f(x) 블록은 0과 같은 미리 규정된 값으로 디폴팅될 수 있다. 지정된 방정식은, 예를 들면, f(x) 블록을 선택하고 방정식을 입력하도록 프롬프트될 메뉴 아이템 또는 더블-클릭과 같은 동작을 사용함으로써 알고리즘의 설계 동안에 사용자에 의해 변경될 수 있다. 방정식은 텍스트로 또는, 예를 들면, 상술된 구축 블록 버튼들(215)과 유사한 구축 블록 버튼들을 사용하여 입력될 수 있다. 특정 실시예들에서, f(x) 블록은 또 다른 블록의 출력으로부터의 값을 참조할 수 있다. 값은 블록 및 출력을 지정하는 구축 블록 버튼(215)을 사용하여 참조될 수 있거나, 값은 f(x) 블록의 연속적인 변수 입력에 제공될 수 있다. f(x) 블록은 중앙에 "f(x)" 텍스트, 좌측 상의 어떠한 입력들도 없고(값들이 사용자-규정 방정식에서 참조되지 않는 경우, 이러한 경우에 각각의 변수에 대응하는 연속적인 입력들이 제공됨), 우측 상의 하나의 연속적인 변수 출력을 갖는, 좌측 상의 직사각형 및 우측 상의 아치형을 가질 수 있다.
평균 블록은 하나의 수치 연속적인 출력을 생성하기 위해 2 개 이상의 연속적인 입력들의 값들을 평균화할 수 있다. 예를 들면, 평균 블록은 10 개의 입력들을 가질 수 있다. 또 다른 예로서, 평균 블록은 하나의 입력으로 시작할 수 있고, 평균 블록 입력에 대해 접속이 이루어질 때마다, 새로운 입력이 동적으로 제공될 수 있다. 입력들의 값들이 합산되고, 그후 출력을 생성하기 위해 값들을 제공하는 입력들의 수로 나누어진다. 평균 블록은 중앙에 "AVE" 또는 "AVG" 텍스트, 좌측 상의 2 개 이상의 연속적인 수치 입력들, 및 우측 상의 하나의 연속적인 수치 입력을 갖는 직사각형을 가질 수 있다.
타이머 블록은 시간의 시, 분, 및 초에 대한 연속적인 수치 출력들을 제공할 수 있다. 예를 들면, 시간은 현재 시간일 수 있다. 현재 시간은, 예를 들면, 거래 인터페이스를 사용자에게 제공하는 컴퓨팅 디바이스에서의 시간 또는 알고리즘 서버에서의 현재 시간일 수 있다. 또 다른 예로서, 시간은 시작된 알고리즘이 실행될 때로부터일 수 있다. 또 다른 예로서, 시간은 현재 거래 세션의 시작 이후의 시간일 수 있다. 또 다른 예로서, 시간은 현재 거래 세션의 12am CST로부터일 수 있다. 또 다른 예로서, 시간은 교환기에 의해 제공된 시간일 수 있다. 타이머 블록은 중앙에 "타이머" 텍스트 또는 시계 심볼 및 좌측 상의 3 개의 연속적인 수치 출력들을 갖는 직사각형을 가질 수 있다.
노트 블록은 사용자들이 코멘트들을 입력하기 위한 텍스트 박스 및 설계된 알고리즘에 관한 노트들을 제공할 수 있다. 노트 블록은 임의의 입력들 또는 출력들을 갖지 않을 수 있다. 배치될 때, 사용자는 노트 블록에 대해 텍스트를 입력하도록 프롬프트될 수 있다. 대안적으로, 노트 블록은 "Add note here"과 같은 미리 규정된 값으로 디폴팅될 수 있다. 지정된 값은, 예를 들면, 노트 블록을 선택하고 값을 입력하도록 프롬프트될 메뉴 아이템 또는 더블-클릭과 같은 동작을 사용함으로써 알고리즘의 설계 동안에 사용자에 의해 변경될 수 있다. 노트 블록은 알고리즘의 동작에 영향을 주지 않는다. 노트 블록은 텍스트 값이 중앙에 디스플레이되는 직사각형을 가질 수 있다.
랜덤 숫자 블록은 랜덤 숫자를 연속적인 수치 출력에 제공할 수 있다. 랜덤 숫자는, 랜덤 숫자 블록이 배치되거나 나중에 구성될 때 정수 또는 부동 소수점 값인 것으로 지정될 수 있다. 랜덤 숫자 블록은 정수 값을 제공하는 것으로 디폴팅될 수 있다. 랜덤 숫자는 연속적인 수치 입력에 의해 지정된 최소값과 연속적인 수치 입력에 의해 지정된 최대값 사이일 수 있다. 최소 입력이 제공되지 않는다면, 예를 들면, 최소 입력은 0으로 디폴팅될 수 있다. 최대 입력이 제공되지 않는다면, 최대 입력은 정수 입력에 대해 컴퓨팅 디바이스에 의해 지원되는 최대 정수 또는 부동 소수점 출력에 대해 1로 디폴팅될 수 있다. 랜덤 숫자 블록은 또한, 새로운 랜덤 숫자가 제공되어야 할 때 신호에 대한 이산 입력을 가질 수 있다. 이산 입력이 제공되지 않는다면, 랜덤 숫자 블록은, 예를 들면, 초 당 한번 새로운 랜덤 숫자를 제공할 수 있다. 랜덤 숫자 블록은 관통 블록일 수 있어서, 수신된 각각의 이산 이벤트가 대응하는 이산 출력을 통해 통과된다. 랜덤 숫자 블록은 중앙에 질문 마크 심볼("?") 또는 "RAND" 텍스트, 좌측 상의 2 개의 연속적인 수치 입력들 및 하나의 이산 입력, 및 우측 상의 하나의 연속적인 수치 입력을 갖는 정사각형을 가질 수 있다.
제곱근 블록은 연속적인 수치 입력 상에서 제공된 값에 대해 연속적인 수치 출력 상에서 제곱근 값을 제공할 수 있다. 출력은 입력이 음의 수인 경우 "NaN(Not a Number)"일 수 있다. 제곱근 블록은 중앙에 제곱근 심볼("√"), 좌측 상의 하나의 연속적인 수치 입력, 및 우측 상의 하나의 연속적인 수치 출력을 갖는 삼각형을 가질 수 있다.
로그 블록은 연속적인 수치 입력 상에 제공된 값에 대해 연속적인 수치 출력 상에서 로그 값을 제공할 수 있다. 로그에 대한 기본 값은 연속적인 수치 입력 상에서 제공될 수 있다. 기본 값이 제공되지 않는다면, 예를 들면, 기본값은 자연 로그로 디폴팅될 수 있다. 로그 블록은 중앙에 "로그" 텍스트로, 좌측 상의 2 개의 연속적인 수치 입력들, 및 우측 상의 하나의 연속적인 수치 출력을 갖는 정사각형을 가질 수 있다.
중지 블록은, 이산 이벤트가 이산 입력 상에서 수신하는 경우 또는 연속적인 불 입력 상에서 제공되는 값이 참이 되는 경우 전체 알고리즘을 중지시킬 수 있다. 특정 실시예들에서, 불 입력 값이 다시 거짓이 되면, 알고리즘은 실행을 재개할 수 있다. 특정 실시예들에서, 일단 알고리즘이 중지 블록으로 인해 중지되면, 알고리즘은 수동으로 재시작되어야 한다. 중지 블록은 적색 배경, 중앙에 "정지" 텍스트, 좌측 상의 하나의 연속적인 불 입력 및 하나의 이산 입력을 갖는 8 각형일 수 있다.
알고리즘을 나타내는 명령들 또는 로직(본원에서 프로그래밍 코드로서 지칭됨)은 알고리즘의 규정에 기초하여 생성된다. 특정 실시예들에서, 프로그래밍 코드는, 후속으로 컴파일링될 수 있는 소스 코드(가령, 인간 및/또는 컴파일러 판독 가능 텍스트)이다. 특정 실시예들에서, 프로그래밍 코드는 중급 언어 내에 있다. 특정 실시예들에서, 프로그래밍 코드는 기계-실행 가능 명령들을 포함한다. 특정 실시예들에서, 프로그래밍 코드의 생성은 생성된 소스 코드 및/또는 중급 언어 코드의 컴파일(compilation)을 포함한다. 특정 실시예들에서, 프로그래밍 코드의 생성은 소스 코드 및/또는 중급 언어 코드의 컴파일을 포함하지 않고, 그러한 컴파일은 개별적인 프로세스이다. 그후, 생성된 프로그래밍 코드(적절한 경우, 컴파일 후에)는 규정된 알고리즘에 따라 거래하도록 시뮬레이팅 및/또는 사용될 수 있다. 본원에 사용된 바와 같이, 프로그래밍 코드가 실시, 실행 및/또는 시뮬레이팅되는 것으로 논의되는 경우, 생성된 프로그래밍 코드가 적절한 경우 실시, 실행 및/또는 시뮬레이팅되도록 부가적으로 컴파일링된다고 가정된다.
특정 실시예들에서, 프로그래밍 코드는 알고리즘이 설계됨에 따라 생성된다. 알고리즘이 설계되는 동안에, 블록들 및/또는 접속들이 부가, 수정, 및/또는 제거됨에 따라 알고리즘의 규정이 변경될 수 있다는 것을 유의하라. 특정 실시예들에서, 알고리즘 규정에 대해 변화가 이루어질 때, 프로그래밍 코드는 자동적으로 생성된다. 특정 실시예들에서, 프로그래밍 코드는 사용자의 요청 시에 생성된다.
특정 실시예들에서, 프로그래밍 코드는 클라이언트 디바이스에서 거래 인터페이스(310)의 알고리즘 거래 애플리케이션의 컴포넌트에 의해 생성된다. 특정 실시예들에서, 프로그래밍 코드는, 예를 들면, 알고리즘 생성 디바이스, 상술된 알고리즘 서버(302)와 유사한 알고리즘 서버, 및/또는 상술된 게이트웨이(120)와 유사한 게이트웨이와 같은 또 다른 디바이스에서 알고리즘 거래 애플리케이션의 컴포넌트에 의해 생성된다. 특정 실시예들에서, 프로그래밍 코드는 2 개 이상의 컴포넌트에 의해 생성된다. 예를 들면, 알고리즘 거래 애플리케이션의 다수의 컴포넌트들은 코드를 생성하기 위해 함께 작동할 수 있다. 그러한 컴포넌트들은, 예를 들면, 프로그래밍 코드의 상이한 양상들 또는 기능들을 생성하도록 특수화될 수 있다.
특정 실시예들에서, 프로그래밍 코드는 2 개 이상의 디바이스에 의해 생성된다. 예를 들면, 프로그래밍 코드는 클라이언트 디바이스 및 알고리즘 서버에 의해 생성될 수 있다. 알고리즘 규정에 기초하여 생성된 프로그래밍 코드는, 어떠한 컴포넌트 또는 디바이스가 프로그래밍 코드를 생성하는지에 기초하여 상이할 수 있다. 예를 들면, 클라이언트 디바이스 상에서 생성된 프로그래밍 코드는 클라이언트 디바이스에 의한 실행을 위해 최적화될 수 있고 그리고/또는 알고리즘 서버(예를 들면, 사용자 인터페이스-관련 기능을 포함할 수 없음) 상에서 생성된 프로그래밍 코드와 상이한 특징들(예를 들면, 사용자 인터페이스-관련 기능)을 포함할 수 있다. 명확히 하기 위해, 달리 언급되지 않는다면, 다음의 논의는 클라이언트 디바이스 상의 프로그래밍 코드의 생성과 관련되지만, 프로그래밍 코드가 알고리즘 서버와 같은 또 다른 디바이스에서 생성될 때 유사한 동작들이 취해진다는 것이 이해되어야 한다.
특정 실시예들에서, 생성된 프로그래밍 코드는 C# 및 NET 4.0 프레임워크와 같은 프로그래밍 언어를 사용하여 객체-지향형 방식으로 이루어진다.
특정 실시예들에서, 프로그래밍 코드는 알고리즘 규정에서 각각의 블록을 트래버스하고 접속에 의해 생성된다. 각각의 블록에 대해, 프로그래밍 코드가 생성된다. 프로그래밍 코드를 생성할 때, 몇몇의 블록들은 원시 변수들(primitive variables)가 될 수 있다. 예를 들면, 합산기 블록은 부동 소수점 변수가 될 수 있고, 부동 소수점 변수의 값은 합산기 블록의 입력들에 접속된 출력들의 값들이 합산이도록 설정되고, 이것은 재귀적으로 결정될 수 있다. 서브클래스들이 베이스 클래스들로부터 유도됨에 따라, 더 복잡한 기능을 가질 수 있는 다른 블록들이 생성될 수 있다. 베이스 클래스는 대응하는 블록과 연관된 코어 기능을 제공할 수 있다. 그후, 생성된 서브클래스는, 프로그래밍 코드가 베이스 클래스의 코어 기능에 대해 생성되는 블록에 대해 특정한 값을 제공하기 위해 리턴 값들을 갖는 가상의 방법들을 오버라이딩(override)할 수 있다. 예를 들면, 설계 캔버스 영역(311)에 배치된 시장 메이커 블록은 베이스 시장 메이커 클래스의 서브클래스인 생성된 프로그래밍 코드를 가질 수 있다. 서브클래스는, 시장 메이커 블록의 다양한 입력들에 대한 값들을 얻고 시장 메이커 블록이 구매 또는 판매하도록 구성되는지를 지정하기 위한 가상 방법들을 오버라이딩할 수 있다. 상술된 기본 블록들과 달리, 시장 메이커 블록은 더 복잡한 기능을 제공하는 거래 블록이다.
블록들 간의 연속적인 접속들은 접속된 출력 값들 및 입력 값들이 어떻게 관련되는지를 지정한다. 상기 예의 합산기에 계속해서, 합산기 블록의 출력을 나타내는 부동 소수점 값은 합산기 블록의 연속적인 입력들에 접속된 다른 원시 변수들(다른 블록들/출력들을 나타냄)의 값들의 합산이도록 설정될 수 있다. 특정 실시예들에서, 연속적인 접속들은, 연속적인 접속들을 갖는 (원시 변수들을 생성하는) 다수의 블록들은 다수의 중간 변수들을 사용하지 않고 간단한 표현들로 압축될 수 있도록 생성된 프로그래밍 코드를 평평하게 하는데 사용될 수 있다.
블록들 간의 이산 접속들은 이벤트 생성기들 및 이벤트 처리기들을 생성하는데 사용되어, 이산 이벤트가 생성될 때, 적당한 방법(처리기)이 실시된다. 이산 이벤트는 처리되도록 이벤트 생성기로부터 이벤트 처리기로 통과된다.
실행될 때, 알고리즘은 알고리즘의 상태가 변하도록 하는 동작들에 응답한다. 동작들은 시장 이벤트들(예를 들면, 가격 업데이트, 수량 업데이트, 주문 확인, 거래 확인, 이행 확인, 또는 거래 통지)과 같은 외부 이벤트들 또는 타이머 이벤트들(예를 들면, 시스템 시계 또는 알람으로부터의)을 포함할 수 있다. 이러한 외부 이벤트들은 주문 확인 이산 이벤트들, 거래 확인 이산 이벤트들, 이행 확인 이산 이벤트들, 또는 거래 통지 이산 이벤트들과 같은 이산 이벤트들이 생성되게 하고 및/또는 기구에 대한 가격 또는 수량 값들과 같은 연속적인 값들이 업데이트되게 할 수 있다. 동작들은 또한 알고리즘에서 블록들에 의해 생성된 이산 이벤트들과 같은 내부 이벤트들 또는 연속적인 값 변화를 포함할 수 있다.
내부 또는 외부 이산 이벤트들이 발생할 때(예를 들면, 거래 확인 이산 이벤트 또는 생성기 블록이 이산 이벤트를 생성함), 알고리즘 내의 각각의 관심있는 블록은, 블록이 이벤트와 연관된 그의 지정된 기능을 수행할 수 있도록 실시되는 이벤트 처리기 방법을 갖는다. 이벤트 처리기들은 미지정된 주문에서 평가될 수 있다. 예를 들면, 이벤트 처리기들은 그들 각각의 블록들이 알고리즘 규정에 배치되는 주문에 기초하여 평가될 수 있다. 이벤트 처리기 처리는 수신된 이벤트에 기초하여 블록의 기능을 수행하는 것, 연속적인 출력 값들을 업데이트하는 것, 및 이산 이벤트를 생성하는 것 및 이산 이벤트를 출력 상에서 다른 접속된 블록들에 제공하는 것을 포함할 수 있다.
내부 또는 외부의 연속적인 값이 변할 때(예를 들면, 시장 데이터가 업데이트되거나, 시스템 시계의 시간이 변함), 데이터의 소스("다운스트림 블록들")에 직접적으로 또는 간접적으로 접속된 각각의 관심있는 블록은 새로운 데이터를 반영하도록 업데이트된 그의 값을 갖는다. 일부 블록들의 결과인 원시 변수들은, 예를 들면, 할당된 그들의 새로운 값들을 가질 것이다.
연속적인 출력 값이 이산 이벤트 또는 연속적인 값 변화 중 어느 하나에 의해 업데이트되면, 업데이트된 값을 수신하기 위한 각각의 직접적으로 또는 간접적으로 접속된 블록은 처리될 블록들의 리스트에 부가된다. 외부 이벤트에 관심있는 블록들이 그들의 처리를 완료할 때, 그후 블록들의 리스트는 처리되어, 그후 이러한 블록들이 내부 이벤트에 응답하여 작동할 수 있다. 내부 이벤트들은 외부 이벤트와 유사한 방식으로 처리된다. 그후, 각각의 블록의 처리가 알고리즘의 상태에 대한 새로운 변화들을 생성함에 따라, 이러한 처리가 반복될 수 있다.
도 3da 내지 도 3dg은 특정 실시예들에 따라 생성된 예시적인 프로그래밍 코드를 예시한다. 예시된 프로그래밍 코드가 단지 생성될 수 있는 프로그래밍 코드의 일부분이고, 예시되도록 의도되고, 명확히 하기 위해 특정 특징들을 강조하도록 간략화된다는 것을 유의하라.
도3da에 예시된 바와 같이, 프로그래밍 코드는 어떠한 블록들도 설계 캔버스 영역(311)에 배치되지 않을 때조차 생성될 수 있다. 생성된 프로그래밍 코드는, 설계된 알고리즘을 나타내는 새로운 클래스("CustomAlgorithm()")를 포함한다. 이러한 새로운 클래스는 알고리즘 클래스의 서브클래스이고, 이는 알고리즘 거래 애플리케이션을 통해 알고리즘을 실시하기 위한 기능 및 기본 인터페이스들을 제공한다. CustomAlgorithm() 클래스는 알고리즘 클래스의 가상 방법들을 오버라이딩할 수 있어서, 설계된 알고리즘에 대해 특정한 기능은 알고리즘 거래 애플리케이션의 프레임워크에 통합되고 실행될 수 있다.
도 3db에 예시된 바와 같이, 예에 계속하여, 블록이 설계 캔버스 영역(311)에 배치될 때, 부가적인 프로그래밍 코드가 생성될 수 있다. 상술된 바와 같이, 일부 블록들은 원시 변수들이 될 수 있고, 그들 사이의 연속적인 접속들은 그들이 어떻게 관련되는지를 말한다. 예를 들면, 예시된 바와 같이, 2 개의 상수 블록들("ConstantNumberBlock0" 및 "ConstantNumberBlock1")은 설계 캔버스 영역(311) 및 합산기 블록("AdderBlock0")에 배치된다. 블록들이 접속되지 않는다는 것을 유의하라. 생성된 프로그래밍 코드의 마킹된 부분은, 이러한 기본 블록들이 ("더블" 형태의) 원시 변수들로서 프로그래밍 코드에 표현된다는 것을 예시한다.
도 3dc에 예시된 바와 같이, ConstantNumberBlock0 및 ConstantNumberBlock1로부터 AdderBlock0으로의 접속들이 이루어진다. 접속들은 블록들 간의 관계를 지정한다. 생성된 프로그래밍 코드의 마킹된 부분은, AdderBlock0의 값이 ConstantNumberBlock0과 ConstantNumberBlock1의 합의 값과 동일하다는 것을 예시한다. 이것은 합산기 블록에 의해 표현된 기능이 2 개의 입력들의 값들을 합산하는 것이기 때문이다.
도 3dd에 예시된 바와 같이, 시장 메이커 블록은 설계 캔버스 영역(311)에 배치된다. 상술된 기본 블록들과 달리, 시장 메이커 블록은 더 복잡한 기능을 제공하는 거래 블록이다. 생성된 프로그래밍 코드는, 배치된 특정 시장 메이커 블록의 기능을 나타내는 새로운 클래스("CustomMarketMaker0")를 합산한다. CustomMarketMaker0은 MarketMaker의 서브클래스이고, 이는 시장 메이커 블록에 대한 기본 기능을 제공한다. CustomMarketMaker0 클래스는 리턴 형태의 MarketMaker 클래스로 가상 방법들을 오버라이딩할 수 있어서, 배치된 시장 메이커 블록에 대해 특정한 기능은 알고리즘 거래 애플리케이션의 프레임워크에 통합되고 실행될 수 있다. 이러한 경우에, CustomMarketMaker0은 시장 메이커 블록의 다양한 입력들에 대한 값들을 얻기 위해 MarketMaker 베이스 클래스에서 로직에 의해 실시되는 방법들을 오버라이딩한다. 도 3de에 예시된 바와 같이, 배치된 시장 메이커 블록의 수량 입력은 상술된 합산기 블록의 출력에 접속된다. 생성된 프로그래밍 코드의 마킹된 부분은, CustomMarketMaker0 클래스의 가상 방법 "GetQty"이 AdderBlock0의 값을 리턴하도록 오버라이딩된다는 것을 예시한다.
도 3df에 예시된 바와 같은 예에 계속해서, 이산 출력 및 이산 입력 사이에 접속이 이루어진다. 특히, 시장 메이커 블록의 이산 이행 출력 및 값 누산기 블록의 리셋 입력 사이에 접속이 이루어진다. 값 누산기 블록은 이산 블록이고 거래 블록과 유사하고, 새로운 클래스("CustomMarketMaker0")(미도시)가 부가된다. 생성된 프로그래밍 코드의 마킹된 부분들은, 새로운 서브클래스들("CustomMarketMaker0" 및 "CustomValueAccumulator0")이 예시화되고, MarketMakerBlock0의 이벤트 "DiscreteObjectGerated"가 CustomAlgorithm0("InterceptOrderMessage") 및 ValueAccumulatorBlock0("ProcessResetMessage")에 대한 이벤트 처리기들과 링크된다는 것을 예시한다. 따라서, MarketMakerBlock0이 이행 메시지를 가질 때, 이것은 DiscreteObjectGenerated 이벤트를 파이어(fire)할 것이고, 링크된 모든 처리기들에 통지될 것이다. 이러한 경우에, ProcessResetMessage 처리기에 통지될 때, 이것은 누산기 값을 0으로 리셋할 것이다.
상기 예에 계속해서, 도 3dg에 예시된 바와 같이, 기구 블록("SimpleInstrumentBlock0") 및 기구 속성 블록("InstrumentFieldBlock0") 사이에 접속이 이루어진다. 기구 블록은 기구 "ESZ0"에 대한 수신된 시장 데이터에 기초하여 그의 연속적인 출력들을 업데이트하는 "InstrumentSnapshot" 클래스의 인스턴스이도록 생성된다. InstrumentSnapshot 클래스는 기구의 속성에 대한 대응하는 값을 얻기 위해 참조될 수 있는 멤버 변수 또는 속성들을 제공한다. 예를 들면, "SetAllVariables"(알고리즘에서 모든 값들을 설정함) 또는 "HandleUpdate"(특정 연속적인 값의 업데이트에 의해 영향을 받는 값들을 설정함) 방법들이 실시될 때, 기구 속성 블록은 그의 값을 기구 블록의 ".Bid" 속성이도록 설정한다.
도 3e는 특정 실시예들에 따른 거래 인터페이스(310)를 예시한다. 특정 블록들은 "변수"인 것으로 지정될 수 있다. 예를 들면, 상수 블록들, 상수 불 블록들, 및 기구 블록들은 변수인 것으로 지정될 수 있다.
변수 영역(313)은 변수 블록들을 수정하는 것을 제공한다. 변수 영역(313)은 각각의 변수 블록 명칭 및 그의 디폴트 값을 디스플레이한다. 변수 영역은 변수 블록 명칭 및/또는 그의 디폴트 값을 변경하도록 선택될 수 있다. 변수들은 또한 알고리즘의 파라미터들로서 지칭될 수 있다.
예시된 바와 같이, 설계 캔버스 영역(311)은 변수로서 지정된 2 개의 블록들, 기구 블록(321) 및 상수 블록(322)을 포함한다. 블록은, 예를 들면, 그가 배치될 때, 또는 그가 배치된 후에 변수로서 지정될 수 있다. 예를 들면, 커서는 블록을 선택하는데 사용될 수 있고, 그후 메뉴 옵션은 변소로서 제조되어야 하는 블록을 지정하도록 선택될 수 있다. 블록 지정 변수는, 예를 들면, 상이한 컬러, 경계, 배경, 패턴, 및/또는 텍스트로 표시될 수 있다. 여기서, 텍스트 "[Variable]"는 디스플레이된 블록 명칭에 첨부된다.
상술된 바와 같이, 변수 영역(313)은 각각의 변수 블록(321 및 332)에 대한 엔트리들을 갖는 명칭 컬럼(323) 및 각각의 변수 블록에 대한 대응하는 디폴트 값 엔트리들을 갖는 디폴트 값 컬럼(324)을 포함한다. 예를 들면, 기구 블록(321)은 "InstrumentBlock0"으로 명명되고, "ESZ0"의 디폴트 값을 갖고, 상수 블록(322)은 "ConstantBlock0"으로 명명되고, "5"의 디폴트 값을 갖는다.
사용자는 변수 블록의 디폴트 값을 변경하기 위해 컬럼(324) 내의 디폴트 값 엔트리를 선택할 수 있어서, 알고리즘의 평가에서 새로운 디폴트 값이 사용된다. 마찬가지로, 사용자는 각각의 변수 블록의 명칭을 변경하기 위해 명칭 컬럼(323) 내의 명칭 엔트리를 선택할 수 있다. 변수 블록들(321 및 322)은, 변수 블록의 값을 변경함으로써, 근본적인 로직이라기보다는 알고리즘의 거동을 사용자가 조작하도록 허용할 수 있고, 변수 블록의 값은, 예를 들면, 알고리즘에 대한 파라미터로서 작동한다.
제어 영역(314)은 알고리즘을 설계하는데 사용하기 위한 제어들을 제공한다. 제어 영역(314)은 알고리즘의 시뮬레이션을 개시 및 중지하기 위한 재생 버튼 및 중지 버튼을 포함할 수 있다. 알고리즘의 시뮬레이션은 알고리즘의 로직이 어떻게 거동할 것인지를 표시하는데 사용될 수 있다. 또한, 제어 영역(314)은 알고리즘에 기초하여 프로그램 코드가 생성되도록 할 생성 버튼(미도시)을 포함할 수 있다. 생성 버튼은 프로그래밍 코드가 알고리즘에 대한 변화들에 기초하여 자동적으로 생성되지 않을 때 사용될 수 있다. 이것은 설계된 알고리즘이 복잡할 때 바람직할 수 있고, 알고리즘에 대한 각각의 수정 후에 프로그래밍 코드의 생성(및 적절한 경우 상기 프로그래밍 코드의 후속 컴파일)은 바람직하지 않게 긴 시간이 걸린다. 특정 실시예들에서, 제어 영역(314)은 프로그래밍 코드가 컴파일될 알고리즘에 기초하여 생성되게 할 컴파일 버튼(미도시)을 포함할 수 있다. 컴파일 버튼은 프로그래밍 코드가 생성되지 않고 및/또는 알고리즘에 대한 변화들에 기초하여 자동적으로 컴파일되지 않을 때 사용될 수 있다. 이것은 설계된 알고리즘이 복잡할 때 바람직할 수 있고, 알고리즘에 대한 각각의 수정 후에 프로그래밍 코드의 생성(및 적절한 경우 상기 프로그래밍 코드의 후속 컴파일)은 바람직하지 않게 긴 시간이 걸린다.
도 3f 내지 도 3g는 특정 실시예들에 따른 거래 인터페이스(310)를 예시한다. 거래 인터페이스(310)는 라이브 피드백 특징을 제공한다. 라이브 피드백 특징은, 설계 캔버스 영역(311) 내의 특정 블록에 대해, 특정 블록에 대한 값의 디스플레이를 제공한다. 예를 들면, 라이브 피드백 값은 상기 블록의 하나 이상의 입력들 및/또는 출력들에 대해 디스플레이될 수 있다. 라이브 피드백 값은, 예를 들면, 상기 블록 또는 대응하는 입력 및/또는 출력에 관련하여 디스플레이될 수 있다. 라이브 피드백은 블록에 대한 입력 또는 출력의 값이 변할 때마다 업데이트될 수 있다. 하나의 블록에 대한 출력에서의 변화가 입력으로서 제 1 블록의 출력을 (직접적으로 또는 간접적으로 중 어느 하나) 취하는 또 다른 블록의 출력에서의 변화를 발생시킬 수 있고, 양자의 블록들에 대한 라이브 피드백이 업데이트되도록 한다는 것을 유의하라.
도 3f에 예시된 바와 같이, 다양한 블록들(331)은 설계 캔버스 영역(311)에 배치된다. 블록들(331)의 각각의 출력에 대해, 출력의 값을 도시하는 라이브 피드백(332)이 제공된다. 블록들(333)이 숫자 블록들이고, 출력의 값이 블록들(333) 자체의 디스플레이에 도시되기 때문에, 라이브 피드백이 제공되지 않는다는 것을 유의하라. 특정 실시예들에서, 라이브 피드백은 특정 배치된 블록의 하나 이상의 입력들에 대해 제공된다. 특정 실시예들에서, 라이브 피드백은 특정 배치된 블록의 입력들 및 출력들 양자에 대해 제공된다. 특정 실시예들에서, 라이브 피드백은 설계 캔버스 영역(311) 내의 모든 블록들에 대해 제공된다.
기구 블록에 대한 라이브 피드백은 "GCJ1"의 값을 디스플레이한다. 입찰 수량을 제공하도록 구성된 기구 속성 블록에 대한 라이브 피드백은, 기구 GCJ1에 대한 입찰 수량이 3이라는 것을 나타내는 "3"의 값을 디스플레이한다. 합산기 블록에 대한 라이브 피드백은 13의 값을 디스플레이하고, 이는 2 개의 입력 값들 3(기구 속성 블록으로부터의) 및 10(제 1 숫자 블록으로부터의)의 합산이다. 제산 블록에 대한 라이브 피드백은 6.5의 값을 디스플레이하고, 이는 제 1 입력 값 13(합산 블록으로부터의)을 2의 제 2 입력값(제 2 숫자 블록으로부터의)으로 나눈 결과이다.
라이브 피드백은, 알고리즘이 시뮬레이팅되지 않는다면 임의의 블록들에 대해 제공되지 않을 수 있다. 예를 들면, 도 3g에 예시된 바와 같이, 라이브 피드백은 시장 메이커 블록(335)의 출력들에 대해 제공되지 않는다. 이것은, 알고리즘이 실행되지 않는다면(예를 들면, 시뮬레이팅됨), 시장 메이커 블록(335)이 동작하지 않고 시장과 상호 작용하지 않기 때문이다. 따라서, 시장 메이커 블록(335)은 그의 동작에 기초하여 임의의 연속적인 값들을 제공하지 않고(시장 메이커 블록이 동작하지 않기 때문에), 그는 임의의 이산 이벤트들을 생성하지 않는다(다시, 그가 동작하지 않기 때문에). 라이브 피드백은 또한 값 추출기 블록(336)의 출력들에 대해 제공되지 않는다. 이것은 값 추출기 블록(336)이 이산 입력을 갖고, 따라서 이산 이벤트가 수신될 때 그의 출력들만이 값들을 갖기 때문이다. 그러나, 알고리즘이 실행되지 않는다면, 이산 이벤트들이 수신되지 않는다.
디스플레이될 라이브 피드백 값들은 알고리즘 자체로부터 제공된다. 예를 들면, 설계된 알고리즘에 대해 생성된 프로그래밍 코드는 거래 인터페이스(310)와 같은 거래 인터페이스의 디스플레이를 업데이트하기 위한 부가적인 명령들을 포함할 수 있다. 특정 실시예들에서, 예를 들면, 어떠한 거래 인터페이스도 가령 알고리즘 서버(302) 상에 존재할 수 없기 때문에, 알고리즘에 대한 생성된 프로그래밍 코드는 거래 인터페이스의 디스플레이를 업데이트하기 위한 부가적인 명령들을 포함하지 않는다. 도 3db 및 도 3dc에 예시된 바와 같이, 실시될 때 "SetAllVariables" 방법은 "SendUpdate" 방법을 실시한다. SendUpdate 방법은 업데이트할 블록의 식별, 업데이트할 특정 출력 인덱스, 및 값(여기서, 합산기 블록의 값)을 사용자 인터페이스에 제공한다. 따라서, 블록에 대한 값이 변할 때마다, 라이브 피드백을 업데이트하기 위해 사용자 인터페이스에 업데이트가 제공된다. SendUpdate 방법은 또한 사용자 인터페이스에 업데이트된 값을 제공하기 위해 유도된 클래스들을 생성하는 블록들의 베이스 클래스들에 의해 실시될 수 있다. 마찬가지로, 도 3df에 예시된 바와 같이, 이벤트 "DiscreteObjectGenerated"가 발생할 때, "InterceptOrderMessage" 이벤트 처리기가 실시되도록 등록되었다. InterceptOrderMessage 방법은 대응하는 이산 이벤트의 통지를 사용자 인터페이스에 제공한다. 따라서, 이러한 이산 이벤트가 생성될 때마다, 사용자 인터페이스는 라이브 피드백을 제공할 수 있다.
알고리즘이 실행될 때(가령, 알고리즘이 시뮬레이팅될 때), 설계 캔버스 영역(311) 내의 블록들 모두에 대해 라이브 피드백이 제공될 수 있다. 이산 이벤트들이 특정 시점들에서 발생하기 때문에, 이벤트가 발생할 때마다, 이산 이벤트의 발생의 표시자가 디스플레이될 수 있다. 예를 들면, 이산 입력 및/또는 출력은, 이산 이벤트가 상기 입력 및/또는 출력에서 발생할 때 번쩍이고, 컬러, 크기 또는 형상을 변경할 수 있다. 또 다른 예로서, 이산 입력 및 출력 사이의 접속은 이산 이벤트가 접속을 통해 제공될 때, 번쩍이고, 컬러, 크기, 또는 형상을 변경할 수 있다. 또 다른 예로서, 이산 이벤트가 접속을 따라 출력으로부터 입력으로 제공된다는 것을 표시하기 위해 접속을 따른 애니메이션이 제공될 수 있다. 애니메이션은, 예를 들면, 접속을 따라 이동하는 적색 원과 같은 아이콘일 수 있거나, 접속이 진동할 수 있다.
라이브 피드백 특징은, 알고리즘이 설계될 때 및 알고리즘이 실행될 때 피드백을 사용자에게 제공한다. 라이브 피드백은 알고리즘의 동작 안정성 및 완전성, 일반적인 경향들, 및 이득/손실 가능성들을 포함하여 사용자가 알고리즘의 로직이 어떻게 거동하는지를 평가하도록 허용할 수 있다.
도 3h 내지 도 3l은 특정 실시예들에 따른 거래 인터페이스(310)를 예시한다. 거래 인터페이스(310)는 알고리즘이 설계될 때 잠재적인 에러들을 감소시키기 위해 안정성 특징들을 제공한다.
도 3h에 예시된 바와 같이, 기구 블록(341)은 설계 캔버스 영역(311) 내에 배치된다. 그러나, 기구 블록(341)이 배치될 때, 어떠한 기구도 지정되지 않고, 이것은 기구가 지정되지 않는 경우에 기구 블록이 기구 명칭을 출력할 수 없기 때문에 무효한 구성이다. 경고 표시자(342)(여기서, 적색 원 내의 느낌표("!")를 갖는 아이콘)는 문제점이 존재하다는 것을 표시하기 위해 기구 블록(341) 근처에 디스플레이되고, 문제점의 설명(343)은 커서가 기구 블록(341) 근처에 위치될 때 디스플레이된다. 특정 실시예들에서, 예를 들면, 설계 캔버스 영역(311)의 배경이 적색으로 착색되고 및/또는 경고 또는 에러 메시지가 상태 바에서 디스플레이되는 것과 같이, 다른(또는 부가적인) 표시자들이 문제점을 표시하도록 디스플레이될 수 있다.
도 3i에 예시된 바와 같이, 기구 속성 블록(344)은 설계 캔버스 영역(311) 내에 배치된다. 그러나, 기구에 대한 최상의 입찰 가격을 제공하도록 구성된 기구 속성 블록(344)에는 요구된 입력, 최상의 입찰 가격을 제공할 기구 명칭이 제공되지 않는다. 즉, 기구 속성 블록(344)은 기구 블록(또는, 기구 명칭을 제공할 수 있는 다른 블록)에 접속되지 않는다. 결과적으로, 알고리즘 규정이 무효하다. 경고 표시자 및 설명이 또한 도 3h의 것과 유사하게 디스플레이된다.
도 3j에 예시된 바와 같이, 기구 속성 블록(344) 및 시장 메이커 블록(345)은 설계 캔버스 영역(311) 내에 배치된다. 사용자는 기구 속성 블록(344)의 출력(수치 값 형태를 갖는 연속적인 출력)을 시장 메이커 블록(345)의 기구 입력(기구 값 형태를 갖는 연속적인 입력)에 접속하려고 시도한다. 이러한 입력들 및 출력들에 대한 값 형태들은 호환 불가하고, 따라서 무효한 알고리즘 규정을 발생시킬 것이다. 표시자(346)(여기서, 그를 통한 슬래시를 갖는 원)는 접속이 유효하지 않다는 것을 표시하기 위해 시도된 접속 라인 상에 디스플레이된다. 또한, 설명(347)이 또한 디스플레이된다. 연속적인 출력 및 이산 입력 사이에 접속이 시도되면, 유사한 피드백이 또한 제공될 수 있다.
도 3k에 예시된 바와 같이, 합산기 블록(348a) 및 합산기 블록(348b)이 설계 캔버스 영역(311) 내에 배치된다. 사용자는 합산기 블록(348b)의 출력을 합산기 블록(348a)의 입력에 접속하려고 시도한다. 그러나, 합산기 블록(348a)의 출력은 합산기 블록(348b)에 입력으로서 이미 접속된다. 시도된 접속을 허용하는 것은 생성된 프로그래밍 코드에서 주기적 의존성을 초래할 것이다. 상세하게, 합산기 블록(348a)에 대한 값을 결정하기 위한 프로그래밍 코드를 생성하려고 시도하는 것은 무한 루프를 초래할 것이다. 따라서, 그러한 알고리즘 규정이 무효하고, 도 3j에 제공된 피드백과 유사하게, 접속은 무효한 것으로 표시되고 설명이 디스플레이된다.
도 3l에 예시된 바와 같이, 생성기 블록(349a), 퍼넬 블록(349b), 값 추출기 블록(349c) 및 값 누산기 블록(349d)은 설계 캔버스 영역(311) 내에 배치된다. 사용자는 값 누산기 블록(349d)의 이산 출력을 퍼넬 블록(349b)의 이산 입력에 접속하려고 시도한다. 그러나, 퍼넬 블록(349b), 값 추출기 블록(349c) 및 값 누산기 블록(349d) 각각은 관통 블록들이어서, 수신된 각각의 이산 이벤트는 대응하는 이산 출력을 통해 출력으로 전달된다. 따라서, 이산 이벤트가 생성기 블록(349a)(또한 퍼넬 블록(349b)에 접속됨)에 의해 제공될 때, 이산 이벤트는 각각의 접속된 블록을 통해 전달된다. 시도된 접속을 허용하는 것은 생성된 프로그래밍 코드의 무한 루프를 발생시킬 것이다. 구체적으로, 생성기 블록에 의해 제공된 이산 이벤트 처리 시에, 생성된 프로그래밍 코드는 결국 처리되도록 각각의 블록에 이산 이벤트를 무한하게 전달하고, 여기서, 상기 처리는 순환에서 다음 블록에 이산 이벤트를 제공하는 것을 포함한다. 따라서, 그러한 알고리즘 규정이 무효하고, 도 3j에 제공되는 피드백과 유사하고, 접속은 무효인 것으로 표시되고, 설명이 디스플레이된다.
특정 실시예들에서, 경고들 및/또는 에러 메시지들이 거래 인터페이스(310)의 별도의 영역에 제공될 수 있다. 이것은, 예를 들면, 사용자가 각각의 블록을 개별적으로 검사하기보다는 모든 중용한 경고들 및 에러들을 용이하게 보도록 허용할 수 있다.
도 3m 내지 도 3r은 특정 실시예들에 따른 거래 인터페이스(310)를 예시한다. 거래 인터페이스(310)는, 예를 들면, 클러터(clutter)를 감소시키고, 알고리즘들의 부분들의 재사용을 가능하게 하고(알고리즘들 사이에 공유될 수 있는 모듈들을 생성하는 것을 포함함), 가상화 특징을 가능하게 하는 것을 허용하기 위한 그룹 특징들을 제공한다. 감소된 클러터 및 알고리즘들의 부분들의 재사용은, 그가 알고리즘 설계에서 실수들의 가능성을 감소시키기 때문에 더 양호한 알고리즘들을 유도할 수 있다. 가상화 특징의 이점들이 후술된다.
도 3m에 예시된 바와 같이, 간단한 스캘핑(scalping) 알고리즘의 규정이 설계된다. 개관으로서, 스캘핑 알고리즘은 최상의 입찰 가격에서 구매하고, 그후 이행 가격 위의 하나의 거래 증분에서 판매하여, 구매 및 판매된 유닛 당 하나의 거래 증분의 이윤을 낸다. 더욱 상세하게, 알고리즘은 구매 시장 메이커 블록(351) 및 판매 시장 메이커 블록(352)을 포함한다. 구매 시장 메이커 블록(351)에는 기구 블록에 의해 지정된 구매를 위한 기구("ESZ0")가 제공된다. 구매 시장 메이커 블록(351)에는 기구에 대해 최상의 입찰 가격을 제공하는 기구 필드 블록에 의해 지정된 구매를 위한 가격이 제공된다. 구매 시장 메이커 블록(351)에는 숫자 블록에 의해 지정된 구매를 위한 10의 고정 수량이 제공된다. 구매 시장 메이커 블록(351)이 그가 작업중인 구매를 위한 이행 확인들을 수신할 때, 이산 이벤트가 생성된다.
판매 시장 메이커 블록(352)은 구매 시장 메이커 블록(351)에 의해 취해진 위치를 커버하기 위해 판매 주문들을 작동시킬 것이다. 판매 시장 메이커 블록(352)에는 판매를 위한 동일한 기구("ESZ0")가 제공된다. 판매 시장 메이커 블록(352)에는 기구에 대한 최소 가격 증분(기구 필드 블록에 의해 제공됨)을 이행 가격(이행 확인이 수신될 때, 시장 메이커 블록(351)에 의해 생성된 이산 이벤트로부터 값 추출기 블록에 의해 제공됨)에 합산하는 합산기 블록에 의해 지정된 판매를 위한 가격이 제공된다. 판매 시장 메이커 블록(352)에는, 구매 시장 메이커 블록(351)에 의해 구매된 누산된 수량을 제공하는 누산기 블록에 의해 지정된 판매를 위한 수량이 제공되고, 상기 수량은 이행 확인들이 시장 메이커 블록(351)에 의해 수신될 때 이산 이벤트들로부터 추출된다.
따라서, 알고리즘이 실행될 때, 구매 시장 메이커 블록(351)은 최상의 입찰 가격에서 10의 수량을 구매하고, 이행 가격과 최소 가격 증분의 합에서 10의 수량을 (아마도 다수의 판매 주문들에 걸쳐) 판매할 것이다.
도 3n에 예시된 바와 같이, 알고리즘의 커버링 논리 부분과 연관된 블록들은 이들 주변의 상자(353)를 드로잉(drawing)함으로써 선택된다. 또한, 다른 사용자 인터페이스 기술들은, 예를 들면, 시프트 또는 제어 키를 누르는 것과 조합하여 커서로 선택하는 것과 같이 사용자에게 관심있는 블록들을 선택하는데 사용될 수 있다.
일단 블록들이 선택되면, 이들은 메뉴 아이템을 선택하는 것과 같은 동작에 의해 그룹화될 수 있다.
도 3o에 예시된 바와 같이, 그후, 그룹화된 블록들은 그 안에 포함된 블록들의 섬네일(thumbnail) 이미지로 그룹 블록(353) 내에 디스플레이된다. 그룹 블록(353)은, 도시된 블록들의 수 및 접속들을 감소시킴으로써 설계 캔버스 영역(311)의 클러터를 감소시킨다. 또한, 그룹 블록은 그가 또 다른 알고리즘에서 로딩되고 재사용될 수 있도록 모듈들의 라이브러리에 저장될 수 있다. 그룹 블록은 또한 그룹화된 블록으로서 지칭될 수 있다. 그룹 블록 내의 블록들은 또한 규정된 알고리즘의 일부분, 서브-알고리즘, 또는 서브루틴으로서 지칭될 수 있다.
그룹 블록(353)은 그룹 블록(353) 내에 존재하지 않는 블록들의 출력들에 의해 값들이 제공되는 그룹 블록(353) 내의 블록들의 입력들에 대응하는 입력들(354)로 생성될 수 있다. 예를 들면, 도 3o에 예시된 바와 같이, 그룹 블록(353)은 연속적인 기구 입력 및 이산 이벤트를 갖는다. 연속적인 기구 입력은 판매 시장 메이커 블록(352) 및 최소 가격 증분을 결정하는 기구 필드 블록의 연속적인 기구 입력들에 대응한다. 이산 입력은 누산기 블록 및 값 추출 블록의 이산 입력에 대응한다.
그룹 블록(353)이 선택되고, 그후, 메뉴 아이템을 선택하는 것 또는 더블-클릭과 같은 동작을 사용하여, 그룹 블록(353)에 포함된 블록들이 편집될 수 있다. 도 3p에 예시된 바와 같이, 설계 캔버스 영역(311)과 유사한 설계 캔버스 영역을 갖는 새로운 윈도우가 동일한 방식으로 디스플레이 및 조작될 수 있다. 그룹 블록(353)은, 그룹 블록(353)의 입력들에 대응하는 2 개의 새로운 입력 블록들(355 및 356)을 포함한다. 입력 블록(355)은 그룹 블록(353)의 연속적인 기구 입력에 대응하고, 입력 블록(356)은 그룹 블록(353)의 이산 입력에 대응한다. 각각의 입력 블록(355 및 356)은 그룹 블록(353)의 각각의 입력에 제공되는 값을 제공하는 단일 출력을 갖는다.
도 3p에 도시되지 않지만, 그룹 블록(353) 내의 블록들 중 어느 것도 그룹 블록(353) 외부의 블록에 접속된 출력을 갖지 않기 때문에, 그룹 블록은 또한 출력 블록들을 포함한다. 상술된 입력 블록들과 유사하게, 출력 블록들은 그룹 블록의 출력들에 대응한다. 출력들을 갖는 그룹 블록 내의 블록들은 그룹 블록의 대응하는 출력에 접속된 그룹 블록 외부의 블록들에 값들을 제공할 것이다.
그룹 블록을 설계할 때, 입력 블록들 및 출력 블록들은 그룹 블록에 대한 입력 또는 출력을 생성하도록 배치될 수 있다. 배치될 때, 사용자는 입력 또는 출력의 형태를 지정하도록 프롬프트될 수 있다. 대안적으로 입력 또는 출력 블록은 연속적인 수치와 같이 미리 규정된 형태로 디폴팅될 수 있다. 입력 또는 출력 블록의 형태는, 예를 들면, 입력 또는 출력 블록을 선택하고, 형태를 입력하도록 프롬프트될 메뉴 아이템 또는 더블-클릭과 같은 동작을 사용함으로써 알고리즘의 설계 동안에 사용자에 의해 변경될 수 있다. 마찬가지로, 사용자는 또한 입력 또는 출력 블록(및 그룹 블록의 대응하는 입력 또는 출력)에 대한 명칭을 지정할 수 있다.
그룹 블록은 또 다른 그룹 블록을 포함할 수 있다. 그룹 블록들의 이러한 네스팅(nesting)은 알고리즘들의 다양한 부분들의 더 적은 클러터 및 잠재적으로 더 큰 재사용 가능성을 허용한다.
프로그램 코드를 생성할 때, 그룹 블록은, 설계된 알고리즘에 대한 주요 CustomAlgorithm() 클래스 내에 네스팅된 알고리즘 클래스의 서브클래스로서 생성된다. 그룹 블록들이 다른 그룹 블록들 내에 네스팅될 때, 생성된 프로그래밍 코드는 각각의 생성된 서브클래스를 유사하게 네스팅한다. 또한, 임의의 비-원시 블록들은 그들의 가장 가까운 그룹-블록 패런트 내에 선언 및 규정된다. 그래서, 예를 들면, 그룹 블록이 3 개의 그룹 블록들 딥으로 네스팅되고, 그룹 블록이 그 안에 시장 메이커 블록(비-원시 블록의 예)을 갖는다면, 시장 메이커 블록의 서브클래스는 3 개의 딥 유도된 알고리즘 클래스 내에 상주할 것이다.
상술된 스캘핑 알고리즘으로 돌아가서, 도 3m에 예시된 바와 같이, 이러한 알고리즘은 결점을 갖는다. 스캘핑 알고리즘이 최상의 입찰 가격에서 구매하고, 그후 이행 가격 위의 하나의 거래 증분에서 판매하는 것을 목적으로 하여, 구매 및 판매된 유닛 당 하나의 거래 증분의 이윤을 낸다는 것을 상기하라. 구매 시장 메이커 블록(351)이 그가 배치한 구매 주문에 대해 10의 전체 수량에 대한 단일의 이행을 수신하면, 알고리즘은 의도된 바와 같이 동작할 것이다. 그러나, 2 개 이상의 이행 확인이 2 개 이상의 가격 레벨에서 수신되면, 알고리즘은 원하는 바와 같이 기능하지 않을 것이다. 예를 들면, 구매 시장 메이커 블록(351)이 114125의 최상의 입찰 가격에서 10의 수량을 구매하기 위한 주문을 작업한다고 가정하라. 그후, 3의 수량에 대해 제 1 이행 확인이 수신된다(따라서, 제 1 이행은 114125의 이행 가격에서 3의 수량에 대한 것임). 이러한 이행에 응답하여, 판매 시장 메이커 블록(352)은 114150(114125(이행 가격) + 25(최소 가격 증분))에서 3의 수량을 판매하기 위한 주문을 작업할 것이다. 이제 최상 입찰 가격이 114100으로 감소한다고 가정하라. 그후, 구매 시장 메이커 블록(351)은 7의 수량에 대해 새로운(및 지금 더 낮은) 최상의 입찰 가격으로 그의 작업중인 주문의 견적을 낼 것이다. 그후, 7의 수량에 대한 제 2 이행 확인이 수신된다(따라서, 제 2 이행은 114100의 이행 가격에서 7의 이행에 대한 것임). 따라서, 스캘핑 알고리즘의 원하는 거동은, 3의 수량에 대한 제 1 판매 주문(제 1 이행을 커버하기 위해)이 11450(114125 + 25)의 가격에서 배치되어야 하고, 7의 수량에 대한 제 2 판매 주문(제 2 이행을 커버하기 위해)이 114125(114100 + 25)의 가격에서 배치되어야 한다는 것이다.
그러나, 도 3m에 예시된 알고리즘은 원하는 거동을 성취하기 위해 주문들을 적절히 작동시키지 않을 것이다. 제 1 이행이 수신될 때, 판매 시장 메이커 블록(352)은 114125 + 25의 가격에서 3의 수량을 판매하기 위해 제 1 커버 주문을 배치할 것이다. 그러나, 제 1 커버 이행이 이행되기 전에, 제 2 이행이 수신되면, 누산기 블록(10의 수량이 이행된 것을 반영하도록 업데이트됨)으로부터 견적을 내기 위한 새로운 수량을 수신하는 판매 시장 메이커 블록(352)은 114100 + 25의 가격(가장 최근의 이행(제 2 이행)의 가격과 최소 가격 증분의 합)에서 10의 수량에 대한 그의 커버 주문을 작동시킬 것이다. 결과적으로, 제 1 이행은 원하는 가격에서 커버되지 않을 것이다(이것은 의도되지 않고 및/또는 원하지 않는 거동임). 여기서, 커버 주문이 완전히 이행되면, 알고리즘의 원하는 거동이 수신된 각각의 이행에 대해 특정 가격 및 수량에서 작동될 커버 주문들에 대한 것일지라도, 커버 주문에 대한 10의 전체 수량은 동일한 가격에서 이행될 것이다.
거래 애플리케이션(300)의 가상화 특징은 이러한 성질의 문제점들을 해소한다. 그룹 블록이 선택되고, 그후, 메뉴 아이템을 선택하는 것과 같은 동작을 사용하여, 가상화될 그룹 블록이 지정될 수 있다. 도 3q에 예시된 바와 같이, 그룹 블록(353)이 가상화되고, 그룹 블록(353)의 경계를 실선에서 점선으로 변경함으로써 이것이 표시된다. 특정 실시예들에서, 예를 들면, 블록의 명칭에 텍스트를 첨부하고, 경계 컬러, 배경 컬러 또는 배경 패턴을 변경하는 것과 같이 다양한 방법들로 가상화된 바와 같이, 그룹 블록이 지정될 수 있다.
가상화된 그룹 블록에 제공된 각각의 이산 이벤트에 대해, 가상화된 그룹 블록의 인스턴스가 생성된다. 즉, 이산 이벤트가 가상화된 그룹 블록에서 수신될 때마다, 이산 이벤트를 처리하기 위해 가상화된 그룹 블록의 새로운 인스턴스가 생성된다. 이것은 상술된 원하는 거동: 각각의 이산 이벤트가 그 이산 이벤트에 대해 특정한 정보에 기초하여 그룹 블록의 로직에 의해 처리되는 것을 처리한다. 상기 예에 계속해서, 그러나, 가상화될 그룹 블록(353)을 지정하여, 이행을 위한 시장 메이커 블록(351)에 의해 생성된 각각의 이산 이벤트는 가상화된 그룹 블록(353)의 새로운 인스턴스가 특정 이산 이벤트를 처리하기 위해 생성되도록 할 것이다.
따라서, 가상화될 모든 그룹 블록은 이산 이벤트 입력을 가져야 하고, 왜냐하면, 이것은 새로운 인스턴스가 생성되도록 하는 가상화된 그룹 블록에 대한 이산 이벤트의 통지이기 때문이다. 일단 가상화된 그룹 블록이 예시화되면, 특정 인스턴스는 그의 범위 외부로부터(즉, 가상화된 그룹 블록 내에 존재하지 않는 블록들로부터) 이산 이벤트들을 더 이상 수신하지 않는다. 오히려, 가상화된 그룹 블록의 범위 외부로부터의 임의의 후속 이산 이벤트들은 가상화된 그룹 블록의 새로운 인스턴스의 생성을 초래할 것이다. 그러나, 이산 이벤트들은 가상화된 그룹 블록 내의 블록들에 의해 여전히 생성 및 처리될 수 있고, 가상화된 그룹 블록 내부에서 생성된 이산 이벤트는 가상화된 그룹 블록의 이산 입력에 제공될 수 있다. 도 3r은, 3 개의 이산 이벤트들이 시장 메이커 블록(351)에 의해 생성될 때 알고리즘의 로직이 어떻게 작동할지를 개념적으로 예시한다. 그룹 블록(353)의 3 개의 인스턴스들은 구매 시장 메이커 블록(351)으로부터의 3 개의 이산 이벤트들 각각에 응답하여 예시화된다. 디스플레이된 알고리즘이 실제로 도 3q에 예시된 바와 같이 단일의 가상화된 그룹 블록(353)만을 도시하고, 도 3r에 도시된 3 개의 인스턴스들이 그룹 블록을 가상화하는 개념만을 표시하도록 도시된다는 것을 유의하라. 특정 실시예들에서, 그룹 블록의 인스턴스들의 수가 표시될 수 있다. 예를 들면, 인스턴스들의 수는, 가상화된 그룹 블록의 스택을 도시함으로써 도 3r에 도시된 것과 유사한 방식으로 그래픽으로 표시될 수 있고, 스택의 크기는 예시화되는 가상화된 그룹 블록의 인스턴스들의 수를 표시한다. 또 다른 예로서, 인스턴스들의 수는 예시화된 가상화된 그룹 블록의 인스턴스들의 수의 카운트로서 표시하는 그룹 블록 내에 (가령, 코너에) 디스플레이된 수로 표시될 수 있다.
또한, 가상화된 그룹 블록은 연속적인 출력을 가질 수 없는데(그러나, 가상화된 그룹 블록은 이산 출력들을 가질 수 있음), 왜냐하면 그러한 출력의 값이 구문적으로 규정되지 않기 때문이다. 이것은 가상화된 그룹 블록의 2 개 이상의 인스턴스가 존재할 수 있고(또는 이산 이벤트가 그에 대해 여전히 수신되지 않는다면, 잠재적으로 어떠한 인스턴스들도 없음), 그러한 연속적인 출력은 동시에 상이한 값들(또한 전혀 어떠한 값도 갖지 않음)을 가질 수 있기 때문이다. 또한, 가상화된 그룹 블록은 변수인 것으로 지정된 블록을 포함할 수 없는데, 가상화된 그룹 블록이 예시화될 때까지 변수가 존재하지 않을 것이기 때문이다.
그룹 블록들이 상술된 바와 같이 네스팅될 수 있기 때문에, 가상화된 그룹 블록은 또 다른 그룹 블록 또는 또 다른 가상화된 그룹 블록을 포함할 수 있다.
프로그램 코드를 생성할 때, 가상화된 그룹 블록은 상술된 바와 같이 비-가상화된 그룹 블록과 같이 알고리즘의 서브클래스로서 생성된다. 그러나, 예시화되기보다는, 주요 CustomAlgorithm0 클래스, 가상화된 그룹 블록에 대한 서브클래스들의 초기에 빈 리스트가 유지될 때 및 이산 이벤트가 가상화된 그룹 블록에 대응하는 서브클래스에 제공되는 것일 때, 가상화된 그룹 블록 서브클래스의 새로운 인스턴스가 생성된다.
클라이언트 디바이스 및 알고리즘 서버 간의 네트워크 접속이 예상외로 끊길 수 있다. 예를 들면, 알고리즘 서버에 접속하기 위해 클라이언트 디바이스에 의해 사용되는 인터넷 서비스 제공자("ISP")는, 클라이언트 디바이스와 알고리즘 서버 간의 통신을 파괴할 수 있는 라우터 실패 또는 물리적으로 끊긴 통신 링크를 가질 수 있다. 또 다른 예로서, 네트워크 내의 중간 노드는 또한 클라이언트 디바이스와 알고리즘 서버 간의 통신을 파괴하여 실패할 수 있다. 또 다른 예로서, 클라이언트 디바이스는 알고리즘 서버에 대한 접속을 파괴하여 고장날 수 있다. 현재 시스템들에서, 그러한 접속이 파괴될 때, 알고리즘은 접속이 파괴되었다는 것을 알지 못하고 실행을 중지 또는 계속한다. 전자의 경우에서, 거래자는 그가 용이하게 회피(그의 접속이 다운이기 때문에, 잠재적으로 전혀 회피할 수 없음)할 수 없는 개방 위치들에 남겨질 수 있다. 후자의 경우에, 거래자는, 더 이상 정확하게 동작하지 않거나 시장의 조건들에서의 변화들에 대해 부적절할 수 있는 알고리즘을 중지 또는 정지시키고, 그 알고리즘에 대한 파라미터들을 수정할 수 없을 수 있다. 종종 거래자들은 매우 위험할 수 있는 알고리즘들을 실행하고, 그들은 즉석에서 알고리즘들을 끄거나 파라미터들을 변경할 수 있을 것을 원할 수 있다.
특정 실시예들에서, 하나 이상의 블록들은 클라이언트 디바이스와 알고리즘 서버 사이의 접속 상태를 알도록 지정될 수 있다. 예를 들면, 배치될 때, 클라이언트 디바이스 및 알고리즘을 실행하는 알고리즘 서버 사이의 접속이 해제될지라도 블록이 계속해서 실행되어야 한다는 것을 지정하기 위한 옵션이 사용자에게 제시될 수 있다. 상기 옵션은 또한 블록을 선택하고 메뉴 아이템 또는 키보드 명령과 같은 동작을 사용함으로써 지정될 수 있다. 디폴트에 의해, 알고리즘은 클라이언트 디바이스와 알고리즘 서버 간의 접속이 파괴될 대 중지 또는 중단될 수 있다. 특정 실시예들에서, 전체 알고리즘은, 클라이언트 디바이스와 알고리즘을 실행하는 알고리즘 서버 간의 접속이 해제될지라도 계속해서 실행되도록 지정된다.
예를 들면, 시장 메이커 블록은, 클라이언트 디바이스와 알고리즘 서버 간의 접속이 파괴될지라도 시장에서 시장 메이커 블록에 의해 생성된 주문들을 유지하기 위한 옵션을 가질 수 있다. 알고리즘의 헤지 또는 커버 주문 부분에서 사용되는 시장 메이커 블록은, 접속이 파괴되기 때문에, 주문들을 배치하는 알고리즘의 부분이 더 이상 실행되지 않을지라도, 알고리즘의 또 다른 부분에 의해 취해진 임의의 위치가 원하는 대로 헤지 또는 커버되도록 이러한 방식으로 구성될 수 있다.
특정 실시예들에서, 입력 블록은 클라이언트 디바이스와 알고리즘 서버 간의 접속의 상태를 나타내는 연속적인 불 출력을 제공하는 설계된 알고리즘에 부가될 수 있다. 그후, 블록들은 그들의 거동을 제어하기 위해 입력으로서 이러한 접속 상태 입력 블록으로부터의 값을 취할 수 있다. 예를 들면, 접속 상태 입력 블록은 시장 메이커 블록의 조건부 입력에 접속될 수 있어서, 접속 상태가 참(접속됨을 표시함)일 때 시장 메이커 블록만이 작동한다.
일단 알고리즘이 거래 인터페이스(310)에 규정되면, 이것은 저장될 수 있다. 알고리즘에는 또한 명칭이 주어질 수 있다(예를 들면, 알고리즘이 구축되는 동안 및/또는 알고리즘이 저장될 때). 그후, 저장된 알고리즘은 거래 인터페이스(310) 또는 또 다른 거래 인터페이스를 통해 미래의 시간에서 소환 또는 참조될 수 있다. 예를 들면, 저장된 알고리즘은 거래 인터페이스(310)를 통해 로딩될 수 있어서, 또 다른 주문에 대해 상기 알고리즘이 편집 또는 재사용될 수 있다. 또 다른 예로서, 저장된 알고리즘은 후술되는 바와 같이 또 다른 거래 인터페이스로부터 주문 형태로서 참조될 수 있다.
상술된 거래 인터페이스(310)의 컴포넌트들, 엘리먼트들, 및/또는 기능은, 예를 들면, 홀로 또는 다양한 형태들의 하드웨어, 펌웨어와 조합하여, 및/또는 소프트웨어의 명령들의 세트로서 구현될 수 있다. 특정 실시예들은, 범용 컴퓨터 또는 다른 처리 디바이스 상에서 실행을 위해 메모리, 하드 디스크, CD-ROM, DVD, EPROM과 같은 컴퓨터-판독 가능 매체 상에 상주하는 명령들의 세트로서 제공될 수 있다.
IV. 알고리즘 런칭 및 관리
특정 실시예들은 주문 형태로서 선택된 알고리즘에 의해 관리될 주문의 배치를 개시하는 것을 제공한다. 특정 실시예들은 값 축으로부터 선택된 사용자-규정 거래 알고리즘에 의해 관리될 주문의 배치를 개시하는 것을 제공한다. 특정 실시예들은 알고리즘이 주문을 관리하는 동안 알고리즘에 대한 변수를 변경하는 것을 제공한다. 특정 실시예들은 알고리즘에 의해 관리되는 주문을 수동으로 수정하는 것을 제공한다. 특정 실시예들은 주문을 관리하기 위해 비관리되는 주문에 알고리즘을 할당하는 것을 제공한다. 특정 실시예들은 값 축 상의 상이한 사용자-규정 거래 알고리즘들에 의해 관리되는 작업중인 주문들을 디스플레이하는 것을 제공한다.
도 4a 내지 도 4f는 특정 실시예들에 따른 거래 인터페이스들을 예시한다. 도 4a에 예시된 바와 같이, 거래 인터페이스(410)는 저장된 알고리즘이 주문 형태로서 선택되도록 허용하는 주문 티켓이다. 저장된 알고리즘은, 예를 들면, 상술된 거래 인터페이스들(200 및 310)과 유사한 거래 인터페이스를 사용하여 저장될 수 있다.
저장된 알고리즘은, 예시된 바와 같이, 표준 주문 형태들(가령, 제한 및 시장) 및 저장된 알고리즘들 양자를 포함하는 드롭-다운 리스트를 제공하는 선택 인터페이스(415)를 사용하여 선택될 수 있다. 특정 실시예들에서, 선택 인터페이스(415)는 이용 가능한 저장된 알고리즘들로부터 선택하기 위한 다른 엘리먼트들을 포함한다. 예를 들면, 선택 인터페이스(415)는 특정 알고리즘에 대해 브라우징하기 위해 파일 내비게이터를 개방시킬 수 있다. 또 다른 예로서, 선택 인터페이스(415)는 알고리즘 형태에 기초하여 계층으로 분류된 저장된 알고리즘들의 트리 뷰(tree view)를 포함할 수 있다.
거래 인터페이스(420)는, 또한 저장된 알고리즘이 선택 인터페이스(415)를 통해 다른 형태로서 선택되도록 허용하는 간략화된 주문 티켓이다.
주문이 거래 인터페이스(410 또는 420)로부터 개시되고, 저장된 알고리즘이 다른 형태로서 선택될 때, 주문은 선택된 알고리즘에 따라 관리된다. 선택된 알고리즘이 거래 인터페이스로부터의 파라미터들(가령, 주문 티켓 가격 또는 수량)을 취하도록 구성되면, 거래 인터페이스(410 또는 420)에 지정된 값들은 그가 실행될 때 알고리즘에 제공될 것이다.
도 4b 및 도 4c에 예시된 바와 같이, 선택 인터페이스(415)를 사용하여 알고리즘 주문 형태가 선택된 후, 거래 인터페이스(430)(상술된 거래 인터페이스(410)와 유사한 주문 티켓 스타일 거래 인터페이스) 및 거래 인터페이스(440)(시장 깊이 사다리 또는 축 스타일 거래 인터페이스)가 도시된다. 여기서, 선택된 알고리즘은 도 2i에 예시된 것과 유사하다. 거래 인터페이스(440)는 거래 가능한 물건에 대한 가격 레벨들에 대응하거나 이에 기초한 값들을 포함하는 값 축을 포함할 수 있다. 값들은, 예를 들면, 거래 가능한 물건에 대한 가격들(가령, 가격 축에서)일 수 있다. 값 축 내의 값들에 대응하는 가격 레벨들에서 이용 가능한 수량과 같이, 거래 가능한 물건에 관련된 정보는 또한 값 축을 따라 디스플레이될 수 있다. 알고리즘의 변수들이 변수 영역들(435 및 445) 각각에 도시되고, 주문을 개시하기 전에 변경될 수 있다. 변수 영역(435)은 동일한 윈도우의 부분으로서 거래 인터페이스(430)에 통합된다. 변수 영역(445)은 개별적인 윈도우로서 거래 인터페이스(440)에 통합된다. 변수 영역(435 및 445) 내의 변수들은, 도 2i에 예시된 바와 같이, 변수 영역(206)의 디폴트 값 컬럼(272) 내에 지정된 값들로 디폴팅된다. 변경될 때, 개시된 주문은 변경된 변수 값들을 갖는 선택된 알고리즘에 따라 작업될 것이다.
도 4d에 예시된 바와 같이, 거래 인터페이스(450)는 시장에서 작동하는 주문들을 도시하는 주문 북이다. 여기서, 알고리즘(또한 도 2i에 예시된 것과 유사함)에 따라 작동되는 주문(451)이 선택된다. 알고리즘의 변수들이 변수 영역(455)(변수 영역들(435 및 445)과 유사함)에 도시되고, 변경될 수 있다. 변경(및 변화가 적용됨)될 때, 알고리즘은 변경된 변수 값들에 따라 계속해서 실행될 것이다. 변수들에 대한 변화는 알고리즘을 중지 또는 정지시키지 않고 발효된다.
특정 실시예들에서, 거래 인터페이스(450)는 사용자가 알고리즘에 의해 관리되는 주문을 수동으로 수정하도록 허용한다. 예를 들면, 사용자는 주문의 가격 또는 수량을 변경하거나 주문을 삭제할 수 있다. 예를 들면, 응답하여, 주문을 관리하는 알고리즘은 주문 가격을 변경할 수 있고, 알고리즘은 주문 수량을 변경할 수 있고, 알고리즘은 아무것도 하지 않을 수 있거나, 알고리즘은 어떠한 새로운 동작을 수행하지 않을 수 있지만, 알고리즘 규정에 따라 사용하기 위해 수동 수정에 기초하여 새로운 정보 또는 임계치들을 가질 수 있다.
특정 실시예들에서, 거래 인터페이스(450)는 알고리즘에 의해 관리되지 않는주문(예를 들면, 수동으로 입력된 주문)을 포함할 수 있다. 이러한 관리되지 않는 주문이 선택될 수 있고, 알고리즘이 이에 적용될 수 있다. 예를 들면, 사용자는 관리되지 않는 주문을 선택할 수 있고, 메뉴 아이템 또는 키보드 명령과 같은 동작을 사용하여, 선택된 관리되지 않는 주문에 적용하기 위한 이용 가능한 알고리즘들의 리스트가 사용자에게 제시될 수 있다. 이용 가능한 알고리즘들의 리스트는, 예를 들면, 주문 블록을 포함하는 저장된 알고리즘들을 포함할 수 있다. 선택된 관리되지 않는 주문에 적용될 때, 선택된 알고리즘은 알고리즘에 따라 주문을 관리할 수 있다. 또 다른 예로서, 사용자는 관리되지 않는 GTC(good-til-cancelled) 주문을 선택하고, 선택된 알고리즘을 이에 적용할 수 있어서, 알고리즘이 미래의 거래 세션들에 걸쳐 주문을 관리할 수 있다.
도 4e에 예시된 바와 같이, 거래 인터페이스(460)는 상술된 거래 인터페이스(440)와 유사한 시장 깊이 사다리 또는 축 스타일 거래 인터페이스이다. 몇몇의 주문들이 개시되고, 상이한 가격 레벨들에서 작업하는 것으로 예시된다. 주문들(461)은 제 1 알고리즘으로 관리되도록 개시되고, 주문들(462)은 제 2 알고리즘으로 관리되도록 개시된다. 따라서, 거래 인터페이스(460)는 동일한 알고리즘에 따라 관리되는 다수의 작업중인 주문들을 디스플레이하는 단일 인터페이스를 제공한다. 또한, 거래 인터페이스(460)는 다수의 알고리즘들에 따라 관리되는 작업중인 주문들을 디스플레이하는 단일 인터페이스를 제공한다.
특정 실시예들에서, 특정 알고리즘에 따라 관리되는 작업중인 주문들이 공통으로 식별된다. 예를 들면, 제 1 알고리즘과 연관된 각각의 작업중인 주문은, 예를 들면, 특정 배경 컬러, 전경 컬러, 배경 패턴, 경계 컬러, 경계 스타일, 형상, 심볼, 숫자, 텍스트, 및/또는 폰트를 사용하여 그래픽으로 식별될 수 있다. 그후, 제 2 알고리즘과 연관된 작업중인 주문들은, 예를 들면, 상이한 컬러, 패턴, 경계, 형상, 심볼, 숫자, 텍스트, 및/또는 폰트를 사용하여 식별될 수 있다.
특정 실시예들에서, 특정 알고리즘에 따라 관리되는 작업중인 주문이 개별적으로 식별된다. 예를 들면, 동일한 알고리즘의 상이한 인스턴스와 연관된 각각의 작업중인 주문은 컬러, 패턴, 경계, 형상, 심볼, 숫자, 텍스트, 및/또는 폰트와 같은 식별자를 사용하여 상기 알고리즘의 상이한 인스턴스들과 연관된 다른 작업중인 주문과 구별될 수 있다. 알고리즘의 제 1 인스턴스에 따라 관리되는 주문들은 그들의 작업중인 주문 표시자들의 코너에 숫자 "1"을 가질 수 있고, 반면에 알고리즘의 제 2 인스턴스에 따라 관리되는 주문은 그들의 작업중인 주문 표시자들의 코너에 숫자 "2"를 가질 수 있다. 특정 알고리즘의 상이한 인스턴스들에 의해 관리되는 작업중인 주문들의 표시는, 상술된 상이한 알고리즘에 의해 관리되는 작업중인 주문들의 표시와 조합하여 적용될 수 있다.
도 4f에 예시된 바와 같이, 거래 인터페이스(470)는 알고리즘 관리기이다. 거래 인터페이스(470)는 또한 조종석(cockpit) 또는 계기판(dashboard)으로서 지칭될 수 있다. 거래 인터페이스(470)는 이용 가능한 알고리즘들의 리스트(471)를 포함한다. 특정 알고리즘은 리스트(471)로부터 선택될 수 있다. 알고리즘이 선택될 때, 선택된 알고리즘의 뷰가 뷰 영역(472)에 디스플레이되고, 선택된 알고리즘의 실행중인 인스턴스들의 리스트(473)가 또한 디스플레이된다. 예시된 바와 같이, 뷰 영역(472)은 상술된 거래 인터페이스(310)와 유사한 거래 인터페이스를 사용하여 이루어진 알고리즘 규정을 도시할 수 있다. 그러나, 뷰 영역(472)은 또한 상술된 거래 인터페이스(200)와 유사한 거래 인터페이스를 사용하여 규정된 알고리즘의 뷰를 도시할 수 있다. 선택된 알고리즘의 실행중인 인스턴스들의 리스트(473)는, 예를 들면, 알고리즘이 개시된 시간, 그의 위치, 상태, 이윤 및 손실, 작업중인 주문들의 수, 이행된 주문들의 수, 가장 최근의 주문이 배치되고 및/또는 이행이 수신된 기구, 및/또는 주문 계좌 정보와 같은 실행중인 인스턴스에 관한 정보를 포함할 수 있다.
또한, 변수 영역(474)은 선택된 알고리즘의 변수들 및 선택된 알고리즘의 선택된 인스턴스에 대한 상기 변수들의 값들을 디스플레이한다. 변수 영역(474)은 상술된 변수 영역들(425, 445, 및 455)과 유사하다. 선택된 알고리즘의 선택된 인스턴스에 대한 변수들이 변경될 수 있다. 변경(및 변화가 적용됨)될 때, 알고리즘은 변경된 변수 값들에 따라 계속해서 실행될 것이다. 변수들에 대한 변화는 알고리즘을 중지 또는 정지시키지 않고 발효된다.
특정 실시예들에서, 거래 인터페이스들(200, 290, 310, 410, 420, 430, 440, 450, 460 및/또는 470)과 같은 거래 인터페이스는, 알고리즘에 의해 관리되는 주문이 거래 세션의 근처에서 이행되지 않을 때 사용자가 거동을 지정하도록 허용하도록 구성된다. 예를 들면, 거래 인터페이스는 알고리즘에 의해 관리되는 불이행된 주문이 취소되고 알고리즘이 정지되어야 한다는 것을 사용자가 지정하도록 허용할 수 있다. 또 다른 예로서, 거래 인터페이스는 알고리즘에 의해 관리되는 불이행된 주문이 다음 거래 세션의 시작에서 계속해서 관리되어야 한다는 것을 사용자가 지정하도록 허용한다. 또 다른 예로서, 거래 인터페이스는 알고리즘에 의해 관리되는 불이행된 주문이 다음 거래 세션의 시작에서 중지되어야 한다는 것을 사용자가 지정하고 사용자에 의해 중지되지 않을 때 알고리즘에 의해 관리되도록 재개하도록 허용할 수 있다.
상술된 거래 인터페이스들(410, 420, 430, 440, 450, 460 및/또는 470)의 컴포넌트들, 엘리먼트들, 및/또는 기능은, 예를 들면, 하드웨어, 펌웨어 및 소프트웨어의 명령들의 세트의 다양한 형태들로 홀로 또는 조합하여 구현될 수 있다. 특정 실시예들은 범용 컴퓨터 또는 다른 처리 디바이스 상에서의 실행을 위해, 메모리, 하드 디스크, CD-ROM, DVD, EPROM, 및/또는 파일 서버와 같은 컴퓨터-판독 가능 매체 상에 상주하는 명령들의 세트로서 제공될 수 있다.
V. 랭킹 툴
도 5는 특정 실시예들에 따른 랭킹 툴(500)을 예시한다. 랭킹 툴(500)은, 예를 들면, 헤지 옵션들을 랭킹하기 위해 사용될 수 있다. 미래의 거래에서, 가장 일반적인 전략들 중 하나는 "스프레드 거래"이고, 이것은 하나의 기구 내의 시장 지향성 위험 노출을 갖는 거래자가 기꺼이 하나 이상의 동일 기구들에서의 거래를 오프셋으로 배치함으로써 그의 위험을 헤지하고, 거래자의 위험의 변동을 최소화 또는 감소시키는 방법이다. 2 개의 위치들이 개시되는 2 개의 가격들은 결합 또는 스프레드 가격을 생성한다. 그후, 거래자는 사실상, 바람직하게, 그가 개시한 가격 위치로부터 이윤을 산출하는 스프레드 가격 차이에서 개방 위치를 해소 거래하는 거래들을 수행하려고 시도할 수 있다.
몇몇의 자동화된 거래 프로그램들에 대해, 거래자에 대한 위험을 자동적으로 헤지하는 헤지 기술이 구현될 수 있다. 이러한 헤지 기술은 하나의 특정 기구에서 헤지하도록 자동화될 수 있거나, 미리-프로그래밍된 방법에 따라 복수의 기구 선택들 사이에서 선택하도록 프로그래밍될 수 있다. 그러나, 현재 시스템들은 미리 결정된 기구 선택들에 매이지 않은 거래들을 헤지하는 것을 제공하지 않는다.
특히, 시장 메이커에 대해 비자동화된 스프레드 거래 위치를 개시하는데 있어서의 어려움은, 기술에서 속도 이득들로 인해, 시장 메이커의 거래들을 가장 효율적으로 헤지하기 위한 기회들이 매우 어렵게 된다는 것이다. 시장들에서 역할을 제공하는 그들의 유동성의 성질로 인해, 시장들이 상대방에게 유동성을 제공(즉, 거래 실행을 수신함)한다는 것이 어떠한 공지 또는 준비 없이 시장 메이커에게 자주 통지된다. 갑자기 개방 거래 위치를 획득할 수 있는 시장 메이커 또는 임의의 거래자에 대해, 스프레드의 제 1 레그가 개시될 때 및 거래자가 이러한 거래를 헤지할 수 있을 때 사이의 시간 갭은 효율적인 헤지 및 위험 관리에 대해 심각한 손상이 된다. 거래를 신속하게 헤지할 수 없는 거래자는 수백, 수천 또는 심지어 수백만 달러를 잃을 수 있다. 거래자는 헤지할 그들의 최상의 기구가 어느 기구인지를 결정하기 위해 시간을 소모해야 할 뿐만 아니라 그들은 또한 헤지 거래를 실행해야 한다.
특정 실시예들은 스프레드 위치를 최적으로 생성(그러나, 생성하는 것으로 제한되지 않음)하기 위해 거래를 수동으로 헤지하는데 있어서 2 개의 별개의 속도 이점들을 제공하는 랭킹 툴(500)을 제공한다. 제 1 양상은, 임의의 특정 순간에 구매 또는 판매하기 위한 가장 이로운 기구가 어떠한 계약(들)인지를 우선 순위로 결정하기 위해 파라미터들의 미리-프로그래밍된 방법에 의해 일정하게 분석되는 기구들의 그룹을 사용자가 미리-선택하게 한다. 일 실시예에서, 이러한 기술은 프로그램이 고려하는 기구에서 기존의 스프레드 시장들의 다양한 입찰/매도 레벨들을 분석하도록 구현될 수 있다. 또 다른 실시예에서, 이러한 기술은 어떠한 거래가 거래자의 전체 위험을 최상으로 낮추는데 있어서 거래자를 도울 것인지를 결정하기 위해 거래의 거래 위치 인벤토리를 조사할 수 있다. 실제로, 상기 시스템의 실행 프로세스를 지지하는 방법들은 무제한적이다. 이러한 정보는, 거래자의 위험을 헤지하는 기구가 무엇인지를 결정하도록 요구된 시간을 제거하기 위해 거래자에 의해 사용될 수 있다.
최적의 헤지를 제공하는 기구가 무엇인지를 자동적으로 분석하기 위한 기능 이외에, 랭킹 툴(500)의 또 다른 양상은, 랭킹 툴(500)이 상술된 미리-프로그래밍된 헤지 방법에 따라 시장에서 이용 가능한 "최상의" 헤지 또는 헤지들의 그룹을 실행하기 위해 구매 또는 판매 주문 또는 주문들의 그룹을 실제로 자동적으로 입력하는데 사용될 수 있다는 것이다. 요구된 거래자의 단지 잠재적인 동작들은 고려 사항 하에서 기구들을 미리-선택하고, 원하는 수량(미리-설정될 수 있음)을 입력하고, 거래 인터페이스 상에서 구매 또는 판매 실행 헤딩을 클릭하는 것이다. 이러한 자동화된 헤지기(hedger)는, 거래자의 원하는 랭킹 방법과 정렬하는 이로운 스프레드 가격에서 누산되어야 하는 다양한 헤지 거래 인벤토리를 거래자에게 남겨둔다. 랭킹 툴(500)은, 매우 다양한 시장 상황들 하에서 헤지하기에 어려울 수 있는 거래를 실행하는 것의 위험이 있는 임의의 거래자에게 유용하다.
랭킹 툴(500)은 사용자가 분석을 위해 식별 또는 선택할 수 있는 거래 가능한 물건의 리스트를 갖는 선택 영역(510)을 포함한다. 이러한 예에서, 목록화된 거래 가능한 물건들은 수개월들에 대한 유로달러 선물들이다. "최상의" 컬럼들(최상의 구매들(520) 및 최상의 판매들(530))은 선택된 기구들의 랭킹을 순서대로 디스플레이하고, 이러한 예에서 구매들(520)은 현재 매도 가격에 기초하여 랭크되고, 판매들은 현재 입찰 가격에 기초하여 랭크된다.
랭킹 툴(500)의 주문 티켓 부분(540)은 사용자가 랭크 시스템에 따라 구매 또는 판매할 수량을 입력하도록 허용한다. 구매 또는 판매 버튼들은 원하는 기구의 자동 실행을 허용한다. 이러한 시스템에서, 사용자는 1 번 랭크된 기구만을 구매/판매하기 위한 선택, 모든 선택된 기구들을 이행하기 위한 선택, 또는 필요에 따라 루핑(loop)하기 위한 선택을 포함하여 다양한 선택들(550)을 갖는다. 예를 들면, 거래자의 원하는 수량이 1 번 위치에서 기구를 통해 이용 가능한 수량에 의해 충족되지 않는 경우에서, 랭킹 툴(500)은 초기 가격에서 상기 기구에서 제한 주문을 작동시킬 수 있다. 더 공격적인 접근법은, 1 번 위치에서 기구에 대해 이용 가능한 모든 수량을 실행하고, 필요하다면 다음 계약들에 대해 자동-헤지하도록 이동하는 것이다. 자동-실행은 단지 리스트의 버튼(이러한 예에서 5 번 랭크)을 통해 작동하고, 그와 연관된 수량이 더 높은 모든 목록화된 달들(months)에 걸쳐 거래함으로써 여전히 충족되지 않는 경우에 제한 주문을 작동시킬 것이다. 랭킹 툴(500)은, 가령, 순수 시장 주문이 존재하는 경우에 필요하다면, 루핑할 수 있고, 리스트의 상부에서 재시작하는 동안, 상기 애플리케이션은 다음의 이용 가능한 가격으로 계속될 것이다.
상술된 랭크 툴(500)의 컴포넌트들, 엘리먼트들 및/또는 기능은, 예를 들면, 하드웨어, 펌웨어 및 소프트웨어의 명령들의 세트의 다양한 형태들로 홀로 또는 조합하여 구현될 수 있다. 특정 실시예들은 범용 컴퓨터 또는 다른 처리 디바이스 상에서의 실행을 위해, 메모리, 하드 디스크, CD-ROM, DVD, EPROM, 및/또는 파일 서버와 같은 컴퓨터-판독 가능 매체 상에 상주하는 명령들의 세트로서 제공될 수 있다.
VI. 예시적인 컴퓨팅 디바이스
도 6은 특정 실시예들에 따른 컴퓨팅 디바이스(600)의 블록도를 예시한다. 클라이언트 디바이스(110)는, 예를 들면, 하나 이상의 컴퓨팅 디바이스들(600)을 포함할 수 있다. 클라이언트 디바이스(301)는 예를 들면, 하나 이상의 컴퓨팅 디바이스들(600)을 포함할 수 있다. 알고리즘 서버(302)는, 예를 들면, 하나 이상의 컴퓨팅 디바이스들(600)을 포함할 수 있다. 게이트웨이(120)는, 예를 들면, 하나 이상의 컴퓨팅 디바이스들(600)을 포함할 수 있다. 교환기(130)는, 예를 들면, 하나 이상의 컴퓨팅 디바이스들(600)을 포함할 수 있다. 교환기(330)는, 예를 들면, 하나 이상의 컴퓨팅 디바이스들(600)을 포함할 수 있다.
컴퓨팅 디바이스(600)는 버스(610), 프로세서(620), 메모리(630), 네트워크 인터페이스(640), 디스플레이 디바이스(650), 입력 디바이스(660), 및 출력 디바이스(670)를 포함한다. 컴퓨팅 디바이스(600)는 부가적이고 상이하거나 더 적은 컴포넌트들을 포함할 수 있다. 예를 들면, 다수의 버스들, 다수의 프로세서들, 다수의 메모리 디바이스들, 다수의 네트워크 인터페이스들, 다수의 디스플레이 디바이스들, 다수의 입력 디바이스들, 다수의 출력 디바이스들, 또는 이들의 임의의 조합이 제공될 수 있다. 또 다른 예로서, 컴퓨팅 디바이스(600)는 디스플레이 디바이스(650)와 별개로 출력 디바이스(670)를 포함하지 않을 수 있다. 또 다른 예로서, 컴퓨팅 디바이스(600)는 디스플레이 디바이스(650)를 포함하지 않을 수 있다. 또 다른 예로서, 컴퓨팅 디바이스(600)는 입력 디바이스(660)를 포함하지 않을 수 있다. 대신에, 예를 들면, 컴퓨팅 디바이스(600)는 네트워크 인터페이스(640)를 통해 외부 또는 원격 입력 디바이스에 의해 제어될 수 있다.
버스(610)는 통신 버스, 채널, 네트워크, 회로, 스위치, 패브릭, 또는 컴퓨팅 디바이스(600) 내의 컴포넌트들 사이에서 데이터를 통신하기 위한 다른 메커니즘을 포함할 수 있다. 버스(610)는 컴퓨팅 디바이스(600)의 컴포넌트들 중 임의의 컴포넌트와 통신 가능하게 연결되고 이들 사이에서 데이터를 전송할 수 있다. 예를 들면, 거래 애플리케이션의 예시화 처리 동안에, 프로세서(620)에 의해 실행되는 하나 이상의 컴퓨터-판독 가능 명령들은 입력 디바이스(660) 및/또는 네트워크 인터페이스(640)로부터 메모리(630)로 전송될 수 있다. 컴퓨팅 디바이스(600)가 메모리(630) 내에 저장된 거래 애플리케이션을 실행하거나 이를 실행하도록 준비중일 때, 프로세서(620)는 버스(610)를 통해 메모리(630)로부터 명령들을 리트리브(retrieve)할 수 있다.
프로세서(620)는 일반 프로세서, 디지털 신호 프로세서, 주문형 집적 회로, 필드 프로그래밍 가능 게이트 어레이, 아날로그 회로, 디지털 회로, 프로그래밍된 프로세서, 이들의 조합들, 또는 다른 이제 알려지거나 나중에 개발될 프로세싱 디바이스를 포함할 수 있다. 프로세서(620)는, 가령, 네트워크 또는 분배 처리와 연관된 단일 디바이스 또는 디바이스들의 조합일 수 있다. 예를 들면, 멀티-프로세싱, 멀티-태스킹, 병렬 프로세싱, 및/또는 원격 프로세싱과 같은 임의의 프로세싱 전략이 사용될 수 있다. 프로세싱은 로컬이거나 원격일 수 있고, 하나의 프로세서로부터 또 다른 프로세서로 이동될 수 있다.
프로세서(620)는 메모리(630)와 같이 및/또는 네트워크 디바이스(640)를 통해 하나 이상의 실재 매체들 내에서 인코딩된 로직을 실행하도록 동작 가능할 수 있다. 본원에 사용된 바와 같이, 하나 이상의 실재 매체들 내에 인코딩된 로직은 프로세서(620) 또는 상이한 프로세서에 의해 실행 가능한 명령들을 포함한다. 로직은, 예를 들면, 소프트웨어, 하드웨어, 집적 회로들, 펌웨어, 및/또는 마이크로-코드의 일부로서 저장될 수 있다. 로직은, 예를 들면, 인터넷에 접속된 통신 네트워크를 통해 외부 통신 디바이스로부터 수신될 수 있다. 프로세서(620)는 본원에 기재되거나 도면들에 예시된 기능들, 동작들, 또는 태스크들을 수행하기 위해 로직을 실행할 수 있다.
메모리(630)는, 예를 들면, 컴퓨터 판독 가능 저장 매체들과 같은 실재 매체들일 수 있다. 컴퓨터 판독 가능 저장 매체는, 이에 제한되지 않지만, 랜덤 액세스 메모리, 판독-전용 메모리, 프로그래밍 가능 판독 전용 메모리, 플래시 메모리, 자기 테이프 또는 디스크, 광학 매체들, 이들의 임의의 조합, 또는 임의의 다른 이제 알려지거나 나중에 개발되는 실재 데이터 저장 디바이스를 포함하는 다양한 형태들의 휘발성 및 비휘발성 저장 매체들을 포함할 수 있다. 메모리(630)는 단일 디바이스 또는 다수의 디바이스들을 포함할 수 있다. 예를 들면, 메모리(630)는 랜덤 액세스 메모리 및 하드 드라이브 스토리지를 포함할 수 있다. 메모리(630)는 프로세서(620)에 인접하고, 프로세서(620)의 일부분이고, 프로세서(620)로 프로그래밍되고, 프로세서(620)로 네트워킹되고 및/또는 프로세서(620)로부터 원격일 수 있어서, 예를 들면, 메모리(630)에 저장된 데이터는 프로세서(620)에 의해 리트리브 및 처리될 수 있다.
메모리(630)는 프로세서(620)에 의해 실행 가능한 명령들을 저장할 수 있다. 명령들은 본원에 기재되고 도면들에 도시된 기능들 또는 동작들 중 하나 이상을 수행하도록 실행될 수 있다.
네트워크 인터페이스(640)는 일방향 또는 양방향 통신 커플링일 수 있다. 따라서, 네트워크 인터페이스(640)는 1 개, 2 개, 또는 그 이상의 통신 네트워크들 또는 디바이스들을 통신 가능하게 접속할 수 있다. 예를 들면, 버스(610)는 네트워크 인터페이스(640)를 통해 상술된 게이트웨이(120)와 유사한 게이트웨이와 결합될 수 있어서, 컴퓨팅 디바이스(600)의 컴포넌트들 중 하나, 일부, 또는 모두가 액세스 가능하거나, 게이트웨이와 통신할 수 있다. 또 다른 예로서, 네트워크 인터페이스(640)는 버스(610)를 다른 통신 네트워크와 연결할 수 있다. 네트워크 인터페이스(640)는, 예를 들면, 데이터 통신 접속을 제공하기 위해 ISDN(integrated services digital network) 카드 또는 모뎀일 수 있다. 또 다른 예로서, 네트워크 인터페이스(640)는, 예를 들면, 인터넷에 접속된 호환 가능한 LAN에 대한 데이터 통신 접속을 제공하기 위한 로컬 영역 네트워크(LAN) 카드일 수 있다. 무선 링크들이 또한 구현될 수 있다. 네트워크 인터페이스(640)는, 예를 들면, 다양한 형태의 정보를 나타내는 아날로그 또는 디지털 스트림들을 전달하는 전기, 전자기, 또는 광학 신호들을 전송할 수 있다.
디스플레이 디바이스(640)는, 예를 들면, 시각 출력 디바이스, CRT(cathode ray tube) 디스플레이, 전자 디스플레이, 전자 페이퍼, 평판 디스플레이, LED(light-emitting diode) 디스플레이들, ELD(eletroluminescent display), PDP(plasma display pannels), LCD(liquid crystal display), TFT(thin-film transistor displays), OLED(organic light-emitting diode displays), SED(surface-conduction electron-emitter display), 레이저 텔레비전 탄소 나노튜브들, 나노크리스털 디스플레이들, 헤드-장착 디스플레이, 프로젝트, 3-차원 디스플레이, 투명 디스플레이 디바이스, 및/또는 다른 이제 알려지거나 나중에 개발되는 디스플레이를 포함할 수 있다.
디스플레이 디바이스(650)는 거래 스크린을 디스플레이하도록 구성된다. 거래 스크린은, 예를 들면, 상술된 거래 스크린들과 유사할 수 있다. 거래 스크린은 대화식일 수 있다. 대화식 거래 스크린은, 예를 들면, 하나 이상의 거래 동작들이 거래 스크린을 사용하여 수행되도록 허용할 수 있다. 예를 들면, 대화식 거래 스크린은 하나 이상의 주문 입력 파라미터들이 하나 이상의 주문 입력 동작들을 사용하여 설정 및/또는 전송되도록 허용할 수 있다. 디스플레이 디바이스(650) 및/또는 입력 디바이스(660)는, 예를 들면, 거래 스크린과 상호 작용하도록 사용될 수 있다.
입력 디바이스(660)는, 예를 들면, 키보드, 마우스, 마이크로폰, 터치-스크린, 트랙볼, 키패드, 조이스틱, 및/또는 입력을 제공하기 위한 다른 디바이스를 포함할 수 있다. 입력 디바이스(660)는, 예를 들면, 명령 선택들을 프로세서(620)를 제공하는데 사용될 수 있다. 예를 들면, 입력 디바이스(660)는 거래 스크린 상에 디스플레이되는 커서를 제어하는데 사용되는 마우스일 수 있다. 마우스는, 예를 들면, 선택 및 제어를 위한 하나 이상의 버튼들을 포함할 수 있다.
출력 디바이스(670)는, 예를 들면, 키보드, 마우스, 스피커들, 터치-스크린, 트랙볼, 키패드, 햅틱 디바이스 또는 시스템, 조이스틱, 및/또는 출력을 제공하기 위한 다른 디바이스를 포함할 수 있다. 예를 들면, 출력 디바이스(670)는 햅틱 신호 또는 오디오 신호와 같은 하나 이상의 신호들을 사용자에게 출력하는데 사용될 수 있다.
본 발명들이 특정 실시예들을 참조하여 기재되었지만, 본 발명의 범위로부터 벗어나지 않고, 다양한 변경들이 이루어질 수 있고, 동등물들이 대체될 수 있다는 것이 당업자들에 의해 이해될 것이다. 또한, 본 발명의 범위로부터 벗어나지 않고 본 발명의 사상들에 대해 특정 상황 또는 재료를 적응시키도록 많은 수정들이 이루어질 수 있다. 따라서, 본 발명들이 개시된 특정 실시예들로 제한되지 않지만, 본 발명이 청구항들의 범위 내에 속하는 모든 실시예들을 포함할 것이라는 것이 의도된다.

Claims (13)

  1. 시각적인 프로그래밍 환경 내에서 생성되는 블록들의 배열에 대응하는 컴퓨터 프로그램 코드를 실행하도록 구성되는 프로세서를 포함하는 시스템으로서,
    상기 블록들의 배열은 거래 알고리즘을 정의하고, 상기 실행가능한 프로그램 코드는:
    외부 이벤트 또는 내부 이벤트가 생성될 때, 각 이벤트 처리기 방법이 상기 생성된 이벤트가 실시(invoke)됨을 등록하고, 이에 의해 각각의 블록에 대응하는 상기 컴퓨터 프로그램 코드가 상기 생성된 이벤트에 따라 하나 또는 그 초과의 기능들을 수행하는 것을 가능하게 하도록, 특정한 외부 및/또는 내부 이벤트들의 통지에 대해 등록가능한 이벤트 처리기 방법들을 포함하고,
    상기 외부 이벤트들은 상기 알고리즘의 상태를 변경하도록 야기하는 시장 또는 타이머 동작을 포함하고, 상기 내부 이벤트들은 이벤트 처리기 방법들에 의해 생성되고;
    상기 외부 이벤트에 응답하여, 상기 프로세서는:
    상기 외부 이벤트에 대해 등록된 각각의 이벤트 처리기 방법을 실시하고 ― 상기 이벤트 처리기 방법들 중 적어도 하나는 내부 이벤트를 생성함 ―;
    상기 이벤트 처리기 방법들 중 적어도 하나가 내부 이벤트를 생성하는 상기 외부 이벤트에 관한 것일 경우, 상기 생성된 내부 이벤트에 대해 등록된 이벤트 처리기 방법들을 갖는 블록들을 처리될 블록들의 리스트에 추가하고; 그리고
    상기 외부 이벤트의 관한 상기 이벤트 처리기 방법들에 의한 처리의 완료 시, 상기 내부 이벤트에 관한 상기 리스트된 블록들의 컴퓨터 프로그램 코드를 실행하기 위해 상기 생성된 내부 이벤트에 대해 등록된 각각의 이벤트 처리기 방법을 실시하도록
    구성되는,
    시스템.
  2. 제 1 항에 있어서,
    상기 생성된 내부 이벤트는 제 1 내부 이벤트이고, 상기 제 1 내부 이벤트에 응답하여, 상기 프로세서는:
    상기 제 1 내부 이벤트에 대해 등록된 각각의 이벤트 처리기 방법을 실시하고 ― 상기 이벤트 처리기 방법들 중 적어도 하나는 제 2 내부 이벤트를 생성함 ―;
    상기 이벤트 처리기 방법들 중 적어도 하나가 제 2 내부 이벤트를 생성하는 상기 제 1 내부 이벤트에 관한 것일 경우, 상기 생성된 제 2 내부 이벤트에 대해 등록된 이벤트 처리기 방법들을 갖는 블록들을 처리될 블록들의 리스트에 추가하고; 그리고
    상기 제 1 내부 이벤트에 관한 상기 이벤트 처리기 방법들에 의한 처리의 완료 시, 상기 제 2 내부 이벤트에 관한 상기 리스트된 블록들의 컴퓨터 프로그램 코드를 실행하기 위해 상기 생성된 제 2 내부 이벤트에 대해 등록된 각각의 이벤트 처리기 방법을 실시하도록
    구성되는,
    시스템.
  3. 제 1 항 또는 제 2 항에 있어서,
    주어진 생성된 이벤트에 대해 등록되는 상기 이벤트 처리기 방법들은 상기 주어진 생성된 이벤트에 관하여 미지정된 주문에서 평가되는,
    시스템.
  4. 제 1 항 또는 제 2 항에 있어서,
    주어진 생성된 이벤트에 대해 등록되는 상기 이벤트 처리기 방법들은, 상기 이벤트 처리기 방법들의 개별적인 블록들이 상기 시각적인 프로그래밍 환경 내에 배치되는 주문에 기초하여 평가되는,
    시스템.
  5. 제 1 항 또는 제 2 항에 있어서,
    상기 외부 이벤트 및 내부 이벤트는 특정 시점에서 발생하는 특정 동작들에 대응하는 이산 이벤트들인,
    시스템.
  6. 제 5 항에 있어서,
    상기 거래 알고리즘은 입력 및 적어도 두 개의 출력들을 포함하는 시퀀서 블록을 포함하고, 각각의 출력은 이산 이벤트에 대해 등록되는 이벤트 처리기 방법들을 갖는 하나 또는 그 초과의 블록들의 입력에 연결되고, 상기 시퀀서 블록은 상기 이산 이벤트가 상기 출력들에 제공되는 주문을 제어하는 것에 의해 상기 이벤트 처리기 방법들이 실시되는 시퀀스를 제어하도록 구성되는,
    시스템.
  7. 시각적인 프로그래밍 환경 내에서 생성되는 블록들의 배열에 대응하는 컴퓨터 프로그램 코드를 실행하는 방법으로서,
    상기 블록들의 배열은 거래 알고리즘을 정의하고, 상기 실행가능한 프로그램 코드는:
    외부 이벤트 또는 내부 이벤트가 생성될 때, 각 이벤트 처리기 방법이 상기 생성된 이벤트가 실시됨을 등록하고, 이에 의해 개별적인 블록에 대응하는 상기 컴퓨터 프로그램 코드가 상기 생성된 이벤트에 따라 하나 또는 그 초과의 기능들을 수행하는 것을 가능하게 하도록, 특정한 외부 및/또는 내부 이벤트들의 통지에 대해 등록가능한 이벤트 처리기 방법들을 포함하고,
    상기 외부 이벤트들은 상기 알고리즘의 상태를 변경하도록 야기하는 시장 또는 타이머 동작을 포함하고, 상기 내부 이벤트들은 이벤트 처리기 방법들에 의해 생성되고;
    상기 외부 이벤트에 응답하여, 상기 방법은:
    상기 외부 이벤트에 대해 등록된 각각의 이벤트 처리기 방법을 실시하는 단계 ― 상기 이벤트 처리기 방법들 중 적어도 하나는 내부 이벤트를 생성함 ―;
    상기 외부 이벤트에 관하여 실시되었던 이벤트 처리기 방법을 갖는 임의의 블록이 상기 블록의 각각의 컴퓨터 프로그램 코드를 현재 실행하는 중인 경우, 상기 생성된 내부 이벤트에 대해 등록된 이벤트 처리기 방법들을 갖는 블록들을 처리될 블록들의 리스트에 추가하는 단계; 및
    상기 외부 이벤트의 관한 상기 이벤트 처리기 방법들에 의한 처리의 완료 시, 상기 내부 이벤트에 관한 상기 리스트된 블록들의 컴퓨터 프로그램 코드를 실행하도록 상기 생성된 내부 이벤트에 대해 등록된 각각의 이벤트 처리기 방법을 실시하는 단계
    를 포함하는,
    방법.
  8. 제 7 항에 있어서,
    상기 생성된 내부 이벤트는 제 1 내부 이벤트이고, 상기 제 1 내부 이벤트에 응답하여, 상기 방법은:
    상기 제 1 내부 이벤트에 대해 등록된 각각의 이벤트 처리기 방법을 실시하는 단계 ― 상기 이벤트 처리기 방법들 중 적어도 하나는 제 2 내부 이벤트를 생성함 ―;
    상기 제 1 내부 이벤트에 관하여 실시되었던 이벤트 처리기 방법을 갖는 임의의 블록이 임의의 블록의 개별적인 컴퓨터 프로그램 코드를 현재 실행하는 중인 경우, 상기 생성된 제 2 내부 이벤트에 대해 등록된 이벤트 처리기 방법들을 갖는 블록들을 처리될 블록들의 리스트에 추가하는 단계; 및
    상기 제 1 내부 이벤트에 관한 상기 이벤트 처리기 방법들에 의한 처리의 완료 시, 상기 제 2 내부 이벤트에 관한 상기 리스트된 블록들의 컴퓨터 프로그램 코드를 실행하도록 상기 생성된 제 2 내부 이벤트에 대해 등록된 각각의 이벤트 처리기 방법을 실시하는 단계
    를 포함하는,
    방법.
  9. 제 7 항 또는 제 8 항에 있어서,
    상기 방법은, 주어진 생성된 이벤트에 관하여 미지정된 주문에서 상기 주어진 생성된 이벤트에 대해 등록되는 상기 이벤트 처리기 방법들을 평가하는 단계를 포함하는,
    방법.
  10. 제 7 항 또는 제 8 항에 있어서,
    상기 방법은, 상기 이벤트 처리기 방법들의 개별적인 블록들이 상기 시각적인 프로그래밍 환경 내에 배치되는 주문에 기초하여 주어진 생성된 이벤트에 대해 등록된 상기 이벤트 처리기 방법들을 평가하는 단계를 포함하는,
    방법.
  11. 제 7 항 또는 제 8 항에 있어서,
    상기 외부 이벤트 및 내부 이벤트는 특정 시점에서 발생하는 특정 동작들에 대응하는 이산 이벤트들인,
    방법.
  12. 제 11 항에 있어서,
    상기 거래 알고리즘은 입력 및 적어도 두 개의 출력들을 포함하는 시퀀서 블록을 포함하고, 각각의 출력은 이산 이벤트에 대해 등록되는 이벤트 처리기 방법들을 갖는 하나 또는 그 초과의 블록들의 입력에 연결되고,
    상기 방법은, 상기 시퀀서 블록이 상기 출력들에 상기 이산 이벤트를 제공하는 주문을 제어하는 것에 의해 상기 이벤트 처리기 방법들이 실시되는 시퀀스를 제어하는 단계를 포함하는,
    방법.
  13. 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨터 프로그램은 프로세싱 시스템에 의해 실행될 때, 상기 프로세싱 시스템으로 하여금 제 7 항 또는 제 8 항의 방법을 수행하게 하는,
    컴퓨터 판독가능 저장 매체.
KR1020187031495A 2009-10-20 2010-10-19 사용자―규정 알고리즘 전자 거래 KR102017877B1 (ko)

Applications Claiming Priority (19)

Application Number Priority Date Filing Date Title
US25332409P 2009-10-20 2009-10-20
US25331509P 2009-10-20 2009-10-20
US61/253,315 2009-10-20
US61/253,324 2009-10-20
US26330009P 2009-11-20 2009-11-20
US61/263,300 2009-11-20
US31200310P 2010-03-09 2010-03-09
US61/312,003 2010-03-09
US31868510P 2010-03-29 2010-03-29
US61/318,685 2010-03-29
US32006110P 2010-04-01 2010-04-01
US61/320,061 2010-04-01
US39331310P 2010-10-14 2010-10-14
US61/393,313 2010-10-14
US12/905,709 2010-10-15
US12/905,726 2010-10-15
US12/905,726 US9652803B2 (en) 2009-10-20 2010-10-15 Virtualizing for user-defined algorithm electronic trading
US12/905,709 US10096066B2 (en) 2009-10-20 2010-10-15 User-defined algorithm electronic trading
PCT/US2010/053172 WO2011049936A2 (en) 2009-10-20 2010-10-19 User-defined algorithm electronic trading

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020187013665A Division KR101915257B1 (ko) 2009-10-20 2010-10-19 사용자―규정 알고리즘 전자 거래

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020197025314A Division KR102047374B1 (ko) 2009-10-20 2010-10-19 사용자―규정 알고리즘 전자 거래

Publications (2)

Publication Number Publication Date
KR20180121690A KR20180121690A (ko) 2018-11-07
KR102017877B1 true KR102017877B1 (ko) 2019-09-03

Family

ID=43880042

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020187031495A KR102017877B1 (ko) 2009-10-20 2010-10-19 사용자―규정 알고리즘 전자 거래
KR1020127013114A KR101862801B1 (ko) 2009-10-20 2010-10-19 사용자―규정 알고리즘 전자 거래
KR1020197025314A KR102047374B1 (ko) 2009-10-20 2010-10-19 사용자―규정 알고리즘 전자 거래
KR1020187013665A KR101915257B1 (ko) 2009-10-20 2010-10-19 사용자―규정 알고리즘 전자 거래

Family Applications After (3)

Application Number Title Priority Date Filing Date
KR1020127013114A KR101862801B1 (ko) 2009-10-20 2010-10-19 사용자―규정 알고리즘 전자 거래
KR1020197025314A KR102047374B1 (ko) 2009-10-20 2010-10-19 사용자―규정 알고리즘 전자 거래
KR1020187013665A KR101915257B1 (ko) 2009-10-20 2010-10-19 사용자―규정 알고리즘 전자 거래

Country Status (11)

Country Link
US (13) US9652803B2 (ko)
EP (1) EP2545514A4 (ko)
JP (5) JP5485405B2 (ko)
KR (4) KR102017877B1 (ko)
CN (2) CN102947853A (ko)
AU (1) AU2010308296B2 (ko)
BR (3) BR112012009233A2 (ko)
CA (3) CA3234139A1 (ko)
MX (3) MX344724B (ko)
SG (2) SG10201405879QA (ko)
WO (1) WO2011049936A2 (ko)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11100582B2 (en) 2003-09-22 2021-08-24 Trading Technologies International, Inc. System and method for dynamically determining quantity for risk management
US8620629B1 (en) * 2004-09-20 2013-12-31 The Mathworks, Inc. Identification and simulation of multiple subgraphs in multi-domain graphical modeling environment
US9652803B2 (en) 2009-10-20 2017-05-16 Trading Technologies International, Inc. Virtualizing for user-defined algorithm electronic trading
US8386368B2 (en) * 2009-12-14 2013-02-26 Trading Technologies International, Inc. Cover-OCO for legged order
US8682773B1 (en) * 2010-05-03 2014-03-25 KnowVera, LLC Methods and system for visually designing trading strategies and execution thereof
WO2012073075A2 (en) * 2010-12-02 2012-06-07 Integrated Transaction Systems Ltd Method for monitoring and controlling of messages in a trading system
US8566220B2 (en) 2011-01-26 2013-10-22 Trading Technologies International, Inc. Block placing tool for building a user-defined algorithm for electronic trading
US9792652B2 (en) * 2012-01-04 2017-10-17 Broadway Technology Llc User interface for computer-implemented trading system
US10755351B2 (en) 2012-03-29 2020-08-25 Trading Technologies International, Inc. Controlling operation of a trading algorithm based on operating condition rules
US20150332398A1 (en) * 2012-09-04 2015-11-19 Slav Brkic Risk management system and method for monitoring and controlling of messages in a trading system
US10417707B2 (en) 2012-09-13 2019-09-17 Chicago Mercantile Exchange Inc. Futures exchange support of spot trading
US10007949B2 (en) * 2012-10-19 2018-06-26 Trading Technologies International, Inc. Visual depiction of warnings and errors
US10068290B2 (en) * 2012-10-30 2018-09-04 Trading Technologies International, Inc. System and method for determining a stable quoting quantity for use in a trading strategy
US20140180892A1 (en) * 2012-12-20 2014-06-26 Trading Technologies International, Inc. Mitigating Communication Risks in an Electronic Trading System
US20140279360A1 (en) * 2013-03-15 2014-09-18 FastMatch, Inc. Factor based matching
US20140316961A1 (en) * 2013-04-23 2014-10-23 Chicago Mercantile Exchange, Inc. Dynamic Tick Size Order Aggregator
US20140330688A1 (en) * 2013-05-01 2014-11-06 Bonaire Software Solutions, Llc System and method for creating and managing a charging condition matrix
EP3223226A1 (en) 2013-06-24 2017-09-27 Aequitas Innovations Inc. System and method for automated trading of financial interests
US10628884B1 (en) * 2014-04-16 2020-04-21 Liquidnet Holdings, Inc. Database-driven processing of algorithmic trading plans utilizing specialized user interface methods, computer systems and computer programs
US11195230B2 (en) * 2014-07-25 2021-12-07 Clearingbid, Inc. Systems including a hub platform, communication network and memory configured for processing data involving time-stamped/time-sensitive aspects and/or other features
KR20170047292A (ko) 2014-08-22 2017-05-04 아이이엑스 그룹, 인크. 전자 거래 시스템에서의 동적 페그 주문
CN106296241B (zh) * 2015-05-21 2019-12-03 中国联合网络通信集团有限公司 划分网格的方法及装置
KR101711112B1 (ko) * 2015-07-30 2017-03-07 주식회사 셈웨어 알고리즘 거래 시스템
US10416842B1 (en) * 2015-09-22 2019-09-17 The Mathworks, Inc. Clarity in model-based design
EP3398155A1 (en) * 2015-12-30 2018-11-07 Chicago Mercantile Exchange, Inc. Execution of co-dependent transactions in a transaction processing system
CN105787656A (zh) * 2016-02-25 2016-07-20 王聪东 一种阶梯刻度相交法替代循环处理供求关系系统
US10809978B2 (en) * 2017-06-02 2020-10-20 Texas Instruments Incorporated Merge sort accelerator
US11941225B1 (en) * 2018-10-04 2024-03-26 United Services Automobile Association (Usaa) Systems and methods for self-directed investing
WO2020110933A1 (ja) 2018-11-28 2020-06-04 株式会社トラスト・テクノロジー プログラミング装置、およびプログラム
JP7184006B2 (ja) 2019-10-01 2022-12-06 三菱電機株式会社 半導体チップのピックアップ治具、半導体チップのピックアップ装置およびピックアップ治具の調節方法
CN111191413B (zh) * 2019-12-30 2021-11-12 北京航空航天大学 一种基于图排序模型的事件核心内容自动标记方法、装置及系统
CN111242735B (zh) * 2020-01-10 2024-03-15 深圳市家之思软装设计有限公司 数值模板生成方法及数值模板生成装置
US20210350426A1 (en) * 2020-05-07 2021-11-11 Nowcasting.ai, Inc. Architecture for data processing and user experience to provide decision support
US20220108401A1 (en) * 2020-07-23 2022-04-07 Fmr Llc Machine Learning Portfolio Simulating and Optimizing Apparatuses, Methods and Systems
US11354741B1 (en) * 2021-02-15 2022-06-07 Chicago Mercantile Exchange Inc. User interface enabling unconstrained data inputs to a constrained system
US20230267538A1 (en) * 2022-02-22 2023-08-24 Jpmorgan Chase Bank, N.A. Method and system for proxy event visualization

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050256799A1 (en) 2004-04-01 2005-11-17 Wave Rules, Llc. User interface for electronic trading
US20060129475A1 (en) * 2004-12-09 2006-06-15 Rosenthal Collins Group, L.L.C. Method and system for providing configurable features for graphical user interfaces for electronic trading
US20080021809A1 (en) 2006-04-28 2008-01-24 Henri Waelbroeck Drag-and-drop graphical control interface for algorithmic trading engine
JP2008112339A (ja) * 2006-10-31 2008-05-15 Toshiba Corp 中継装置、並びに中継方法

Family Cites Families (179)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5677156A (en) * 1979-11-28 1981-06-25 Ricoh Co Ltd Ink jet recorder
US5270922A (en) 1984-06-29 1993-12-14 Merrill Lynch & Company, Inc. System for distributing, processing and displaying financial information
US4674044A (en) 1985-01-30 1987-06-16 Merrill Lynch, Pierce, Fenner & Smith, Inc. Automated securities trading system
US4914568A (en) 1986-10-24 1990-04-03 National Instruments, Inc. Graphical system for modelling a process and associated method
US5168446A (en) 1989-05-23 1992-12-01 Telerate Systems Incorporated System for conducting and processing spot commodity transactions
US5136501A (en) 1989-05-26 1992-08-04 Reuters Limited Anonymous matching system
US5101353A (en) 1989-05-31 1992-03-31 Lattice Investments, Inc. Automated system for providing liquidity to securities markets
US5297031A (en) 1990-03-06 1994-03-22 Chicago Board Of Trade Method and apparatus for order management by market brokers
US5245535A (en) 1991-04-05 1993-09-14 Citibank, N.A. System for demonstrating financial concepts and displaying financial data
US5692233A (en) 1992-05-28 1997-11-25 Financial Engineering Associates, Inc. Integrated system and method for analyzing derivative securities
US6167386A (en) 1998-06-05 2000-12-26 Health Hero Network, Inc. Method for conducting an on-line bidding session with bid pooling
US6553346B1 (en) 1996-09-04 2003-04-22 Priceline.Com Incorporated Conditional purchase offer (CPO) management system for packages
CA2119921C (en) 1994-03-23 2009-09-29 Sydney H. Belzberg Computerized stock exchange trading system
US5809483A (en) 1994-05-13 1998-09-15 Broka; S. William Online transaction processing system for bond trading
EP0686926A3 (en) 1994-05-24 1996-06-12 Ron S Dembo Process and apparatus for optimal replication of portfolios
IL117424A (en) 1995-04-27 1999-09-22 Optimark Tech Inc Crossing network utilizing satisfaction density profile
US5689652A (en) 1995-04-27 1997-11-18 Optimark Technologies, Inc. Crossing network utilizing optimal mutual satisfaction density profile
EP0847561B1 (en) 1995-08-28 2003-10-22 Ebs Dealing Resources, Inc. Anonymous trading system with improved quote input capabilities
US6519574B1 (en) 1995-12-12 2003-02-11 Reuters Limited Electronic trading system featuring arbitrage and third-party credit opportunities
US5819238A (en) 1996-12-13 1998-10-06 Enhanced Investment Technologies, Inc. Apparatus and accompanying methods for automatically modifying a financial portfolio through dynamic re-weighting based on a non-constant function of current capitalization weights
US7058617B1 (en) * 1996-05-06 2006-06-06 Pavilion Technologies, Inc. Method and apparatus for training a system model with gain constraints
US5787402A (en) 1996-05-15 1998-07-28 Crossmar, Inc. Method and system for performing automated financial transactions involving foreign currencies
US6014643A (en) 1996-06-28 2000-01-11 Minton; Vernon F. Interactive securities trading system
US6061662A (en) 1997-08-15 2000-05-09 Options Technology Company, Inc. Simulation method and system for the valuation of derivative financial instruments
US6195647B1 (en) 1996-09-26 2001-02-27 The Nasdaq Stock Market, Inc. On-line transaction processing system for security trading
US5963923A (en) 1996-11-12 1999-10-05 Garber; Howard B. System and method for trading having a principal market maker
US5959621A (en) 1996-12-06 1999-09-28 Microsoft Corporation System and method for displaying data items in a ticker display pane on a client computer
AU4060502A (en) 1996-12-20 2002-06-27 Financial Services Technology Consortium Method and system for processing electronic documents
US6112189A (en) 1997-03-19 2000-08-29 Optimark Technologies, Inc. Method and apparatus for automating negotiations between parties
GB2339941B (en) 1997-04-30 2001-10-31 Roderick Malcolm Gordon Lawrie Network computer trading system
US5873071A (en) 1997-05-15 1999-02-16 Itg Inc. Computer method and system for intermediated exchange of commodities
US20020138390A1 (en) 1997-10-14 2002-09-26 R. Raymond May Systems, methods and computer program products for subject-based addressing in an electronic trading system
US6996540B1 (en) 1997-10-14 2006-02-07 Blackbird Holdings, Inc. Systems for switch auctions utilizing risk position portfolios of a plurality of traders
JP3415009B2 (ja) 1997-11-14 2003-06-09 沖電気工業株式会社 プログラム開発装置および記録媒体
EP1067471A1 (en) 1997-12-08 2001-01-10 Nippon Steel Corporation Commodity exchanging apparatus, commodity exchanging system, commodity exchanging method and storage medium
US5918217A (en) 1997-12-10 1999-06-29 Financial Engines, Inc. User interface for a financial advisory system
US6064985A (en) 1998-01-21 2000-05-16 Assured Equities, Inc. Automated portfolio management system with internet datafeed
US6229534B1 (en) 1998-02-27 2001-05-08 Sabre Inc. Methods and apparatus for accessing information from multiple remote sources
US6161098A (en) 1998-09-14 2000-12-12 Folio (Fn), Inc. Method and apparatus for enabling small investors with a portfolio of securities to manage taxable events within the portfolio
US6317728B1 (en) 1998-10-13 2001-11-13 Richard L. Kane Securities and commodities trading system
US6233566B1 (en) 1998-12-31 2001-05-15 Ultraprise Corporation System, method and computer program product for online financial products trading
US6272474B1 (en) 1999-02-08 2001-08-07 Crisostomo B. Garcia Method for monitoring and trading stocks via the internet displaying bid/ask trade bars
AU3362000A (en) 1999-02-12 2000-08-29 State Street Corporation Processing orders to a computerized trading market
TR200102496T2 (tr) 1999-02-24 2002-01-21 Ho Cha Min Stoklar, bonolar, malzemeler, opsiyonlar, endeksler, cari fiyatlar, vb. için otamatik sipariş yöntemi ve ticaret sistemi
AU3247600A (en) 1999-03-01 2000-09-21 Wit Capital Corporation A system and method for conducting securities transactions over a computer network
US6408282B1 (en) 1999-03-01 2002-06-18 Wit Capital Corp. System and method for conducting securities transactions over a computer network
US7212999B2 (en) 1999-04-09 2007-05-01 Trading Technologies International, Inc. User interface for an electronic trading system
US6278982B1 (en) 1999-04-21 2001-08-21 Lava Trading Inc. Securities trading system for consolidation of trading on multiple ECNS and electronic exchanges
AU4369100A (en) 1999-04-22 2000-11-10 Trading Technologies, Inc. Electronic securities trading system
US6418419B1 (en) 1999-07-23 2002-07-09 5Th Market, Inc. Automated system for conditional order transactions in securities or other items in commerce
US7155410B1 (en) * 1999-08-03 2006-12-26 Woodmansey Robert J Systems and methods for linking orders in electronic trading systems
AU1250001A (en) 1999-08-30 2001-03-26 Epit Inc. User interface for semi-fungible trading
US7685048B1 (en) 1999-09-01 2010-03-23 Bloomberg L.P. Electronic trading system for forwards spread trades
WO2001022266A2 (en) 1999-09-23 2001-03-29 Bornstein Jeremy J For user interface for a financial trading system
US8311926B1 (en) 1999-09-23 2012-11-13 The Nasdaq Omx Group, Inc. Montage for automated market system
US6691094B1 (en) 1999-09-28 2004-02-10 Lee N. Herschkorn Bank loan trading system and method
US20020038279A1 (en) 1999-10-08 2002-03-28 Ralph Samuelson Method and apparatus for using a transaction system involving fungible, ephemeral commodities including electrical power
CN1353381A (zh) * 1999-11-02 2002-06-12 昂耐股份有限公司 自动计算机网络交易信息管理系统和方法
EP1234369A1 (en) 1999-12-01 2002-08-28 Automated Power Exchange, Inc. Method and apparatus of managing ephemeral, fungible commodities based upon real-time forward prices
US20020055899A1 (en) 1999-12-06 2002-05-09 Williams Joseph C. Display system and method for displaying and organizing financial information
US7356499B1 (en) 2000-02-09 2008-04-08 Dean Amburn Method and apparatus for automated trading of equity securities using a real time data analysis
US6772132B1 (en) 2000-03-02 2004-08-03 Trading Technologies International, Inc. Click based trading with intuitive grid display of market depth
US7447655B2 (en) 2000-03-02 2008-11-04 Trading Technologies International, Inc. System and method for automatic scalping of a tradeable object in an electronic trading environment
US7228289B2 (en) 2000-03-02 2007-06-05 Trading Technologies International, Inc. System and method for trading and displaying market information in an electronic trading environment
US7127424B2 (en) 2000-03-02 2006-10-24 Trading Technologies International, Inc. Click based trading with intuitive grid display of market depth and price consolidation
US7389268B1 (en) 2000-03-02 2008-06-17 Trading Technologies International, Inc. Trading tools for electronic trading
US6938011B1 (en) 2000-03-02 2005-08-30 Trading Technologies International, Inc. Click based trading with market depth display
US7246092B1 (en) 2000-05-12 2007-07-17 The Nasdaq Stock Market, Inc. Montage for an electronic market
US8069106B2 (en) 2000-06-01 2011-11-29 Pipeline Financial Group, Inc. Block trading system and method providing price improvement to aggressive orders
US7437325B2 (en) 2002-03-05 2008-10-14 Pablo Llc System and method for performing automatic spread trading
US8924277B2 (en) 2000-08-17 2014-12-30 Nyse Group, Inc. Method and system for automatic execution of a securities transaction
AUPQ966400A0 (en) 2000-08-24 2000-09-21 Xemplex Pty Ltd Method of graphically defining a formula
US20020069156A1 (en) 2000-09-01 2002-06-06 Kerry Adam Electronic trading platform for agricultural commodities
US7089205B1 (en) 2000-09-29 2006-08-08 Unx, Inc. Basket trading system having an interface for user specification of goods to be traded as a unit
US7305361B2 (en) 2000-10-14 2007-12-04 Goldman Sachs & Co. Apparatus, methods and articles of manufacture for constructing and executing computerized transaction processes and programs
US7496535B2 (en) 2000-10-14 2009-02-24 Goldman Sachs & Co. Computerized interface for constructing and executing computerized transaction processes and programs
US20020046156A1 (en) 2000-10-14 2002-04-18 Goldman, Sachs & Company Apparatus, methods and articles of manufacture for executing computerized transaction processes
US20020049661A1 (en) 2000-10-14 2002-04-25 Goldman, Sachs & Company Apparatus, methods and articles of manufacture for constructing and executing computerized transaction processes and programs
US20020046146A1 (en) 2000-10-14 2002-04-18 Otero Hernan G. Apparatus, methods and articles of manufacture for constructing and executing computerized transaction processes and programs
US20030088495A1 (en) 2000-12-07 2003-05-08 Gilbert Andrew C. Systems and methods for linking bids and offers in a trading interface
JP2002229783A (ja) 2001-01-31 2002-08-16 Toshiba Corp ソフトウェア構築支援システム、その方法およびソフトウェア構築支援プログラム
US6693651B2 (en) 2001-02-07 2004-02-17 International Business Machines Corporation Customer self service iconic interface for resource search results display and selection
US20020120551A1 (en) 2001-02-27 2002-08-29 Clarkson Jones Visual-kinesthetic interactive financial trading system
US7146336B2 (en) 2001-03-08 2006-12-05 Oanda Corporation Currency trading system, methods, and software
US20020128950A1 (en) 2001-03-12 2002-09-12 Michael Wu Artificial intelligence based trading system
US8145557B2 (en) 2001-03-30 2012-03-27 Bgc Partners, Inc. Bid/offer spread trading
US6983260B2 (en) 2001-04-06 2006-01-03 Omx Technology Ab Automated exchange system for trading orders having a hidden volume
US7243083B2 (en) 2001-06-14 2007-07-10 Trading Technologies International, Inc. Electronic spread trading tool
US7418416B2 (en) 2001-06-20 2008-08-26 Morgan Stanley Gamma trading tool
CA2403300A1 (en) * 2002-09-12 2004-03-12 Pranil Ram A method of buying or selling items and a user interface to facilitate the same
US20030004853A1 (en) 2001-06-28 2003-01-02 Pranil Ram Graphical front end system for real time security trading
US8196056B2 (en) * 2001-07-24 2012-06-05 The Mathworks, Inc. Handling parameters in block diagram modeling
US7653873B2 (en) 2001-08-31 2010-01-26 Siemens Medical Solutions Health Services Corporation System and user interface supporting task schedule configuration
US20030093352A1 (en) 2001-10-15 2003-05-15 Muralidhar Sanjay P. Method, apparatus and program for evaluating financial trading strategies and portfolios
US7512555B2 (en) * 2001-11-13 2009-03-31 Gregory M Finn Investment management tool
US7672895B2 (en) * 2002-02-19 2010-03-02 Trading Technologies International, Inc. System and method for simulating an electronic trading environment
US7813995B2 (en) 2002-03-05 2010-10-12 Trading Technologies International, Inc. System and method for estimating a spread value
AU2003276626A1 (en) 2002-06-18 2003-12-31 Douglas Ray Duquette System and method for analyzing and displaying security trade transactions
US9805417B2 (en) 2002-06-19 2017-10-31 Trading Technologies International, Inc. System and method for automated trading
FI20021655A (fi) 2002-06-19 2003-12-20 Nokia Corp Menetelmä lukituksen avaamiseksi ja kannettava elektroninen laite
US20040006529A1 (en) 2002-06-20 2004-01-08 Fung Ka Shun Kevin Method and system for utilizing a special purpose vehicle for improving the liquidity of transactions
US7168045B2 (en) 2002-06-28 2007-01-23 Sap Aktiengesellschaft Modeling business objects
JP2004046657A (ja) 2002-07-15 2004-02-12 Answer:Kk 計算支援方法とその装置、及び計算支援ソフト
US7610237B1 (en) * 2002-09-30 2009-10-27 Trading Technologies International Inc. System and method for creating trade-related annotations in an electronic trading environment
FI20021736A (fi) 2002-09-30 2004-03-31 Nokia Corp Menetelmä ja järjestely lukituksen toiminnan ohjaamiseksi
US7694272B2 (en) 2002-10-21 2010-04-06 Sungard (Israel) Ltd Method, a language and a system for the definition and implementation of software solutions by using a visualizable computer executable modeling language
US7571134B1 (en) 2002-11-13 2009-08-04 Trading Technologies International, Inc. Trading interface for facilitating trading of multiple tradeable objects in an electronic trading environment
US7418422B2 (en) 2002-11-13 2008-08-26 Trading Technologies International, Inc. Method, apparatus and interface for trading multiple tradeable objects
US7523064B2 (en) 2002-11-13 2009-04-21 Trading Technologies International, Inc. System and method for facilitating trading of multiple tradeable objects in an electronic trading environment
JP2004178584A (ja) 2002-11-26 2004-06-24 Asulab Sa 機能、装置、又は所定の場所にアクセスするためのタッチスクリーンによるセキュリティコードの入力方法、及びその方法を実行するためのデバイス
AU2002953011A0 (en) * 2002-12-02 2002-12-12 Xemplex Pty Ltd Method of componentisation of a graphically defined formula
US20050080701A1 (en) 2002-12-23 2005-04-14 Ge Corporate Financial Services, Inc. Methods and systems for managing risk management information
US7844536B1 (en) * 2003-01-31 2010-11-30 Trading Technologies International, Inc. System and method for linking and managing linked orders in an electronic trading environment
US7752117B2 (en) 2003-01-31 2010-07-06 Trading Technologies International, Inc. System and method for money management in electronic trading environment
US7512557B1 (en) * 2003-06-30 2009-03-31 Trading Technologies International, Inc. System and method for timed order entry and modification
US7587357B1 (en) 2003-06-30 2009-09-08 Trading Technologies International Inc. Repositioning of market information on trading screens
US20050004852A1 (en) 2003-07-03 2005-01-06 Whitney Scott M. System, method and computer medium for trading interface
US11100582B2 (en) 2003-09-22 2021-08-24 Trading Technologies International, Inc. System and method for dynamically determining quantity for risk management
US7702568B1 (en) 2003-09-22 2010-04-20 Trading Technologies International, Inc. System and method for icon oriented representation of trading strategies
US7861185B1 (en) 2003-12-30 2010-12-28 Trading Technologies International, Inc. System and method for dynamically determining quantity for risk management
US20050071243A1 (en) * 2003-09-30 2005-03-31 Anandhi Somasekaran Non-disruptive business process debugging and analysis
US7739164B1 (en) 2003-10-07 2010-06-15 Trading Technologies International, Inc. System and method for displaying risk data in an electronic trading environment
US20080109785A1 (en) 2004-01-16 2008-05-08 Bailey Bendrix L Graphical Program Having Graphical and/or Textual Specification of Event Handler Procedures for Program Objects
US8046289B2 (en) 2004-01-29 2011-10-25 New York Mercantile Exchange, Inc. Electronic pitcard for wireless financial exchange
US20050203826A1 (en) 2004-03-12 2005-09-15 Chicago Mercantile Exchange, Inc. Implied spread trading system
US7296233B2 (en) 2004-05-10 2007-11-13 Microsoft Corporation Spy-resistant keyboard
US7599867B1 (en) 2004-06-30 2009-10-06 Trading Technologies International, Inc. System and method for chart pattern recognition and analysis in an electronic trading environment
US20060010066A1 (en) 2004-07-12 2006-01-12 Rosenthal Collins Group, L.L.C. Method and system for providing a graphical user interface for electronic trading
US20070083456A1 (en) * 2004-08-10 2007-04-12 Akers Wayne S Algorithmic trading
US7542938B1 (en) * 2004-12-28 2009-06-02 Trading Technologies International, Inc. System and method for quick quote configuration
US7848991B1 (en) * 2004-12-30 2010-12-07 Trading Technologies International, Inc. System and method for modifying trading strategies based on message usage
US20060195817A1 (en) * 2005-02-28 2006-08-31 Microsoft Corporation Visual workflow modeling tools for user interface automation
GB2423838A (en) 2005-02-28 2006-09-06 Patsystems Electronic trading system
US7634437B1 (en) 2005-03-31 2009-12-15 Trading Technologies International, Inc. System and method for displaying trading data
US7596528B1 (en) 2005-03-31 2009-09-29 Trading Technologies International, Inc. System and method for dynamically regulating order entry in an electronic trading environment
US7590576B1 (en) 2005-03-31 2009-09-15 Trading Technologies International Inc. Visual representation and configuration of trading strategies
US20060253582A1 (en) 2005-05-03 2006-11-09 Dixon Christopher J Indicating website reputations within search results
USD539297S1 (en) 2005-05-05 2007-03-27 Noviello Joseph C User interface for an electronic trading system for a computer screen
US20060265453A1 (en) 2005-05-19 2006-11-23 International Business Machines Corporation Method and system of applying a template to a message
US7921072B2 (en) 2005-05-31 2011-04-05 Alcatel-Lucent Usa Inc. Methods and apparatus for mapping source schemas to a target schema using schema embedding
US7711630B2 (en) 2005-06-06 2010-05-04 Trading Technologies International. Inc. System and method for trading multiple tradeable objects using a single trading interface
US7577600B1 (en) * 2005-06-30 2009-08-18 Trading Technologies International, Inc. System and method for regulating order entry in an electronic trading environment
CN101501719A (zh) * 2005-07-11 2009-08-05 雷曼兄弟有限公司 用于向自动证券订单执行系统传递参数的系统和方法
JPWO2007037310A1 (ja) 2005-09-29 2009-04-09 株式会社C−Grip コンピュータプログラムのプログラミング方法及びプログラミング用プログラム
WO2007057008A1 (en) 2005-11-21 2007-05-24 Saxo Bank A/S A financial trading system
US7711631B2 (en) * 2005-12-29 2010-05-04 Trading Technologies International, Inc. System and method for a trading interface incorporating a chart
US20070168275A1 (en) 2006-01-13 2007-07-19 Andrew Busby Method for trading using volume submissions
US20070174173A1 (en) 2006-01-21 2007-07-26 Brucato Steven J Method for displaying market data and entering trading orders
US20070250783A1 (en) 2006-04-24 2007-10-25 Ehealthinsurance Services, Inc. Method and system to provide online application forms
US20070250769A1 (en) 2006-04-24 2007-10-25 Ehealthinsurance Services, Inc. Method and system to provide online application forms
US7904376B2 (en) * 2006-04-28 2011-03-08 Pipeline Financial Group, Inc. Rich graphical control interface for algorithmic trading engine
EP2081145A1 (en) 2006-04-28 2009-07-22 Pipeline Financial Group, Inc. Rich graphical control interface for algorithmic trading engine
US7908203B2 (en) 2006-04-28 2011-03-15 Pipeline Financial Group, Inc. Coordination of algorithms in algorithmic trading engine
US7882014B2 (en) 2006-04-28 2011-02-01 Pipeline Financial Group, Inc. Display of market impact in algorithmic trading engine
US7870059B2 (en) 2006-04-28 2011-01-11 Pipeline Financial Group, Inc. Display of selected items in visual context in algorithmic trading engine
US20070265953A1 (en) 2006-05-09 2007-11-15 Cunningham William D Smooth scrolling for software application
US7577608B1 (en) * 2006-07-07 2009-08-18 Trading Technologies International Inc. System and method for providing a linear spread
US8027907B2 (en) 2006-11-20 2011-09-27 Codestreet Llc Fixed-income system for managing pre-trade activity
GB0624033D0 (en) 2006-12-01 2007-01-10 Iti Scotland Ltd Dynamic intervention with software applications
US8769485B2 (en) 2006-12-04 2014-07-01 Tibco Software, Inc. Data parallelism and parallel operations in stream processing
US9038041B2 (en) 2006-12-04 2015-05-19 Tibco Software, Inc. Stream processor with compiled programs
US8739068B2 (en) * 2007-06-15 2014-05-27 Microsoft Corporation Dynamic user interface for in-diagram shape selection
JP5367237B2 (ja) 2007-06-18 2013-12-11 ソニー株式会社 サーバ
CA2694593A1 (en) 2007-07-26 2009-01-29 Pipeline Financial Group, Inc. Block trading system and method providing price improvement to aggressive orders
US20090089202A1 (en) * 2007-09-28 2009-04-02 Fidessa Corporation Algorithmic order management tool for trading financial instruments
US20090144186A1 (en) 2007-11-30 2009-06-04 Reuters Sa Financial Product Design and Implementation
US20090157501A1 (en) 2007-12-16 2009-06-18 Rolland Russell Martel Integrated Exchange for 24 hour real time trading of fungibles & continuous cash T+0 settlement
US8442885B1 (en) * 2008-02-14 2013-05-14 Jpmorgan Chase Bank, N.A. Algorithmic trading management system and method
US7945505B2 (en) * 2008-03-12 2011-05-17 Liquidity Development, Llc Methods and systems for trading contracts and operating exchanges
US20100057602A1 (en) * 2008-08-28 2010-03-04 Armutcu Ercan S Electronic trading GUI
US20100161821A1 (en) 2008-12-18 2010-06-24 Slamkovic Richard D Midleware broker
US20110040669A1 (en) 2009-08-17 2011-02-17 Darren Lee Automated spread trading system
US20110040668A1 (en) 2009-08-17 2011-02-17 Darren Lee Automated spread trading system
US9652803B2 (en) 2009-10-20 2017-05-16 Trading Technologies International, Inc. Virtualizing for user-defined algorithm electronic trading
US20110208670A1 (en) 2010-02-19 2011-08-25 Jpmorgan Chase Bank, N.A. Execution Optimizer
US8510206B2 (en) * 2010-07-26 2013-08-13 Trading Technologies International, Inc. Consolidated price level expansion
US8566220B2 (en) 2011-01-26 2013-10-22 Trading Technologies International, Inc. Block placing tool for building a user-defined algorithm for electronic trading
US10007949B2 (en) * 2012-10-19 2018-06-26 Trading Technologies International, Inc. Visual depiction of warnings and errors
US10438285B1 (en) * 2013-03-15 2019-10-08 Charles Schwab & Co., Inc. System and method for displaying order status and receiving and changing orders

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050256799A1 (en) 2004-04-01 2005-11-17 Wave Rules, Llc. User interface for electronic trading
US20060129475A1 (en) * 2004-12-09 2006-06-15 Rosenthal Collins Group, L.L.C. Method and system for providing configurable features for graphical user interfaces for electronic trading
US20080021809A1 (en) 2006-04-28 2008-01-24 Henri Waelbroeck Drag-and-drop graphical control interface for algorithmic trading engine
JP2008112339A (ja) * 2006-10-31 2008-05-15 Toshiba Corp 中継装置、並びに中継方法

Also Published As

Publication number Publication date
US9652803B2 (en) 2017-05-16
MX344724B (es) 2017-01-05
US11055782B2 (en) 2021-07-06
KR20120102644A (ko) 2012-09-18
BR122013024235A2 (pt) 2019-08-06
US20240013304A1 (en) 2024-01-11
JP5961198B2 (ja) 2016-08-02
SG10201405879QA (en) 2014-11-27
KR102047374B1 (ko) 2019-11-21
US20200160448A1 (en) 2020-05-21
BR122013024230A2 (pt) 2018-03-27
CA2774398A1 (en) 2011-04-28
US20110093378A1 (en) 2011-04-21
MX2012004691A (es) 2012-08-30
US20220138854A1 (en) 2022-05-05
US20170186087A1 (en) 2017-06-29
MX2021002806A (es) 2021-05-31
JP2017117473A (ja) 2017-06-29
KR20180053774A (ko) 2018-05-23
KR101862801B1 (ko) 2018-05-31
JP6513110B2 (ja) 2019-05-15
CN102947853A (zh) 2013-02-27
US20200051169A1 (en) 2020-02-13
US11842401B2 (en) 2023-12-12
KR20180121690A (ko) 2018-11-07
US20220405842A1 (en) 2022-12-22
CN111539815A (zh) 2020-08-14
WO2011049936A2 (en) 2011-04-28
KR101915257B1 (ko) 2018-11-06
JP5485405B2 (ja) 2014-05-07
WO2011049936A3 (en) 2012-11-15
US11449939B2 (en) 2022-09-20
CA3234139A1 (en) 2011-04-28
US20240054561A1 (en) 2024-02-15
JP6775615B2 (ja) 2020-10-28
EP2545514A4 (en) 2013-09-11
US20110093379A1 (en) 2011-04-21
US20190236703A1 (en) 2019-08-01
AU2010308296B2 (en) 2013-10-31
US20210279801A1 (en) 2021-09-09
US11257156B2 (en) 2022-02-22
JP2014160466A (ja) 2014-09-04
US20190012738A1 (en) 2019-01-10
US10296975B2 (en) 2019-05-21
JP2013508862A (ja) 2013-03-07
CN111539815B (zh) 2024-04-05
SG10201705134SA (en) 2017-07-28
US11823270B2 (en) 2023-11-21
US10572942B2 (en) 2020-02-25
JP2016021242A (ja) 2016-02-04
CA3152686A1 (en) 2011-04-28
EP2545514A2 (en) 2013-01-16
AU2010308296A1 (en) 2012-04-12
KR20190103488A (ko) 2019-09-04
BR112012009233A2 (pt) 2016-08-23
US11568491B2 (en) 2023-01-31
CA2774398C (en) 2022-06-21
JP2019071112A (ja) 2019-05-09
US10096066B2 (en) 2018-10-09
US20230130695A1 (en) 2023-04-27
JP6104329B2 (ja) 2017-03-29
US10504182B2 (en) 2019-12-10

Similar Documents

Publication Publication Date Title
US11842401B2 (en) User-defined algorithm electronic trading
AU2019213331B2 (en) User-defined algorithm electronic trading
AU2014200235B2 (en) User-defined algorithm electronic trading

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant