KR102565455B1 - 신속한 스크리닝을 위한 도메인-특정 언어 해석기 및 대화형 시각적 인터페이스 - Google Patents

신속한 스크리닝을 위한 도메인-특정 언어 해석기 및 대화형 시각적 인터페이스 Download PDF

Info

Publication number
KR102565455B1
KR102565455B1 KR1020227044706A KR20227044706A KR102565455B1 KR 102565455 B1 KR102565455 B1 KR 102565455B1 KR 1020227044706 A KR1020227044706 A KR 1020227044706A KR 20227044706 A KR20227044706 A KR 20227044706A KR 102565455 B1 KR102565455 B1 KR 102565455B1
Authority
KR
South Korea
Prior art keywords
data
user
identifiers
subset
domain
Prior art date
Application number
KR1020227044706A
Other languages
English (en)
Other versions
KR20230003662A (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 킥소틱 랩스 인크.
Priority to KR1020237026744A priority Critical patent/KR20230121164A/ko
Priority claimed from PCT/IB2021/054548 external-priority patent/WO2021240370A1/en
Publication of KR20230003662A publication Critical patent/KR20230003662A/ko
Application granted granted Critical
Publication of KR102565455B1 publication Critical patent/KR102565455B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/177Editing, e.g. inserting or deleting of tables; using ruled lines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2428Query predicate definition using graphical user interfaces, including menus and forms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/335Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/38Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • 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/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • 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/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/216Parsing using statistical methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/221Parsing markup language streams
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/274Converting codes to words; Guess-ahead of partial word inputs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Library & Information Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • User Interface Of Digital Computer (AREA)
  • Machine Translation (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Measuring And Recording Apparatus For Diagnosis (AREA)

Abstract

본 출원은, 특별히 도메인용으로 구성된 컴퓨팅 시스템의 사용자가 윈나우잉 전략들을 테스트하고 특정 관심 타겟들을 발견하기 위해 속성이 풍부한 데이터 세트에서 데이터를 탐색 및 필터링할 수 있게 하는 개선된 시스템들 및 방법들을 개시한다. 본 기술은 사용자가 임의의 시간에 입력된 심볼들 및 연산자들을 입력, 수정, 추가, 삽입, 감산, 변경 및 달리 자유롭게 편집할 수 있게 하는 멀티 라인 편집기와 같은 입력 인터페이스를 포함한다. 도메인-특정 언어 해석기는 입력된 심볼들 및 연산자들을, 이들이 업데이트될 때 계속적으로 프로세싱한다. 대화형 시각적 인터페이스는 또한 입력 인터페이스의 현재 콘텐츠에 따라 업데이트되는 라이브 결과들을 디스플레이하는 그리드 뷰를 포함한다.

Description

신속한 스크리닝을 위한 도메인-특정 언어 해석기 및 대화형 시각적 인터페이스
관련 출원에 대한 상호 참조
본 출원은, 2020년 5월 24일자로 출원되고 발명자로 Sara Itani가 등재되고 발명의 명칭이 "Domain-Specific Language Interpreter and Interactive Visual Interface for Rapid Screening"인 미국 가특허 출원 제63/029,556호의 이익을 주장한다. 위에서 참조된 출원 및 본 명세서에 제출된 출원 데이터 시트에서 참조된 모든 우선권 문헌들의 전체 내용들은 그 전체가 모든 목적들을 위해 참조로 본 명세서에 포함된다.
기술분야
본 개시내용은, 컴퓨팅 시스템의 사용자가 윈나우잉(winnowing) 전략들을 테스트하고 특정 관심 타겟들을 발견하기 위해 도메인-특정 속성이 풍부한 데이터 세트에서 데이터를 탐색 및 필터링할 수 있게 하는 개선된 시스템들 및 방법들에 관한 것이다.
가치있는 무엇인가를 찾기 위해 대량의 데이터를 시프팅하는 것은 종종 어려운 작업이다. "건초 더미에서 바늘을 찾는 것" 및 "샅샅이 찾는 것"과 같은 은유들은, 예를 들어, 채용 관리자가 구직에 대해 인터뷰할 후보들의 세트를 찾는 것, 주택 구매자가 구매 전에 투어링을 위해 고려할 소수의 주택들을 식별하는 것, 또는 투자가가 투자로 고려할 가치가 있는 주식들의 그룹을 선택하기 위해 증권들을 스크리닝하는 것의 어려움을 표현한다.
예를 들어, 주식 시장은 방대한 수의 증권들을 투자가에게 제시하며, 여기서, 방대한 수의 소스들로부터 각각의 증권에 관한 방대한 양의 정보가 이용가능하다. 관심 증권들을 고르는 프로세스를 보다 관리가능하게 만들기 위해, 투자가들은 일부 기준들에 대해 증권들을 스크리닝하여 리스트의 범위를 좁힐 수 있다. 결과는 더 작은 리스트이고; 나머지 증권들이 더 유망한지 여부는, 이들을 선택하고 검증할 때의 기준들 및 정교함에 대한 투자가의 선택에 의존한다. 리스트를 좁히기 위한 엄청난 수의 이용가능한 기준들 - 일부는 유용하고, 일부는 무가치하고, 일부는 오도하는 것으로 판명됨 - 에 기초하여, 심지어 증권들을 효과적으로 스크리닝하는 것이 난해할 수 있다.
스크리닝을 위한 전략들은 투자가의 투자 철학을 반영하려고 시도할 수 있거나, 또는 전략들은 일반적으로 형식으로 취급되거나 또는 직감을 백업하기 위해 산발적으로 사용될 수 있다.
도 1은 일 실시예에 따른, 주식 스크리닝을 위해 구성된 그리드 뷰 디스플레이 및 멀티 라인 편집기를 도시하는 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다.
도 2는 일 실시예에 따른 신속한 스크리닝 시스템의 동작 루틴을 예시한다.
도 3a 및 도 3b는 일 실시예에 따른 멀티 라인 편집기 내의 개정을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다.
도 4는 일 실시예에 따른 주식들의 맞춤 유니버스를 생성하기 위한 대화를 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다.
도 5a는 일 실시예에 따른 도메인-특정 유연한 텍스트 매칭 및 완성 제안들을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다.
도 5b는 일 실시예에 따른 데이터 태그 탐색을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다.
도 6a 및 도 6b는 일 실시예에 따른 기준에 따른 필터링을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다.
도 7은 일 실시예에 따른 맞춤 변수 이름에 할당된 표현을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다.
도 8a 내지 도 8c는 일 실시예에 따른 맞춤 변수 이름에 대한 다수의 참조들의 동시적인 개명을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다.
도 9는 일 실시예에 따른 도메인-특정 신택스 에러 처리를 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다.
도 10은 일 실시예에 따른 변환 함수들을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다.
도 11은 일 실시예에 따른 어레이 데이터의 자동 그래프 디스플레이를 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다.
도 12는 일 실시예에 따른 10-K 파일링들에 대한 링크들의 자동 디스플레이를 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다.
도 13은 일 실시예에 따른 특허들을 보유하는 회사들의 선택적 디스플레이를 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다.
도 14는 일 실시예에 따른 10-K 파일링들에서 발견된 텍스트에 대한 필터링을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다.
도 15는 일 실시예에 따른 결과들의 그룹화를 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다.
도 16a 및 도 16b는 종래 기술 시스템에 대한 예시적인 공식 및 일 실시예에 따른 개선된 사용 용이성을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템에 대한 대응하는 예시적인 표현들을 예시한다.
도 17a 및 도 17b는 일 실시예에 따른 백테스팅을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다.
도 18은 일 실시예에 따른, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 변화 경보 그래프를 예시한다.
도 19a는 일 실시예에 따른, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템에서 성찰에 대한 예시적인 AI 특징부를 예시한다.
도 19b는 일 실시예에 따른, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템에서의 예측을 위한 예시적인 AI 특징부를 예시한다.
도 20은 일 실시예에 따른, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템에서 체제 변화 검출을 위한 예시적인 AI 특징부를 예시한다.
도 21은 일 실시예에 따른, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템에서 블렌딩을 최적화하기 위한 예시적인 AI 특징부를 예시한다.
도 22는 일 실시예에 따른, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템에서 특징부 제안들을 위한 예시적인 AI 특징부를 예시한다.
도 23은 일 실시예에 따른 연산자들의 독창적인 사용들을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다.
도 24는 일 실시예에 따른 자동 포맷을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다.
도 25는 일 실시예에 따른, 예측들의 시점 상황 보고를 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다.
도 26은 일 실시예에 따른 상황 보고 이력 예측 그래프를 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다.
도 27은 본 기술이 구현될 수 있는 컴퓨팅 시스템들 및 다른 디바이스들에 전형적으로 통합되는 컴포넌트들 중 일부를 도시하는 블록도이다.
도 28은 일 실시예에 따른 백테스팅을 위한 예시적인 동시적 서버 상호작용의 몇몇 컴포넌트들을 예시하는 개략적인 데이터 흐름도이다.
도 29는 일 실시예에 따른 신속한 스크리닝 시스템을 구현하기 위한 예시적인 서버 시스템의 몇몇 컴포넌트들을 예시하는 개략도이다.
본 출원은, 특별히 도메인용으로 구성된 컴퓨팅 시스템의 사용자가 윈나우잉 전략들을 테스트하고 특정 관심 타겟들을 발견하기 위해 속성이 풍부한 데이터 세트에서 데이터를 탐색 및 필터링할 수 있게 하는 개선된 시스템들 및 방법들을 개시한다.
개시된 기술은 도메인-특정 언어 해석기 및 도메인-특정 언어로 입력된 심볼들 및 연산자들에 함께 즉시 응답하는 대화형 시각적 인터페이스를 포함하는 신규한 직관적인 접근법을 활용한다. 본 기술은 사용자가 임의의 시간에 입력된 심볼들 및 연산자들을 입력, 수정, 추가, 삽입, 감산, 변경 및 달리 자유롭게 편집할 수 있게 하는 멀티 라인 편집기와 같은 입력 인터페이스를 포함한다. 도메인-특정 언어 해석기는 입력된 심볼들 및 연산자들을, 이들이 업데이트될 때 계속적으로 프로세싱한다. 대화형 시각적 인터페이스는 또한 입력 인터페이스의 현재 콘텐츠에 따라 업데이트되는 라이브 결과들을 디스플레이하는 그리드 뷰를 포함한다.
이 기술은 추가로, 이력 데이터 및 벤치마크들에 대해 선택된 타겟들의 고속 동시성 평가를 제공하여, 전략들이 수 초 내에 백테스팅될 수 있게 한다. 이 기술은 또한, 예를 들어, 사용자가 이를 구동하는 전략들 또는 인자들을 식별하고, 유사한 타겟들을 찾고, 상이한 평가 기준들을 고려하는 것을 보조하기 위한 인공 지능(AI) 기계 학습 특징부들을 포함한다.
예를 들어, 증권 정보에 적용되는 바와 같이, 본 명세서에 개시된 시스템들 및 방법들은 증권들을 스크리닝하는 개선된 접근법을 제공한다.
함께, 개시된 기술의 다양한 양상들은 짧은 학습 곡선으로 높은 사용 용이성을 제공하고, 구조화된 및/또는 구조화되지 않은 데이터를 탐색, 시각화 및 필터링하기 위한 반복 검색 전략들의 신속한 개선을 가능하게 하기 위해 즉각적인 피드백을 제공한다. 도메인-특정 언어 및 연관된 해석기 및 대화형 시각적 인터페이스는 데이터 탐색, 질의, 시각화 및 당면한 목표들을 하나의 중앙 작업흐름으로 함께 모은다. 도메인-특정 언어의 구조 및 신속한 스크리닝 시스템에 의해 제공되는 즉각적인 사용자-친화적인 피드백은 반복적 발견 및 탐색을 촉진하기 위해 조합되어, 사용자가 그들의 스크리닝 기준들의 효과들을 시각화하는 것을 가능하게 하고, 비즈니스 스프레드시트 경험만을 갖는 사용자가 복잡한 스크리닝 동작들을 신속하게 수행하기에 충분히 용이하게 한다. 따라서, 대답들을 찾기를 원하는, 기술적 전문지식이 없는 사람은, 그러한 전문지식을 갖는 다른 사람 또는 팀에 의존할 필요 없이, 본 명세서에 개시된 기술을 통해 대답들을 획득할 수 있다. 추가의 결과로서, 사용자는 기술에 의해 제공되는 특징들에 기초하여 실시간으로 옵션들을 탐색하고 자신들의 생각을 개선할 수 있다.
또한, 본 개시내용의 기술은 아이디어 생성, 윈나우잉, 조사, 테스팅, 실행 및 전략(예를 들어, 투자 전략)의 모니터링을 위한 프로세스들의 근본적인 시프트를 가능하게 한다. 과거에는, 그러한 프로세스들 각각이 별개로 처리되었을 것이다. 개시된 기술은 이들 모두를 고유하게 합성한다. 본 기술은 상이한 사람들에 의해 수행되는 분리된 프로세스들을 제한되고 분리된 피드백 루프들로 대체하고, 이 모든 것을 통합된 즉각적 피드백 루프를 이용하여 하나의 언어, 툴 및 인터페이스에 통합한다.
개시된 신속한 스크리닝 시스템에 대한 기반을 제공하는 본 개시내용에 설명된 기술은, 컴파일러들, HCI(human-computer interfaces or interactions), 프로그래밍 언어 설계, 데이터베이스 엔지니어링, 분산 컴퓨팅, 기계 학습, 정량적 분석들, 및 금융에서 진보들 및 통찰력들을 포함한다. 그 결과, 전체적으로 본 개시내용의 개선들은 몇몇 이질적인 기술들에서의 개선들을 조합하며, 일반적으로 어느 하나의 기술분야에서 통상의 지식을 가진 자에게 자명하지 않았을 것이다.
이제, 도면들에 예시된 바와 같은 실시예들의 설명이 상세히 참조된다. 실시예들이 도면들 및 관련 설명들과 관련하여 설명되지만, 본 명세서에 개시된 실시예들로 범위를 제한하려는 의도는 없다. 반대로, 그 의도는 모든 대안들, 수정들 및 등가물들을 커버하는 것이다. 대안적인 실시예들에서, 본 명세서에 개시된 실시예들로 범위를 제한하지 않으면서, 상이한 또는 추가적인 입력 인터페이스들(예를 들어, 드롭-다운 메뉴 선택기들 또는 자연 언어 프로세싱)이 예시된 것들에 추가되거나 이들과 조합될 수 있다. 예를 들어, 아래에서 제시되는 실시예들은 주로 주식 스크리닝의 맥락에서 설명된다. 그러나, 본 명세서에서 설명된 실시예들은 예시적인 예들이며, 개시된 기술을 임의의 특정 애플리케이션, 도메인, 지식 본문, 검색의 타입 또는 컴퓨팅 플랫폼으로 결코 제한하지 않는다.
문구들 "일 실시예에서", "다양한 실시예들에서", "일부 실시예들에서" 등이 반복적으로 사용된다. 그러한 문구들은 반드시 동일한 실시예를 지칭하는 것은 아니다. 용어들 "포함하는", "갖는" 및 "구비하는"은, 맥락이 달리 지시하지 않는 한 동의어이다. 본 명세서 및 첨부된 청구항들에서 사용되는 바와 같이, 단수 형태들("a", "an" 및 "the")은, 내용이 명확하게 달리 나타내지 않는 한, 복수의 지시 대상들을 포함한다. 또한, 용어 "또는"은, 내용이 명확하게 달리 나타내지 않으면, "및/또는"을 포함하는 의미로 일반적으로 사용된다는 점에 유의해야 한다.
개시된 신속한 스크리닝 시스템들 및 방법들은 다양한 폼 팩터들을 취할 수 있다. 도 1 내지 도 29는 몇몇 상이한 배열들 및 설계들을 예시한다. 예시된 신속한 스크리닝 시스템들은 완전한 리스트가 아니며; 다른 실시예들에서, 신택스가 재배열될 수 있거나(예를 들어, "filter" 또는 "~" 대신에 "only" 또는 "limit"), 입력 편집기 또는 결과 디스플레이가 상이한 배열들로 형성될 수 있다. 그러나, 예시적인 실시예들을 설명하기 위해 그러한 선택적인 구현 세부사항들을 철저히 보여줄 필요는 없다.
도 1은 일 실시예에 따른, 주식 스크리닝을 위해 구성된 그리드 뷰 디스플레이(102) 및 멀티 라인 편집기(101)를 도시하는 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스(100)를 예시한다. 사용자 인터페이스(100)는 도 27, 도 28, 및 도 29를 참조하여 아래에서 더 상세히 설명되는 로컬 또는 원격 서버들과 같은 하나 이상의 신속한 스크리닝 시스템 컴퓨팅 디바이스들에 의해 제공될 수 있다. 예시된 사용자 인터페이스(100)에서, 신속한 스크리닝 시스템은 멀티 라인 편집기(101)를 사용자에게 제공하며, 여기서 사용자는 1-6으로 넘버링된 일련의 라인들 상에 심볼들(110, 120, 130, 140, 150, 160)을 입력한다.
라인들(1-6) 각각은 도메인-특정 언어(이 경우, 증권들의 도메인에 특정된 언어)의 일부인 심볼들(110-160)을 포함한다. 심볼들(110-160)은: 시작할 식별자들의 유니버스 - 각각의 식별자는 유니버스의 멤버를 표현함 -; 데이터 값들에 대한 데이터 태그들 - 각각의 데이터 값은 식별자와 연관됨 -; 데이터 값들에 대해 작업하는 연산자들; 및/또는 고려될 식별자들의 유니버스를 제한하거나 좁히기 위한 필터 기준들 중 하나 이상을 표현한다.
규격은 도메인-특정 언어를 정의한다. 도메인 특정 언어는 도메인에 초점을 맞추며, 따라서 범용 프로그래밍 도구들 또는 언어들에 대한 제약들을 포함할 수 있다. 대조적으로, 파이썬(Python) 또는 구조화된 질의 언어(SQL)와 같은 범용 언어는 도메인-특정 언어가 아니라 크로스-도메인 프로그래밍 언어이다. 도메인-특정 언어의 신택스의 대부분은 도메인-특정 용어들이어서, 도메인의 당업자는 도메인-특정 언어의 신택스의 대부분을 인식할 것이다. 이는, 도메인-특정 언어가 매우 적은 프로그래밍-특정 신택스를 포함하고 범용 프로그래밍에 적합하지 않다는 것을 의미한다. 이는 또한, 사용자가 어떠한 "프로그래밍" 없이도 결과들을 얻을 수 있다는 것을 의미하며: 신속한 스크리닝 시스템은, 의미론적으로 의미가 있고 따라서 또한 인간-판독가능하기 때문에, 사용자가 단지 하나의 데이터 태그를 입력하더라도, 결과들을 디스플레이할 것이다.
다양한 실시예들에서, 도메인-특정 언어는 식별자와 연관된 데이터(데이터에 대한 동작들의 결과들을 포함함) 또는 식별자들 중에서 선택하기 위한 필터링 동작을 표현하는 심볼들을 포함한다.
일부 실시예들에서, 도메인-특정 언어는 비-도메인-특정 키워드들을 포함하지 않는다. 그 경우, 연산자들은 모두 심볼들이다(예컨대, "+" 또는 브래킷들 "[". . ."]"). 그 결과, 사용자가 멀티 라인 편집기(101)에 입력하는 모든 알파벳 텍스트, 예를 들어 데이터 태그가 의미있는 것으로 이해될 수 있다. 일부 실시예들에서, 도메인-특정 언어는 변환 함수들 이외의 비-도메인-특정 키워드들을 포함하지 않는다.
데이터 태그들 각각은, 표현들의 결과들과 같은 다른 값들로부터 계산되는 값들을 포함하는 식별자(예를 들어, 고유한 증권 ID 및/또는 인식가능한 주식 시세표 심볼에 의해 식별될 수 있는 증권)와 연관된 데이터 값을 나타낸다. 많은 실시예들에서, 데이터 값들은 또한 날짜, 날짜 범위 또는 일련의 날짜들과 연관된다. 데이터 값들의 유형들은 예를 들어, 숫자 값들(예를 들어, 증권에 대한 가장 최근의 가격 또는 자기 자본 이익률(ROE)), 문자열 값들(예를 들어, 국가 또는 섹터), 다수의 값들의 어레이들(예를 들어, 마지막 4분기들 각각에 대한 ROE 또는 최근 뉴스 헤드라인들), 데이터 구조들/컬렉션들/직렬화들, 예컨대, JSON(JavaScript Object Notation) 또는 XML(eXtensible Markup Language) 또는 HTML(HyperText Markup Language) 또는 CSV(comma-separated values) 데이터(예를 들어, 그의 날짜 및 하이퍼링크를 포함하는 10-K 파일링에 관한 정보) 등을 포함할 수 있다.
표현은 도메인-특정 언어의 데이터 태그들 및 동작들의 유한하고 잘 형성된 조합이고; 사용자 입력의 라인은 하나의 표현 또는 다수의 표현들로 해석될 수 있다. 사용자에 의해 입력된 표현들은 각각, 각각의 식별자에 대한 위의 유형들의 데이터 값 중 하나를 생성하도록 평가된다(예를 들어, 새로운 문자열을 생성하기 위해 문자열들을 연쇄 또는 다른 방식으로 조합하는 것, 또는 새로운 숫자 값을 생성하기 위해 ROE와 자산수익률("ROA")의 표준화되고 가중된 혼합을 계산하는 것). 표현들은 예를 들어 '+' 또는 '*'와 같은 표준 수학 연산자들을 사용할 수 있다. 따라서, 표현은 다른 표현들을 포함하는 다른 데이터 값들로부터 계산되는 데이터 값을 초래한다.
변환들은 참조에 대해, 예컨대 시간이 지남에 따라, 표준 분포에 대해, 또는 다른 증권들과 비교하여(예를 들어, 평균, 랭크, 5분위수, 표준화, 추세 안정성 등) 식별자에 대한 데이터 값들을 특성화하는 메타데이터를 생성하는 표현들이다.
변수 이름들은, 임의의 사용자-선택 변수 이름에 사용자가 할당하는 데이터 값들의 임의의 세트(예를 들어, 사용자가 계산되기를 원하는 임의의 표현의 값)를 표현하고, 이는, 이어서, 추후의 참조 용이함을 위해, 그 데이터 값을 표현하는 맞춤 데이터 태그가 된다. 이러한 방식으로, 사용자는 도메인-특정 언어를 확장시킬 수 있다.
고려하고 스크리닝할 식별자들의 유니버스들(예를 들어, 증권들)은 미리-정의된 세트들(모든 주식들, S&P 500®의 모든 멤버들, 모든 외국 증권들, 모든 미국 대형주들, 회사 또는 정부 채권들 등)을 포함할 수 있고/있거나 사용자 정의된 맞춤 세트들 또는 템플릿들을 포함할 수 있다.
매칭 연산자들은 예를 들어, 수치 비교기들(예를 들어, <, <=, ==, >=, >, != / <>)(예를 들어, 수익 > 10M)[다양한 실시예들에서, 약칭 단위들, 예를 들어, 백만에 대해 M, 천에 대해 k가 프로세싱 및/또는 디스플레이될 수 있음] 또는 'contains' 또는 'is' 또는 '?'와 같은 텍스트 비교기들을 제공한다. (예를 들어, TickerSymbol ? "AAPL" or Latest10K contains "china tariffs"). 일부 실시예들에서, 'contains'와 같은 연산자는 알파벳 텍스트 없이 구현된다. 예를 들어, "includes" "has" 또는 "contains" 관계를 나타내기 위해 브래킷 표기를 사용하면, 신택스는 "Filings10k["china tariffs"]"일 수 있다. 이는 다른 것(회사 10-K 파일링들의 세트) 내의 하나의 것(문구 "china tariffs")의 직관적인 표현을 제공하고, 그렇지 않으면 도메인-특정 언어의 비-도메인-특정 키워드들을 피한다.
필터링 연산자들은 하나 이상의 매칭 연산자들(예를 들어, ~RoE > 0 또는 가격 < 100)에 따라 일부 데이터 값 또는 표현 기준과 매칭하는 식별자들을 선택한다. 다양한 실시예들에서, 필터링은 축소된 크기의 유니버스 또는 초기에 선택된 유니버스의 더 작은 부분을 디스플레이하게 하고, 필터링에 사용된 기준에 대응하는 데이터 값을 디스플레이한다.
다양한 실시예들에서, 도메인-특정 언어는 도 1에 예시된 신속한 스크리닝 시스템과 같은 환경 또는 도구 - 이는 (예를 들어, 다양한 입력 옵션들 중에서, 키보드, 음성 인식 또는 자연어 프로세싱, 온-스크린 버튼들, 드롭다운 메뉴, 및/또는 콘텍스트 메뉴 아이템 선택으로부터(이들 중 일부는 편집기 대신에 디스플레이될 수 있음)) 사용자 입력을 수락하도록 구성된 대화형 멀티 라인 편집기를 포함함 -; 도메인-특정 언어를 정의하는 규격에 따라 입력을 해석하도록 구성된 파서 및 해석기; 입력에 따라, 도메인과 관련된 구조화된 및/또는 구조화되지 않은 데이터를 획득하도록 구성된 서버 엔진; 및 사용자가 입력을 대화형 편집기에 입력할 때 라이브 업데이트 결과 디스플레이 또는 그리드 뷰를 제공하도록 구성된 시각화 툴을 통해 프로세싱된다. 다양한 실시예들에서, 편집기에 입력된 각각의 표현 및/또는 데이터 태그는 그리드 뷰에 디스플레이된 정보의 열에 대응한다.
결과 데이터는, 기존 시스템들과 달리, 의미 있게 해석되고 사용자에 의해 쉽게 시각화될 수 있는 방식으로 제시된다. 이는, 사용자가 올바른 데이터를 풀 다운(pull down)하고 있고, 이를 잠재적으로 정화하고 있음을 보장하는 데 소비해야 하는 시간을 줄인다. 이는 또한, 패턴들 및 관계들을 발견하는 것을 더 용이하게 한다. 따라서, 신속한 스크리닝 시스템은 사용자들에 대한 투자 전략들을 예시하는 것을 돕고: 종래의 스크리너와 달리, 본 개시내용의 시스템들 및 방법들은 데이터의 신속한 발견 및 탐색; 상이한 아이디어들을 검증 또는 무효화하기 위한 상이한 아이디어들의 테스팅; 맞춤 표시자들 및 인덱스들의 유연한 생성; 반복가능한 프로세스들; 추세들, 공통성들 및 특성들의 식별; 및 전략들에 직접 적용될 수 있는 액션가능한 통찰력들을 가능하게 한다.
도 1로 되돌아가면, 제1 라인(110) 상에서, 사용자는 "$UnitedStatesAll"을 입력하였다. (증권들의 도메인 내의) 이 예에서, "$"는 식별자들의 유니버스를 나타내는 기표이고, 유니버스는 모두 미국 주식들이다. 본 명세서에서 사용되는 바와 같이, 식별자는 유니버스의 멤버(예시된 예에서는 특정 증권)를 표현한다. 따라서, 사용자는 모든 미국 주식들을 고려함으로써 시작하기로 선택하였다. 증권 도메인 내에서, 사용자는 대안적으로, 예를 들어, 기업 또는 정부(예를 들어, 지방 자치제) 채권들, 옵션들, 뮤추얼 펀드들 등; 다른 국가들의 주식들; 특정 교환으로 거래되는 주식들; 산업-특정 증권들; 고정 수입 금융 상품들; 부실 채권; 파생 상품 증권들; 등등과 같은 다른 유형들의 증권들을 고려하도록 선택할 수 있다. 본 개시내용은 일반적으로 "주식들", "스톡들" 또는 "회사들"이라는 용어들을 편리한 약칭으로서 사용하지만, 본 개시내용의 의도는 그러한 용어들을 갖는 모든 증권들을 포괄하는 것이다.
멀티 라인 편집기(101) 아래에는 그리드 뷰 디스플레이(102)가 예시된다. 다른 실시예들에서, 멀티 라인 편집기(101) 및 그리드 뷰 디스플레이(102)의 배열들은 상이할 수 있는데; 예를 들어, 편집기가 아래에 있거나, 또는 나란히 있거나, 또는 완전히 상이한 윈도우들 또는 스크린들에 있을 수 있다. 그리드 뷰 디스플레이(102)는 일련의 열들(115, 123, 125, 133, 135, 145, 155)을 포함한다. 열들 각각은 멀티 라인 편집기(101)에서의 심볼 또는 표현에 직접 대응한다. 예를 들어, 도시된 "시세표" 열(115)은 모든 미국 주식들의 "$UnitedstatesAll" 유니버스에 대응한다. "시세표" 열(115)은 일련의 행들을 디스플레이하고, 하나의 행은 모든 미국 주식들의 유니버스와 연관된 각각의 식별자에 대한 것이다. 따라서, 각각의 미국 주식은 그의 시세표 심볼에 의해 "시세표" 열(115)에서 식별된다. 시세표들은 단지 디스플레이 이름일 뿐이며, 다양한 구현예들에서, 기술은 고유 식별자들을 사용하여 각각의 증권을 명확하게 식별한다. 예를 들어, 선택된 유니버스의 멤버들 각각은 자신의 전체 이름 및 교환에 의해, 또는 예를 들어, 보안 ID와 같은 일부 다른 고유 식별자에 의해 식별될 수 있다. 이는 특히, 국제 주식들을 지원하는 데 유용하다. 기술의 다른 실시예들에서, 그리드 뷰 디스플레이(102)는 상이하게 배열될 수 있는데, 예컨대, 각각의 열은 증권(또는 다른 스크리닝 타겟)을 표현하고 각각의 행은 증권의 속성들을 표현하고, 테이블들이 네스팅되거나, 또는 다른 동등한 배열들을 가지며, 이들은 본 개시내용의 범위 내에 있다.
예시된 열 및 행 포맷의 다양한 구현예들에서, 각각의 열의 데이터 값들은, 예컨대, 열 제목과의 사용자 상호작용(예를 들어, 정렬 순서 또는 콘텍스트 메뉴를 정렬, 반전 또는 복원하기 위한 마우스 클릭)에 의해 정렬가능하다. 다양한 구현예들에서, 열들 자체가 재정렬될 수 있다. 예를 들어, 그리드 뷰 디스플레이(102)는, 열이 다른 열에 대해 좌측 또는 우측으로 시프트되거나, (예를 들어, 마우스 클릭-드래그 동작에 의해) 열들 사이의 상이한 위치로 드래그되거나, 숨겨지거나 닫히거나(또는 재도시됨), 또는 (예를 들어, 재확장될 수 있는 데이터의 세트 또는 그룹화를 나타내는 아이콘으로서) 최소화되는 제어를 제공할 수 있다. 일부 실시예들에서, 정보의 열이 그리드 뷰에서 이동되거나 제거될 때, 인터페이스는 편집기에서 대응하는 표현 및/또는 데이터 태그를 갖는 표시, 예컨대, 열이 재도시될 수 있게 하는 제어부 또는 열이 원래의 순서와 다르게 디스플레이되고 있음을 나타내는 표기를 디스플레이한다. 일부 실시예들에서, 정보의 열이 그리드 뷰에서 이동되거나 제거될 때, 시스템은 또한 편집기에서 코드를 업데이트한다.
멀티 라인 편집기(101)에서 계속하여, 제2 라인(120) 상에서, 사용자는 "ReturnOnEquityPct | Standardize => zScoreROE"를 입력하였다. 예시된 예의 특정 신택스가 아래에서 더 상세히 설명되지만, 기술은 다양한 등가의 대안들을 포함하며, 예시된 정확한 도메인-특정 언어로 제한되지 않는다. 이 예에서, 사용자는 먼저 데이터 태그 "ReturnOnEquityPct"를 선택하거나 입력하였다. 본 명세서에서 사용되는 바와 같이, 데이터 태그는 주어진 유니버스의 멤버들 각각의 속성을 표현하고; 데이터 태그는 각각의 식별자와 연관된 특정 데이터 값을 라벨링하거나 또는 지칭한다. 예를 들어, 모든 미국 주식들의 유니버스에서, 그 유니버스에서 주식을 갖는 각각의 회사에 대해, ReturnOnEquityPct는 자기 자본 이익률 퍼센티지를 지칭한다. 유사하게, 이 예에서 멀티 라인 편집기(101)의 제3 라인(130)에 도시된 바와 같이, ReturnOnAssets은 각각의 그러한 회사에 대해, 자산수익률을 지칭한다.
따라서, 그리드 뷰 디스플레이(102)에서, 열(123)은 열의 최상부의 헤더 라인에 "Return On Equity Pct" 데이터 태그를 도시하고, 대응하는 행에 도시된 각각의 시세표 심볼에 대한 자기 자본 이익률 퍼센티지를 나열하는 데이터 값들을 디스플레이한다. 예시된 예에서, 스크린은 현재 날짜로서 실행된다. 다양한 실시예들에서, 시스템은 스크린이 이전의 "날짜로서" 또한 실행될 수 있게 한다.
라인들(120 및 130)은 ReturnOnEquityPct 및 ReturnOnAssets 데이터 태그들로 시작하고, 이들 각각을 정규 분포로 표준화하여 z-스코어를 생성함으로써 이들 각각을 변환하는 표현들로 진행된다. 일부 실시예들에서, 표준화 기능은 먼저, 이상치(outlier) 효과들을 감소시키기 위해 값들을 윈저화(Winsorize)하고, 널 값들을 중앙값 등으로 대체한다. 이어서, 예시된 표현들은 그러한 z-스코어들을 맞춤 명명된 변수들 또는 데이터 태그들, 즉 "zScoreROE" 및 "zScoreROA"에 각각 할당한다. 따라서, 열(125)은, "z Score ROE"라는 제목 아래에, (열(115)에서 그의 시세표 심볼로 표현되는) 각각의 주식에 대한 자기 자본 이익률 퍼센티지에 대한 정규화된 z-스코어들을 디스플레이하고; 열(135)은, "z 스코어 ROA"라는 제목 아래에, 각각의 주식에 대한 자산수익률에 대한 정규화된 z-스코어들을 유사하게 디스플레이한다.
멀티 라인 편집기(101)의 라인(140)은 zScoreROE 및 zScoreROA 데이터 태그들을 추가하고, 이들을 새로운 변수 또는 데이터 태그인 "zScoresAdded"에 할당하는 표현이다. 따라서, 그리드 뷰(102)의 열(145)은 "z 스코어 추가"라는 제목을 가지며, 열(115)에서 시세표 심볼을 갖는 각각의 주식 식별자에 대한 새로운 데이터 값을 디스플레이한다. 열(145)의 데이터 값들은 열들(125 및 135)의 데이터 값들의 합들이다.
이 예에서, 명백한 반올림이 관찰될 수 있으며: 디스플레이된 값들은 스크리닝 프로세스에서 가독성을 향상시키기 위해 소수점 이하 두 자리로 자동으로 제한되는 한편, 시스템은 디스플레이된 데이터 값들의 근간이 되는 정확한 숫자들에 대해 동작할 수 있다. 다른 실시예들에서, 유효 숫자들의 사용 또는 사용의 용이성을 제공하기 위한 다른 접근법들이 이용될 수 있다. 일부 실시예들에서, 데이터 값 위에 호버링하거나, 오른쪽 클릭하거나, 복사하여 붙여넣기하거나, 길게 누르는 것과 같은 사용자 액션은 그 값에 관한 추가 세부사항들을 드러낼 수 있다.
멀티 라인 편집기(101)에서 계속하여, 제5 라인(150) 상에서, 사용자는 표현 "zScoresAdded | SplitQuintiles => bucket"을 입력하였다. 함수 제안 페인 및 설명 텍스트(151)에 도시된 바와 같이, 이러한 예에서 splitQuintiles 함수는 식별자들의 현재 세트(예를 들어, 인식가능한 시세표 심볼들이 디스플레이되는 경우에도 보안 ID들)에 걸쳐 zScoresAdded에 대한 데이터 값들을 5분위수로 정렬하고, 여기서, 예를 들어, 가장 낮은 5분위수에는 값 "1"이 할당되고, 가장 높은 5분위수에는 값 "5"가 할당된다(일부 시스템들에서, 그 반대도 가능함). 따라서, 모든 미국 주식들 중에서, 조합된 자기 자본 이익률 퍼센티지(표준화됨) + 자산수익률(표준화됨)가 하위 20%에 있는 회사들은 열(155)에서 "1"의 값을 가지며, 상위 20%에 있는 회사들이 열(155)에서 "5"의 값을 갖고, 다른 회사들은 열(155)에서 "2", "3" 또는 "4"를 갖는다. 그리드 뷰(102)에서, 열(155)의 제목은 "버킷"인데, 이는 멀티 라인 편집기(101)에서, 라인(150)의 표현이 5분위수 데이터 태그를 맞춤 변수 "버킷"에 할당하기 때문이다.
제6 라인(160)에서, 사용자는 표현 "~ bucket == 5"를 입력하였다. 이 표현의 물결표는 이 예시적인 예의 신택스에서 필터링 동작을 표현한다. 이 동작은 사용자가 매칭 기준에 따라 이전에 디스플레이된 식별자들의 세트를 필터링, 제한, 감소 또는 좁히는 것을 가능하게 한다. 이 경우, 신속한 스크리닝 시스템이 멀티 라인 편집기(101)의 라인(160)에서 필터링 표현을 프로세싱하면, 그리드 뷰(102)는 더 이상 모든 미국 주식들의 전체 유니버스의 모든 식별자들(또는 편의상, 주식 시세표 심볼들)을 디스플레이하지 않는다. 대신에, 맞춤 변수 "버킷"이 "5" - 즉, 표준화된 조합된 자기 자본 이익률 퍼센티지 및 자산수익률에 대한 최고 5분위수 - 의 데이터 값(165)을 갖는 주식 시세표들만이 업데이트된 그리드 뷰(102)에 포함된다.
따라서, 개시된 신속한 스크리닝 시스템은 사용자가 많은 볼륨들의 다중-속성 데이터의 정교한 스크리닝을 수행할 수 있게 하고, 그리고 최소의 신택스로, 그리고 전례없는 연속적이고 효과적으로 즉각적인 피드백 및 결과들로, 허용되는 이전 시스템들보다 훨씬 더 쉽게 이를 수행할 수 있게 한다.
도 2는 일 실시예에 따른 신속한 스크리닝 시스템의 동작 루틴(200)을 예시한다. 다양한 실시예들에서, 동작 루틴(200)은 도 27, 도 28, 및 도 29를 참조하여 아래에서 더 상세히 설명되는 로컬 또는 원격 서버들과 같은 하나 이상의 신속한 스크리닝 시스템 컴퓨팅 디바이스들에 의해 수행된다. 동작 루틴(200)은 시작 블록(201)에서 시작된다.
도 2, 및 후속하는 흐름도들 및 개략도들은 대표적이며, 데이터의 모든 기능들, 단계들 또는 교환들을 도시하지는 않을 수 있고; 대신에, 이들은 시스템이 어떻게 구현될 수 있는지에 대한 이해를 제공한다. 당업자들은 일부 기능들이 반복, 변경, 생략 또는 보충될 수 있으며, 도시되지 않은 다른(덜 중요한) 양태들이 쉽게 구현될 수 있음을 인식할 것이다. 당업자들은 도 2에 그리고 아래에서 논의되는 개략도들 각각에 도시된 블록들이 다양한 방식들로 변경될 수 있음을 인식할 것이다. 예를 들어, 프로세스들 또는 블록들이 주어진 순서로 제시되지만, 대안적인 구현예들은 루틴들을 상이한 순서로 이용할 수 있고, 일부 프로세스들 또는 블록들은 대안 또는 하위 조합들을 제공하기 위해 재배열, 삭제, 이동, 추가, 세분화, 조합 및/또는 수정될 수 있다. 이러한 프로세스들 또는 블록들 각각은 다양한 상이한 방식들로 구현될 수 있다. 또한, 프로세스들 또는 블록들은 직렬로 수행되는 것으로 때때로 도시되지만, 이러한 프로세스들 또는 블록들은 그 대신 병렬로 수행 또는 구현될 수 있거나 상이한 시간들에 수행될 수 있다. 도 2에 도시된 블록들 및 다른 개략도들 중 일부는 당해 기술분야에 잘 알려진 유형이며, 그 자체가 본 명세서에서 설명될 필요가 없는 동작들의 시퀀스를 포함할 수 있다. 당업자들은 본 명세서에서 제공된 도면들 및 상세한 설명에 기초하여, 소스 코드, 마이크로코드, 프로그램 로직 어레이들 등을 생성하거나, 또는 개시된 기술을 달리 구현할 수 있다.
블록(215)에서, 동작 루틴(200)은 신속하게 스크리닝될 결과들의 디스플레이 및/또는 사용자 입력을 위한 인터페이스를 생성한다. 예를 들어, 아래에서 설명되는 다양한 동작들을 예시하기 위한 예로서 사용될 일 실시예에서, 동작 루틴(200)은 (도 1의 멀티 라인 편집기(101)와 같은) 대화형 편집기 및 (도 1의 그리드 뷰(102)와 같은) 결과 그리드 뷰를 제공한다. 다양한 실시예들에서, 신속한 스크리닝 시스템은 사용자 입력 및/또는 결과들의 디스플레이를 위한 인터페이스가 신속한 스크리닝 시스템 서버로부터 원격의 클라이언트 디바이스 상에 제시되게 한다.
블록(225)에서, 동작 루틴(200)은 예를 들어, 블록(215)에서 제공된 대화형 편집기를 통해 입력을 획득하고, 도메인-특정 언어 규격 또는 문법과 관련하여 입력을 파싱한다. 도메인-특정 언어 규격 또는 문법은 예를 들어, 특정 도메인으로부터의 데이터 태그들을 표현하는 용어들을 포함할 수 있어서, 도메인에 대한 지식을 갖는 사용자는 그 지식을 사용하여 도메인-특정 언어에서 용어를 발견할 수 있다. 예를 들어, 증권들, 그리고 특히 주식들의 도메인에서, "ROE"는, 예를 들어, 연 순 이익을 주주들의 주식으로 나누어서 계산되는, 이익 또는 재정적 성능의 척도(자산 마이너스 부채)인 "자기 자본 이익률"에 대한 일반적인 약칭이다. 따라서, 신속한 스크리닝 시스템이 그러한 도메인에 대해 구성되고 사용자로부터 "roe"의 입력을 수신하면, 동작 루틴(200)은 텍스트 패턴 매칭을 사용하여 "ROE" 또는 "ReturnOnEquity"로 명명된 데이터 태그에 대한 요청으로서 입력을 파싱할 수 있다.
다양한 구현들에서, 블록(225)에서 입력을 파싱하는 것은 입력 내의 도메인-특정 언어 규격 또는 문법으로부터 심볼들 또는 토큰들을 식별하기 위해 입력의 어휘 분석을 수행하는 것, 및 입력 심볼들을 추상적 신택스 트리(abstract syntax tree, AST)로 전환하기 위해 구문 분석을 수행하는 것을 포함한다.
블록(235)에서, 동작 루틴(200)은 파싱 에러들을 처리한다. 예를 들어, 도메인-특정 언어가 "roe" 또는 "ROE"로 명명된 데이터 태그를 포함하지 않을 때, 사용자는 "roe"를 타이핑할 수 있다. 일부 실시예들에서, 동작 루틴(200)은, 에러를 갖는 라인에 관한 동작 루틴(200)을 통한 추가의 진행을 방해하는 임의의 에러들(예를 들어, 데이터 검색과 같은 다른 단계들에서의 에러들을 포함함)을 기록하고, 보정들과 같은 추가 사용자 입력을 프로세싱하기 위해 블록(225)으로 루프 백한다. 다양한 실시예들에서, 동작 루틴(200)은 에러에도 불구하고 가능한 한 많이 프로세싱하고, 에러에 직면하기 전에 존재한 결과들을 보존한다.
일부 실시예들에서, 동작 루틴(200)은 예컨대, 사용자에 대한 인식되지 않은 입력을 강조함으로써 이를 식별한다. 일부 실시예들에서, 동작 루틴(200)은 도메인-특정 언어에서 가장 가까운 매치를 추론하려고 시도하고, 예를 들어, 인식되지 않은 입력을 가장 가까운 유효 매치로 대체하거나, 또는 인식되지 않은 입력의 잠재적인 대체들 또는 완성들을 제안할 수 있다. 다양한 실시예들에서, 동작 루틴(200)은 사용자의 입력을 파싱하고 파서-인식된 심볼들을 프로세싱하는 것을 계속한다.
블록(245)에서, 동작 루틴(200)은 블록(225)에서 파싱된 데이터 태그들에 대한 동작들을 수행하는 데 필요한 임의의 데이터를 획득한다. 예를 들어, 파싱된 표현이 메모리에 아직 로딩되지 않은 데이터 값들의 세트를 요구하면, 동작 루틴(200)은 필요한 데이터 값들과 연관된 하나 이상의 데이터 소스들을 식별하고 하나 이상의 데이터 소스들 중 적어도 하나로부터 요구된 정보를 로딩한다. 일부 실시예들에서, 동작 루틴(200)은 다른 단계에서 또는 즉석에서 데이터를 획득한다.
일부 실시예들에서, 동작 루틴(200)은 사용자의 입력이 그러한 데이터 값들을 요구할 때 프로세싱을 가속화하기 위해, (변경의 진폭 및/또는 빈도의 휘발성 또는 안정성 측면에서) 느리게 변하는 스냅샷, 식별자들 및/또는 데이터 태그들의 세트 또는 서브세트에 대해 최근에 디스플레이된 및/또는 빈번하게 요구된 데이터 값들을 로딩하거나 미리 로딩하고 캐싱한다. 일부 실시예들에서, 동작 루틴(200)은 (예를 들어, 사용자 이력, 사용자들에 걸친 인기도, 이용가능성 등에 기초하여) 관련 데이터 태그들을 식별하고, 이들을 (예를 들어, 병렬로) 프리페치하고, 데이터를 국부적으로 캐싱하여 사용자에게 신속하게 결과들을 제공한다.
블록(255)에서, 동작 루틴(200)은 파싱된 입력을 해석한다. 예를 들어, 사용자가 표현을 입력하면, 동작 루틴(200)은 파싱된 심볼들이 참조하는 데이터 값들을 식별하고, 어떤 동작들이 수행되어야 하는지를 결정하고, 요구되는 동작들을 실행한다. 예를 들어, 동작 루틴(200)은 AST를 해석하고 각각의 파싱된 표현을 평가할 수 있다. 일부 실시예들에서, 동작 루틴(200)은 라인 단위로 동작한다. 일부 실시예들에서, 동작 루틴(200)은 각각의 입력 라인을 순서대로 평가한다.
일부 실시예들에서, 동작 루틴(200)은, 입력이 파싱되자마자, 계속적으로(예를 들어, 사용자가 타이핑을 중단하기를 기다리지 않고) 입력을 해석 및 실행하여, 인터페이스는 입력이 입력될 때 가능한 한 빨리 업데이트할 것이고, 사용자는 완성된 입력을 실행하는 것으로 결정하기 전에 입력을 입력하는 것을 완료할 필요가 없다. 사용자 입력이 변할 때마다(그리고 선택적으로, 근본적인 데이터가 변할 때마다) 결과들이 즉시 또는 짧은 지연 후에 업데이트되는 경우, 결과들은 "라이브"인 것으로 간주될 수 있다. 라이브 결과들을 제공하는 것은 데이터세트들 자체의 학습가능성 및 탐색을 용이하게 할 뿐만 아니라 인터페이스의 학습가능성을 증가시킨다. 일부 실시예들에서, 동작 루틴(200)은 짧은 지연(예를 들어, 약 10분의 1초 내지 최대 약 1 - 5초의 "디바운스" 기간, 또는 사용자가 타이핑 동안 일시정지하자마자) 후에 입력을 해석 및/또는 실행하여, 신속한 스크리닝 시스템이 이의 프로세싱을 완료하기 전에 사용자가 입력을 마무리하거나 수정하거나 개정할 수 있게 한다. 일부 실시예들에서, 동작 루틴(200)은 아래에서 추가로 설명되는 바와 같이, 이러한 "디바운스" 기간을 결과들의 디스플레이에 적용한다. 이러한 지연들은, 사용자가 준비될 때 동작 루틴(200)이 결과들을 제시하는 것을 도와서, 즉각적이고 반응적인 결과들을 수신하는 것에 대한 사용자의 인지를 개선할 수 있다.
다양한 실시예들에서, 동작 루틴(200)은 사용자 입력에 의해 영향을 받는 진술들, 표현들 또는 라인들만을 해석 및 실행하는 증분적 해석을 제공한다. 예를 들어, 동작 루틴(200)이 제5 라인에 대한 표현을 수신, 파싱 및 해석하면, 동작 루틴(200)은 프로세싱 시간을 최소화하기 위해 변경 없이 처음 4개의 라인들의 콘텐츠들을 유지할 수 있다. 새로운 또는 변경된 요소들을 증분적으로 해석함으로써 그리고 가능한 경우 이전의 결과들과 조합함으로써, 신속한 스크리닝 시스템은 인터페이스의 반응성을 최대화한다.
다양한 실시예들에서, 도메인-특정 언어는 몇몇 이유들의 조합으로 인해 운영 루틴(200)이 해석하는 것(255)에 대해 빠른데: 왜냐하면 해석기는 (예를 들어, 시간, 데이터 항목들 및 사용자 특정 패턴들에 걸쳐) 동시성 및 데이터 샤딩(sharding)을 위해 자신의 설계를 이용할 수 있고; 언어는 도메인-특정적이며, 따라서 범용 컴퓨팅에 적합하기보다는 고도로 전문화되고 태스크에 최적화되고; 사용자가 볼 수 있을 필요가 있는 결과들만이 클라이언트에 전송되고; 증분 해석을 위해 설계되고; 언어 그 자체는 사용자 액션들의 의미론적 이해를 허용하여, 질의 플래너를 최적화하는 것을 가능하게 하기 때문이다. 또한, 백엔드 시스템은 도 27 내지 도 29를 참조하여 아래에서 추가로 논의되는 바와 같이, 도메인-특정 언어에 대한 제약들에 부분적으로 기초하여 빠른 결과들을 제공하도록 배열된다.
블록(265)에서, 입력이 해석 및 해석된 후에, 동작 루틴(200)은, 사용자 입력에 대한 인터페이스로부터 해석된 입력에 대응하는 결과들의 디스플레이를 위해 카테고리들을 업데이트하고, 제거하고/하거나 인터페이스에 추가한다. 예를 들어, 그리드 뷰 실시예에서, 신속한 스크리닝 시스템이 데이터 태그를 새롭게 호출하는 표현을 해석할 때, 동작 루틴(200)은 그 데이터 태그와 연관된 제목을 갖는 열을 그리드 뷰에 추가한다. 일부 실시예들에서, 동작 루틴(200)은 사용자에 의해 명시적으로 명명되지 않은 표현에 대한 새로운 열 제목 이름을 생성한다.
일부 실시예들에서, 동작 루틴(200)이 블록(245)에서 설명된 바와 같이 데이터를 획득하고 있을 때, 동작 루틴(200)은 데이터 태그에 대한 열을 디스플레이하고 데이터 값들이 수신될 때 이들을 채울 수 있다. 일부 실시예들에서, 연산 루틴(200)은 각각의 진술 또는 표현(예를 들어, 멀티 라인 편집기의 각각의 라인)에서 각각의 계산 또는 새롭게 도입된 데이터 태그에 대한 열을 디스플레이하여, 투명성 및 이해를 제공하는데(그리고 디버깅을 보조함), 이는 중간 단계들 모두가 가시적이기 때문이다. 일부 실시예들에서, 연산 루틴(200)은 각각의 진술 또는 표현에 대해 하나의 열을 디스플레이하고, 디폴트로 중간 계산들을 숨긴다. 사용자가 표현을 편집하거나 삭제할 때, 동작 루틴(200)은 상응하게 입력에 더 이상 포함되지 않는 데이터 태그 및 데이터 값들을 변경 또는 제거한다. 다양한 실시예들에서, 동작 루틴(200)은, 프로세싱 및 렌더링 시간을 최소화하고 이에 따라 인터페이스의 응답성을 최대화하기 위해, 새로운 또는 변경된 요소들을 이전 결과들과 조합함으로써 결과 디스플레이를 점진적으로 업데이트한다. 일부 실시예들에서, 동작 루틴(200)은 블록(245)에서 설명된 바와 같이 데이터를 획득하고, 사용자에게 디스플레이하기에 충분한 데이터가 수신된 경우에만 결과들을 디스플레이한다. 예를 들어, 결과들이 획득되고 있는 동안 그리드 뷰 디스플레이에서 대부분 비어 있는 열 위에 제목을 디스플레이하기 보다는, 동작 루틴(200)은, 디스플레이를 업데이트하기 전에 결과들(예를 들어, 결과 값들 또는 초기에 사용자에게 가시적일 그러한 결과 값들 중 큰 부분 또는 전부)을 어셈블(assemble)할 수 있다. 값들이 로딩됨에 따라 구분적이기보다는 이들이 준비될 때 완전한 또는 대부분 경쟁적인 결과들을 디스플레이에 한번 추가하는 것은, 동작 루틴(200)이 즉각적인 결과들을 수신하는 사용자의 감각을 개선하는 방식으로 결과들을 제시하는 것을 도울 수 있다. 일반적으로, 사용자가 표현 또는 입력 라인을 완성한 후 수 초 내에 제시된 결과들은 "즉각적인" 것으로 인지된다. 사용자는, 이후 인터페이스가 결과들을 제시할 때 즉각적인 응답성을 제공하는지 여부를 판단할 때, 예를 들어, 복잡한 데이터 세트의 초기 로딩에 대한 시동 지연을 줄일 수 있다.
블록(275)에서, 입력이 파싱 및 해석된 후에, 동작 루틴(200)은 식별자들의 선택된 유니버스 및 활성 필터 기준들에 대응하는 디스플레이된 식별자들을 필터링한다. 예를 들어, 그리드 뷰 실시예에서, 신속한 스크리닝 시스템이 데이터 태그와 연관된 데이터 값들을 필터링하는 표현을 해석할 때, 동작 루틴(200)은 어떤 식별자들이 필터링 기준들과 매칭하는지를 결정하고, 매칭되는 식별자들 및 매칭되는 식별자들과 연관된 데이터 값들만을 디스플레이한다. 일부 실시예들에서, 동작 루틴(200)은 각각의 입력 라인 또는 표현의 입력을 이용하여 결과 세트를 계속해서 구축한다. 일부 실시예들에서, 결과 데이터가 획득됨에 따라, 동작 루틴(200)은 결과들을 디스플레이하기 위해(예를 들어, 클라이언트가 전체 결과 세트의 서브세트를 실제로 디스플레이할 수 있도록 사용자에게 초기에 가시적일 데이터의 그 서브세트를 클라이언트가 요청하기 위해) 결과 세트를 데이터베이스에 삽입한다. 일부 실시예들에서, 동작 루틴(200)은 사용자와의 기존 세션으로부터의 결과들을 사용할 수 있다.
블록(285)에서, 동작 루틴(200)은 추가 입력이 예를 들어, 사용자 입력을 위한 인터페이스를 통해 수신되는지 여부를 결정한다. 일부 실시예들에서, 동작 루틴(200)은 비동기적으로 그리고 다른 블록들(예를 들어, 데이터 획득(245))이 완료될 때까지 기다리지 않고 추가 입력(이전 입력의 임의의 위치에서 이전 입력의 수정 또는 삭제를 포함함)을 프로세싱할 수 있거나, 또는 가장 최근에 요청된 데이터의 신속한 디스플레이를 보장하기 위해 새로운 또는 변경된 입력에 응답하도록 이전 입력의 프로세싱을 취소할 수 있다. 즉, 동작 루틴은 추가 입력이 임의의 시간에 수신되는지 여부를 결정할 수 있다. 추가 입력이 수신되면, 동작 루틴(200)은 존재하는 경우 다음 입력 심볼을 프로세싱하기 위해 입력 파싱 블록(225)으로 루프백한다.
동작 루틴(200)은 종료 블록(299)에서 종료된다.
도 3a 및 도 3b는 일 실시예에 따른 멀티 라인 편집기 내의 개정을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스(300)를 예시한다.
도 3a에서, 멀티 라인 편집기(301)의 라인 1(310)은 "$UnitedStatesSmallAndMidCap" 식별자들의 유니버스, 즉, 중소형 자본으로 분류된 미국 주식들을 특정하고, 라인 2(320)는 "회사 이름"에 대한 데이터 태그이다. 이에 따라, 그리드 뷰(302)에서, 제1 열(315)은 지정된 유니버스의 주식들에 대한 주식 시세표 심볼들(또는 예를 들어, 적절한 식별자들로서의 고유한 보안 ID들)을 디스플레이하고, 제2 열(325)은 각각의 식별자에 대한 연관된 회사 이름을 디스플레이한다. 예시된 예는 미국 주식에 초점이 맞춰지지만, 대신에 국제 증권들이 선택될 수 있다.
도 3b에서, 라인 1(312)은 상이하며: 이는 이제 "$UnitedStatesLargeCap" 식별자들의 유니버스, 즉, 대형 자본으로 분류된 미국 주식들을 특정한다. 라인 2(320)는 변경되지 않으며, "회사 이름"에 대한 데이터 태그이다. 그리드 뷰(302)에서, 개정된 제1 열(317)은 지정된 유니버스의 주식들에 대한 (식별자들 대신에) 주식 시세표 심볼들의 새로운 세트를 디스플레이하고, 제2 열(327)은 각각의 식별자에 대한 연관된 회사 이름을 디스플레이한다. 이러한 예에서, 신속한 스크리닝 시스템은, 입력이 라인 2(320) 상에서 입력되고 프로세싱된 후에도 라인 1(310-312) 상에서 입력의 개정을 수용한다. 신속한 스크리닝 시스템은, 사용자가 입력의 종료로부터 다시 변화까지 삭제하거나 아니면 처음부터 다시 시작할 것을 요구하지 않고, 그러한 변화를 끊김없이 프로세싱한다 - 고려 중인 식별자들의 유니버스를 완전히 대체한다 -. 일부 실시예들에서, 신속한 스크리닝 시스템은 사용자가 (예를 들어, 실행취소 스택을 통해, 또는 Control-z와 같은 키보드 스트로크를 이용하여) 변경을 실행취소할 수 있게 하고, 결과들을 캐싱함으로써, 사용자가 동적 결과들 사이에서 빠르게 앞뒤로 플립할 수 있게 한다. 유연하고 자유롭게 편집가능한 멀티 라인 입력을 제공하고 변화하는 사용자 입력에 응답하여 업데이트들을 계속적으로 리프레시함으로써, 개시된 신속한 스크리닝 시스템은 사용자들이 이전에는 가능하지 않았던 방식으로, 원하는 전략을 식별하기 위한 대안들을 강력하고 신속하게 탐색할 수 있게 한다.
도 4는 일 실시예에 따른 주식들의 맞춤 유니버스를 생성하기 위한 대화(400)를 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다. 사용자는 고려 중인 식별자들의 시작 유니버스에 대한 맞춤 기준들을 생성하기를 원할 수 있다. 예를 들어, 부동산 중개사는 주택의 유형 또는 위치(예를 들어, 도심의 콘도미니엄 유닛들 또는 교외 단독 주택들)에서 전문화될 수 있거나, 또는 투자가는 산업 카테고리 또는 회사 규모에 집중할 수 있다. 다양한 실시예들에서, 신속한 스크리닝 시스템은 빈번한 사용에 기초하여 최적화될 수 있는 다양한 기준들을 사용하여 새로운 또는 맞춤 유니버스를 정의하기 위한 편리한 인터페이스를 제공한다.
예시된 예에서, 대화(400)는, 예를 들어, 특정된 국가, 시장 자본 범위, 유동성 최소치, 또는 글로벌 산업 분류 표준(GICS®) 산업 카테고리와 같은 선택된 양태들(420)을 갖는 주식들의 맞춤 유니버스에 이름(410)을 부여하도록 사용자에게 촉구한다. 일부 실시예들에서, 이용가능한 양태들(420)은 인자들의 조합들, 예를 들어, 국가들의 세트를 포함할 수 있다. 일부 실시예들에서, 맞춤 유니버스는 선택된 회사들로 구성될 수 있다. 그러한 유니버스는, 이름들을 룩업하거나, 식별자들의 리스트, 예를 들어, 이름들을 포트폴리오에 로딩함으로써 생성될 수 있다. 이 예에서, 대화(400)는 또한 사용자가 예컨대, S&P 500에 대해 벤치마킹할 인덱스를 선택할 수 있게 한다. 식별자들의 유니버스를 정의하는 선택들을 수신한 후, 대화(400)는 사용자가 "유니버스 생성"(430)을 선택하게 하고, 이어서 선택된 이름으로 맞춤 유니버스를 참조할 수 있게 한다.
일부 실시예들에서, 신속한 스크리닝 시스템은 생성된 유니버스가 사용자들 사이의 협력을 위해 예를 들어, 공유 오피스 환경에서 다른 사람들과 공유될 수 있게 한다. 유사하게, 일부 실시예들에서, 신속한 스크리닝 시스템은 맞춤 데이터 태그들, 표현들 및 전체 스크리닝 세션들이 협력적으로 공유될 수 있게 한다. 일부 실시예들에서, 식별자들의 맞춤 유니버스는 생성 후에 편집 또는 삭제될 수 있다. 일부 실시예들에서, 새로운 유니버스의 생성 시에 신속한 스크리닝 시스템 성능을 향상시키기 위해, 유니버스 생성 기준들(예를 들어, 주식들에 대한 국가, 시장 자본, 산업 등)과 관련된 데이터가 정기적으로 (예를 들어, 메모리 데이터에서) 업데이트되는 별개의 데이터베이스 스냅샷에 저장되어, 정보가 증권 정보의 데이터베이스로부터 검색될 필요 없이, 클라이언트에 신속하게 이용가능하게 된다. 일부 실시예들에서, 도메인-특정 언어 자체가 유니버스를 정의하는 데 사용될 수 있다.
도 5a는 일 실시예에 따른 도메인-특정 유연한 텍스트 매칭 및 완성 제안들을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스(500)를 예시한다. 도 2를 참조하여 위에서 논의된 바와 같이, 신속한 스크리닝 시스템은, 입력이 에러들을 포함하거나 그렇지 않으면 정확한 매칭이 아닌 경우에도 정확한 즉석 용어 매칭을 제공하기 위해 도메인-특정 용어들에 대해 입력을 유연하게 매칭할 수 있다. 예를 들어, 멀티 라인 편집기(501)에서, 라인 2 입력(520)은 "returonequit"이다. 그 입력은 "return"의 말단에서 "n"을 생략할 뿐만 아니라(또는 다른 해석에 의해, "return"에 여분의 "o"를 포함하고 단어 "on"을 완전히 생략함) "equity"의 말단에서 "y"를 생략한다. 그럼에도 불구하고, 개시된 신속한 스크리닝 시스템은 커서에 데이터 태그 제안 창(pane) 및 설명 텍스트 윈도우(521)를 디스플레이하여, 가능성이 있는 의도된 입력 데이터 태그들의 매칭 문자들을 강조한다. 멀티 라인 편집기(501)는 사용자가 불완전하고 철자가 잘못된 입력을 즉시 대체하기 위해 제공된 옵션들 중 하나를 선택할 수 있게 한다. 대조적으로, 스프레드시트 공식들과 같은 종래의 시스템들은 문자-완전 텍스트(character-perfect text) 및 직관적이지 않은 셀 번호 상호 참조들을 요구했으며, 이는 인쇄상의 에러가 망칠 것이고, Excel® 스프레드시트와 같은 범용 도구들은 도메인-특정인 용어들의 의미론적 에러 처리 및 완성을 제공할 수 없다. 유연한 텍스트 매칭 및 도메인-특정 완성 제안들을 제공함으로써, 신속한 스크리닝 시스템은 사용자들이 이전에 가능했던 것보다 더 쉽고 빠르게 스크리닝할 수 있게 한다.
도 5b는 일 실시예에 따른 데이터 태그 탐색을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스(550)를 예시한다. 데이터 탐색기 대화(551)는 사용자가 즉각적인 사용을 위해 의도된 입력 데이터 태그를 발견할 수 있게 한다. 다양한 도메인들에서, 이용가능한 데이터 태그들의 수는, 무제한적 데이터 소스들에 걸쳐, 수만 개 또는 수십만 개의 증권들에 걸쳐, 수천 개 또는 수만 개에 이르기까지 사용자에게 압도적일 수 있다. 예시적인 데이터 탐색기 대화(551)는 회사 이름(555), 검색 텍스트(560) 및 데이터 패키지 또는 데이터 제공자(565)에 대한 필드들을 제공한다. 예시된 예에서, 사용자는, S&P Global - Fundamental Data라는 명칭의 데이터 패키지로부터 입수가능한, Microsoft Corporation에 대한 "EBIT(earnings before interest)"라는 용어와 관련된 데이터 태그들을 검색한다. 일부 실시예들에서, 사용자-입력 텍스트는 신속한 발견을 돕기 위해 자동 완성 특징으로 보조된다. 매칭하는 데이터 태그들이 결과 박스(570)에 나열되며, 이는 각각의 데이터 태그에 대한 이름, 설명 및 (현재 분기 및 후행 12 개월에 대한) 값들을 도시한다. 다른 실시예들은 다른 특성들 또는 심지어 전체 예시적인 스니펫(snippet)들을 포함한다. 일부 실시예들에서, 검색 텍스트는 값들(예를 들어, 특정 연 성장률)을 포함하는 데이터 태그에 관한 정보 중 임의의 것을 매칭할 수 있다. 편리한 사용자 인터페이스 요소들은, 사용자가, 결과 박스(570) 내의 셀을 더블-클릭(575)하여 이를 고정시키고, 버튼(580)을 사용하여 선택된 데이터 태그 또는 태그들을 복사함으로써, 원하는 데이터 태그를 선택할 수 있게 한다. 예를 들어, 8.163900 셀(571) 상의 더블 클릭은 데이터 태그 "Ebit10YrCagrPct"를 고정할 것이고, 8.566600 셀(572) 상의 더블 클릭이 예시된 예에서 데이터 태그 "Ebit10YrCagrPctTtm"을 고정할 것이고, 데이터 태그들 중 어느 하나 또는 둘 모두는 쉽게 표현으로의 붙여넣기를 위해 클립보드에 복사될 수 있다. 이러한 도메인-특정 데이터 탐색기 도구를 제공함으로써, 신속한 스크리닝 시스템은 사용자들이 관련 데이터 태그들을 발견하고, 이용가능한 데이터 태그들을 탐색하며, 이전에 가능했던 것보다 더 쉽고, 신속하게, 그리고 효과적으로 데이터를 스크리닝할 수 있게 한다.
도 6a 및 도 6b는 일 실시예에 따른 기준에 따른 필터링을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스(600A-600B)를 예시한다. 도 1 및 도 2 둘 모두를 참조하여 위에서 논의된 바와 같이, 신속한 스크리닝 시스템은 사용자가 표현적 매칭 기준에 따라 식별자들의 세트를 필터링, 제한, 감소 또는 좁히는 것을 가능하게 한다. 예시된 예에서, 사용자 인터페이스(600A)는 그리드 뷰(602)의 열(615)에서 미국 대형주들을 디스플레이 한다. 라인 2 상의 멀티 라인 편집기(601) 입력(620)은 후행 12 개월 동안의 각각의 회사의 자기 자본 이익률 퍼센티지에 대한 데이터 태그인 "ReturnOnEquityPctTtm"이다. "Return On Equity Pct Ttm" 에 대한 값들은 그리드 뷰(602)의 열(625)에 디스플레이된다.
사용자 인터페이스(600B)를 참조하면, 라인 2의 멀티 라인 편집기(601) 입력(622)은 이제 라인의 시작에 물결표("~") 필터링 연산자를 추가하고 뒤에 데이터 태그 후에 비교 조건 "> 40"을 추가하여 "~ ReturnOnEquityPctTtm > 40"이다. 따라서, 그리드 뷰(602)는 더 이상 모든 미국 대형주들의 특정된 유니버스 내의 모든 식별자들(또는 그들의 주식 시세표 심볼들)을 디스플레이하지 않는다. 대신에, 후행 12 개월에 대한 회사의 자기 자본 이익률 퍼센티지가 40보다 큰 회사들의 열(617)의 주식 시세표만이 열(627)의 업데이트된 그리드 뷰(602)에 포함된다. 열(615)에 디스플레이된 모든 식별자들에 대한 ReturnOnEquityPctTtm에 대한 데이터가 시스템에 의해 이미 로딩(그리고 열(625)에 디스플레이)되기 때문에, 이러한 제한 동작은 매우 빠르게 달성될 수 있다.
일부 실시예들에서, (예를 들어, 사용자-가독성을 향상시키기 위해) "~"(또는 "filter", "limit", "only" 등)과 같은 표현 연산자가 요구된다. 일부 실시예들에서, 표현 연산자가 허용될 수 있지만, 비교 연산자의 존재로부터 필터 동작이 추론될 수 있다. 필터링이 추론되는 경우 또는 모든 필터링 동작들에 대해, 신속한 스크리닝 시스템은 (예를 들어, 진술을 장식하거나 텍스트 포맷, 배경 컬러 등을 적용함으로써; 그리고/또는 사용자에 의해 생략되거나 시스템에 의해 추론되는 경우 명시적인 연산자를 삽입함으로써) 라인 또는 진술을 구별할 수 있다.
일부 실시예들에서, 신속한 스크리닝 시스템은 추가적인 필터링-관련된 연산자들, 예를 들어, 'OR' 연산자, 'NOT' 연산자, 및/또는 열거(Y에 있는 모든 X) 등을 제공한다.
도 7은 일 실시예에 따른 맞춤 변수 이름에 할당된 표현을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스(700)를 예시한다. 도 1을 참조하여 위에서 논의한 바와 같이, 신속한 스크리닝 시스템은 사용자가 새로운 맞춤 변수 이름 또는 데이터 태그를 생성할 수 있게 한다. 예를 들어, 신속한 스크리닝 시스템은, 임의의 데이터 태그에 새로운 에일리어스(alias)가 부여될 수 있게 하고, 임의의 표현(예를 들어, 데이터 태그와 연관된 데이터 값들을 수정하는 것 또는 다수의 데이터 값들을 조합하는 것)이 유용하게 라벨링되고 다시 편리하게 참조될 수 있도록 명명될 수 있게 한다. 이름은, 예를 들어, 코드 스니펫 또는 실제 변수에 적용될 수 있다(따라서, 이는 재계산될 필요가 없다). 따라서, 도 4를 참조하여 전술된 바와 같이 맞춤 유니버스들을 정의하는 능력과 관련하여, 사용자는 그들 자신의 요구들을 충족시키기 위해 도메인-특정 언어를 연장하여, 예를 들어, 유니버스들, 데이터 태그들, 데이터 소스들 및/또는 변환들을 정의할 수 있다.
멀티 라인 편집기(701)의 예시된 진술(740)은 2개의 데이터 태그들, "ReturnOnEquityPct" 및 "ReturnOnAssets"의 합을 맞춤 명명된 변수 또는 데이터 태그 "MyCustomIndex"에 할당한다. 따라서, 열(745)은, "My Custom Index"라는 제목 아래에, 그리드 뷰(702)에 디스플레이된 각각의 주식 시세표 심볼에 대해, 회사에 대한 2개의 데이터 값들 - 자기 자본 이익률 퍼센티지 및 자산수익률 - 의 합산을 디스플레이한다. 일부 실시예들에서, 신속한 스크리닝 시스템은 사용자 가독성을 위해 데이터 태그들을 명명하기 위한 관례로서 PascalCase(여기서 복합 이름의 모든 단어들은 대문자임)를 사용하고, 결과 디스플레이 인터페이스(예를 들어, 그리드 뷰(702)의 제목 라인)는 증가된 가독성을 제공하기 위해 데이터 태그의 적절한 위치들에(예를 들어, 소문자와 다음의 대문자 사이에) 공간을 추가한다. 공백들이 없는 데이터 태그들에서 복합 이름들에 대한 다른 동등한 관례들은, (첫 번째 이후의 모든 단어들이 대문자로 표기되는) camelCase, (대시들이 단어들을 분리하는) kebab-case, 및 (언더스코어들이 단어들을 분리하는) snake_case를 포함한다. 일부 실시예들에서, 신속한 스크리닝 시스템은, 변수들을 명명하기 위해 점 표기(dot notation), 예를 들어, "ReturnOnEquity.TTM"을 사용하거나 또는 괄호들을 이용한다. 일부 실시예들에서, 데이터 태그들에 공백들이 허용되거나, 시스템이 명확한 매칭 데이터 태그를 식별하기 위해(또는 입력이 도메인-특정 언어 및 연산자들의 맥락에서 모호하다면, 가능성이 있는 옵션들을 제안하기 위해) 공백들을 갖는 입력을 파싱한다. 변수 이름을 디스플레이 출력과 링크시킴으로써, 이 기술은 출력의 제목이 정확하게 보이는지 여부를 비-프로그래머들이 인식할 수 있기 때문에 이들이 유지보수가능한 "코드"를 자연스럽게 작성하도록 권장한다.
일부 실시예들에서, 시스템은 서면 텍스트 또는 음성 인식 인터페이스와 같은 자연어 사용자 인터페이스를 포함한다. 인간 언어가 일관되게 신뢰할 수 있는 결과들을 획득하기에 충분히 제한되지 않기 때문에 자연어 프로세싱(NLP)은 종종 실패한다. 개시된 기술이 중간 계층으로서 도메인-특정 언어를 제공하기 때문에, 결과들이 크게 개선될 수 있다. 예를 들어, "find me all companies that mention China tariffs in 10K filings"라는 자연어 요청은 도메인-특정 언어로 표현들을 생성하기 위해 언어 모델(예를 들어, GPT-3)에 의해 프로세싱될 수 있다. 도메인-특정 언어가 의미론적으로 의미가 있기 때문에, 인간은 출력을 이해하고, 표현이 자연어 진술이 요청한 것을 수행하고 있음을 검증하고, 원하는 경우 이를 편집할 수 있다. 도메인-특정 언어의 표현들은 짧은 공간 내에서 매우 표현적이기 때문에, 이들은 사용자에 의해 쉽게 검증가능하여, 더 의미 있고 쉽게 신뢰할 수 있는 상호작용 모드를 제공한다.
변수를 선언하고 이어서 변수에 값을 할당하는 대부분의 프로그래밍 언어들과 대조적으로, 예시된 실시예들에서, 도메인-특정 언어는 결과 후에 동작하는 할당 연산자를 포함하여, 사용자들이 다양한 표현들을 탐색하고(사용자가 이들을 타이핑하거나 개정하거나 대체할 때 즉시 해석됨) 이어서 사용자 명명 변수에 결과를 할당(이는 즉시 디스플레이됨)하도록 심리학적으로 장려한다. 이는 또한, 표현이 더 빨리 "완료"되는 것을 보장하는데, 예를 들어, 공식 또는 진술 "A = awesome(param)"은 진술의 맨 마지막까지 완전하지 않지만, 표현 "param | awesome => A"는 그 구성 전반에 걸쳐 완성된다.
도 8a 내지 도 8c는 일 실시예에 따른 맞춤 변수 이름에 대한 다수의 참조들의 동시적인 개명을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스(800A, 800B, 800C)를 예시한다. 예시된 예에서, 멀티 라인 편집기(801)의 라인 3의 입력(830)에서, 사용자는 "StandrRoa"로 명명된 맞춤 변수 또는 데이터 태그를 정의하였다. 또한, 멀티 라인 편집기(801)의 라인 4의 입력(840)에서, 사용자는 맞춤 "StandrRoa" 변수 또는 데이터 태그를 참조하는 표현을 입력하였다. 도 8a에서, 신속한 스크리닝 시스템은 라인 4의 커서에 데이터 태그 제안 창 및 설명 텍스트 윈도우(841)를 디스플레이하여, 인식된 사용자-정의 변수로서 "StandrRoa"를 강조한다. 도 8b에서, 멀티 라인 편집기(801)의 콘텍스트 메뉴(842)의 강조된 선택은 사용자에게 맞춤 변수 이름의 "Change All Occurrences" 능력을 제공한다. 도 8c에서, 멀티 라인 편집기(801)는 사용자가 다수의 위치들에서 동시에 "StandrRoa"를 "StandardRoa"로 변경할 수 있게 한다. 따라서, 신속한 스크리닝 시스템은 변수 참조들 중 어느 것도 깨지 않고 변수 이름에 대한 일관된 전역적 변화를 가능하게 한다. 대조적으로, 종래의 도메인-내 검색 시스템들은 텍스트 입력을 리팩토링(refactor)하는 어떠한 능력도 제공하지 않는다.
도 9는 일 실시예에 따른 도메인-특정 신택스 에러 처리를 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스(900)를 예시한다. 도 2 및 도 5 둘 모두를 참조하여 위에서 논의된 바와 같이, 신속한 스크리닝 시스템은, 입력을 파싱할 때, 에러 내성이 있다. 예를 들어, 입력이 불완전한 경우, 신속한 스크리닝 시스템은 도메인-특정 언어에서 의도된 매치를 추론하려고 시도하고, 예를 들어, 인식되지 않은 입력을 가장 가까운 유효 매치로 대체하거나, 또는 인식되지 않은 입력의 잠재적인 대체들 또는 완성들을 제안할 수 있다. 또한, 잘못된 형식의 입력(예를 들어, 도메인-특정 언어의 임의의 연산자 또는 데이터 태그와 매칭하지 않는 심볼과 같은 신택스 에러)은 신속한 스크리닝 시스템과 충돌하지 않거나 프로세싱을 중단시키지 않을 것이다. 다양한 실시예들에서, 신속한 스크리닝 시스템은 입력의 나머지(에러의 선행 및 후속 모두)를 계속 파싱하고 파서-인식된 심볼들을 프로세싱하며, 이전에 성공한 결과들을 계속 디스플레이할 수 있다.
예시된 예(900)에서, 사용자는, 예를 들어, 유효 데이터 태그 "ReturnOnEquityPct"를 이전에 입력한 후, 멀티 라인 편집기(901)의 라인 2에서 인쇄상의 에러 또는 불완전한 입력(920)을 입력하였다. 신속한 스크리닝 시스템은 커서에 데이터 태그 제안 창(pane) 및 설명 텍스트 윈도우(921)를 디스플레이하여, 가능성이 있는 의도된 입력 데이터 태그들의 매칭 문자들을 강조한다. 동시에, 멀티 라인 편집기(901)는 "Error: invalid syntax at line 2"(또는 예를 들어, "Error: data tag does not exist at line 2")를 나타내는 텍스트 경고(922) 및 마진 텍스트 장식(923) 뿐만 아니라, 인식되지 않고 프로세싱되지 않은 입력(920)의 위치를 강조하기 위해 적색의 구불구불한 밑줄을 디스플레이한다. 일부 실시예들에서, 에러 처리는 에러 메시지가 도메인 특정적이도록 도메인에 특정된 정보를 적용하는 것을 포함한다.
한편, 그리드 뷰(902)의 나머지는 영향을 받지 않으며; 미국 대형주들의 유니버스(915)는 멀티 라인 편집기(901)의 나머지에서 데이터 태그들과 함께 디스플레이된 상태로 유지되고, 식별자들에 대한 대응하는 데이터 값들이 디스플레이된다. 일부 실시예들에서, 이전에 디스플레이된 데이터(예를 들어, "Return On Equity Pct" 열(925))는, 신속한 스크리닝 시스템이 프로세싱할 수 있는 입력이 그 대신에 입력될 때까지 도시된 상태로 유지되고; 일부 실시예들에서, 신속한 스크리닝 시스템이 프로세싱할 수 없는 심볼에 대한 데이터는 디스플레이되지 않는다.
도 10은 일 실시예에 따른 변환 함수들을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스(1000)를 예시한다. 예시된 예에서, 멀티 라인 편집기(1001)의 라인 2의 입력(1020) 내의 파이프 기호("|")는 변환 함수 또는 연산을 의미한다. 이 예에서, 5개의 변환 함수들이 연산자 제안 창 및 설명 텍스트 윈도우(1021)에 나열된다:
평균 (숫자들의 어레이에 적용되어, 예를 들어, 산술 평균을 생성함);
랭크 (각각의 식별자에 대한 데이터 값을 비교하고 이들을 높음-대-낮음 또는 낮음-대-높음으로 랭크함);
5분위수 (각각의 식별자에 대한 데이터 값을 비교하고, 이들을 각각 20%인 5개의 버킷들로 정렬하고, 5분위수들을 생성함);
표준화 (각각의 식별자에 대한 데이터 값을 표준화된 정규 분포에 대해 비교하고, z-스코어들을 생성함); 및
추세 안정성 (숫자들의 어레이에 적용될 때, 추세가 포지티브인지, 네거티브인지, 또는 어느 쪽도 아닌지를 나타내는 숫자를 생성함).
다양한 실시예들에서, 신속한 스크리닝 시스템은 추가적인 또는 상이한 변환 함수들(예를 들어, 중앙값 함수, 10분위수 함수 등)을 제공할 수 있다. 예를 들어, 자연어 프로세싱 변환 함수들의 세트는 사용자가 "NewsRecent["lawsuit"] | Sentiment => LawsuitNewsSentiment"와 같은 표현을 입력하여 법적 절차에 관여한 회사에 관한 뉴스 커버리지의 내용을 측정할 수 있게 한다.
도 11은 일 실시예에 따른 어레이 데이터의 자동 그래프 디스플레이를 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스(1100)를 예시한다. 예시된 예에서, 멀티 라인 편집기(1101)의 라인 2 상의 입력(1120)은 "ReturnOnEquityPct[-11q:0q]"이며, 데이터 태그는 지난 12개의 분기들 각각에 대한(즉, 11개의 분기들 전으로부터 현재까지의) 각각의 회사의 자기 자본 이익률 퍼센티지를 표현한다. 일부 실시예들에서, 값들의 어레이와 연관된 데이터 태그에 관한 표현들은 어레이 데이터의 선택된 서브세트를 디스플레이하는 것을 제외하고는 명시적인 어레이 표기를 요구하지 않는다. 예를 들어, 어레이 값들을 표현하는 2개의 데이터 태그들이 함께 추가되거나 아니면 표현에서 조작될 수 있다. 일부 실시예들에서, "ReturnOnEquityPct[12q]"와 같은 대안 또는 약식 표기는 현재까지의 기간들의 수(예를 들어, 년들, 분기들, 월들, 주들 또는 일들)를 콤팩트하게 나타낼 수 있다. 일부 실시예들에서, 시스템은 어레이 데이터를 자동으로 정렬한다. 예를 들어, 시계열 A를 참조하는 데이터 태그가 시계열 B를 참조하는 데이터 태그로 분할되면, 시스템은 포워드-필링(forward-filling)에 의해 현재 값들을 자동으로 정렬할 수 있다.
이 예에서, 개시된 신속한 스크리닝 시스템은 (주식 시세표 심볼이 실제로 디스플레이된) 각각의 식별자에 대해 하나씩 어레이 데이터를 사용자-친화적 콤팩트 그래프들(1125)로서 디스플레이한다. 신속한 스크리닝 시스템에 의해 생성된 콤팩트한 그래프들은 결과 어레이 내의 각각의 데이터 값에 대한 수평 축 위 또는 아래의 음영을 포함한다. 따라서, 신속한 스크리닝 시스템은 포지티브 및 네거티브 값들을 시각적으로 명백하게 하고, 사용자가 시간의 경과에 따른 추세들을 식별하는 것을 용이하게 한다. 또한, 콤팩트한 그래프들(1125) 중 하나에서의 사용자 액션, 예컨대 그래프 또는 그래프 상의 데이터 포인트 위에서 호버링하거나, 우측 클릭하는 것은 식별자에 대한 결과 어레이에서 기본 데이터 값들(1127) 중 하나 이상을 드러낼 수 있다. 일부 실시예들에서, 콤팩트한 그래프들(1125)은 경계들 또는 x-축 라벨들(예를 들어, 날짜들)과 같은 주요 정보를 포함하거나 디스플레이한다.
일부 실시예들에서, 신속한 스크리닝 시스템은 사용자-정의 기능들 및 데이터 태그들에 대해 유사한 기능성 또는 확장성을 또한 제공한다. 예를 들어, 데이터 태그들 또는 기능들은, 프로그래머가 (예를 들어, 복잡한 데이터의 맞춤 시각화를 위해) 데이터 태그 또는 기능의 기초가 되는 맞춤 코드를 작성하고 그 데이터 태그 또는 기능을 사용하는 비-프로그래머들에게 이용가능하게 할 수 있도록 확장가능할 수 있다. 예를 들어, 일부 실시예들에서, "Score"로 끝나도록 맞춤 변수 또는 데이터 태그를 명명하는 것은, 4분위수, 10분위수, 랭크 등에 따라 연관된 데이터 값들을 자동으로 포맷하고 컬러 코딩할 수 있다. 유사하게, 일부 실시예들에서, "Trend"로 끝나도록 맞춤 변수 또는 데이터 태그를 명명하는 것은 그래프에 임의의 연관된 어레이 데이터를 디스플레이하도록 시스템을 자동으로 프롬프트할 수 있고/있거나, "Pie"로 끝나도록 맞춤 변수 또는 데이터 태그를 명명하는 것은 파이 차트 내의 임의의 연관된 어레이 데이터를 디스플레이하도록 시스템을 자동으로 프롬프트할 수 있다. 일부 실시예들에서, 시스템은 임의의 어레이 데이터를 그래프화하도록 구성될 수 있다. 다양한 실시예들에서, 포맷 및/또는 컬러-코딩 결과들은 임의의 인터페이스를 통해 심지어 대화식으로 달성될 수 있다. 예를 들어, 일부 실시예들에서, 열들은 부제목들의 세트 위에 그룹 제목을 보여주기 위해 디스플레이에서 그룹화될 수 있다.
도 12는 일 실시예에 따른 10-K 파일링들에 대한 링크들의 자동 디스플레이를 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스(1200)를 예시한다.
도 11과 유사하게, 신속한 스크리닝 시스템 인터페이스 그리드 뷰(1202)는 멀티 라인 편집기(1201)의 라인 2의 입력(1220)의 데이터 태그에 대응하는 데이터 값들의 어레이들을 표현하는 콤팩트한 그래프들을 디스플레이하는 열(1225)을 포함한다. 이 경우, 입력(1220)은 "ReturnOnEquityPct[-3q:0q]"이며, 데이터 태그는 지난 4개의 분기들 각각에 대한(즉, 3개의 분기들 전으로부터 현재까지의) 각각의 회사의 자기 자본 이익률 퍼센티지를 표현한다. 동일한 입력(1220)은 어레이 데이터 값들의 "추세 안정성" 변환을 생성하여, 각각의 경우에 추세의 수치 표시자(1245)를 제공한다. 예시된 바와 같이, 라인 4의 입력(1240)이, 디스플레이된 식별자들을, 지난 4 분기들에 걸친 자기 자본 이익률 추세가 강하게 포지티브(0.8 초과)인 식별자들로 제한하기 때문에, 추세들은 모두 상향이다. 라인 3은 비어 있으며, 이는 예시된 실시예에서 불연속 입력을 끊김없이 해석하는 멀티 라인 편집기(1201)의 능력을 예시한다.
포지티브 안정성 추세를 식별하기 위해 개시된 기술을 적용하는 다른 방법은 2개의 시간 기간들에 걸쳐 안정성 추세들을 비교하는 것이다. 예를 들어, 다음의 표현들은 1년 전부터 4개월 전까지의 자기 자본 이익률 퍼센티지에 대한 추세 안정성을 표현하는 "RoeStabilityPrevious"로 명명된 맞춤 데이터 태그, 및 4개월 전부터 현재까지 자기 자본 이익률 퍼센티지에 대한 추세 안정성을 표현하는 "RoeStabilityRecent"로 명명된 맞춤 데이터 태그를 확립한다:
(ReturnOnEquityPct[-11q:-4q]) | TrendStability => RoeStabilityPrevious
(ReturnOnEquityPct[-3q:0q]) | TrendStability => RoeStabilityRecent
하나의 추세를 다른 추세로부터 감산함으로써, 차이가 결정되고, 예를 들어 다음과 같이 필터링될 수 있다:
(RoeStabilityRecent - RoeStabilityPrevious) => RoeTrendDifference
~ RoeTrendDifference > 1
또는, 대안으로, 예를 들어, ROE가 최근에 위로 급등한 회사들을 식별하기 위해, 이전 및 현재 추세들의 절대 값들이 필터링될 수 있다:
~ RoeStabilityRecent > 0.6
~ RoeStabilityPrevious < 0.6
멀티 라인 편집기(1201)의 라인 5의 입력(1250)은 그리드 뷰(1202)에 데이터 태그 "Filings10k"를 추가하여, 미국 증권 거래 위원회(SEC)에 각각의 회사의 최신 Form 10-K 파일링에 관한 정보를 디스플레이한다. 예시된 실시예에서, 10-K 파일링 정보는 가장 최근에 이용가능한 파일링의 날짜, 및 SEC에서의 온라인 파일링의 사본에 대한 하이퍼링크를 포함하여, 스크리너가 문서를 직접 판독 또는 다운로드할 수 있다. 따라서, 신속한 스크리닝 시스템은, 이전에 가능했던 것보다 더 많은 양의 유용한 정보를 스크리너에게 제시하기 위해, 결과가 사용자-액세스가능한 포맷으로 디스플레이될 수 있도록, 복잡한 데이터 유형들, 예를 들어, 데이터 및 메타데이터를, JSON 포맷으로 프로세싱하도록 구성될 수 있다.
멀티 라인 편집기(1201)의 라인 6의 입력(1260)은 그리드 뷰(1202)에 데이터 태그 "GicsSector"를 추가하여, 디스플레이된 식별자들(주식 시세표 심볼들) 각각에 대한 GICS 섹터를 디스플레이한다.
도 13은 일 실시예에 따른 특허들을 보유하는 회사들의 선택적 디스플레이를 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스(1300)를 예시한다. 멀티 라인 편집기(1301)에서, 라인 3의 입력(1330) 및 라인 4의 입력(1340)은 데이터 태그 "PatentsIssued"를 사용하여, 하나 이상의 특허들을 부여받은 회사들을 식별한다. 신속한 스크리닝 시스템은, 예를 들어, 발행된 특허들의 데이터베이스를 검색하고, 소유자 또는 양수인이 회사의 이름과 매칭하는 특허들을 식별할 수 있다(일부 구현들에서, 정확하지 않은 매치들 및/또는 관련 엔티티들을 수용함). 예시된 예에서, 입력(1330)에서, "PatentsIssued["autonomous vehicle", "autonomous driving"]"이라는 표현은 문구 "autonomous vehicle", 또는 문구 "autonomous driving"(데이터 태그 AutonomousDrivingPatents가 할당됨)을 포함하는 하나 이상의 특허들이 부여된 회사들을 식별하도록 해석된다. 유사하게, 입력(1340)에서 "PatentsIssued["electric vehicle"]"이라는 표현은 신속한 스크리닝 시스템에 의해 해석되어, "electric vehicle"(데이터 태그 ElectricVehiclePatents가 할당됨)이라는 문구를 포함하는 하나 이상의 특허들을 부여받은 회사들을 식별한다.
그리드 뷰(1302)에서, 열(1335)은 자율 주행 특허들을 디스플레이하고, 열(1345)은 전기 차량 특허들을 디스플레이하여, 특허 명칭들 및 발행 날짜들을 도시하고 특허 문헌들에 대한 링크들을 제공한다. 일부 실시예들에서, 신속한 스크리닝 시스템은 검색에 의해 발견된 특허들(또는 현재 유효한 특허들)총 수를 제공한다. 예를 들어, 전기 차량들에 대한 퓨어-플레이(pure-play) 특허 스코어는 "PatentsIssuedCount["Electric Vehicles"] / PatentsIssuedCount" 또는 유사한 표현으로서 표현될 수 있다. 예시된 예에서, 멀티 라인 편집기(1301)의 라인 7의 입력(1370)은 "~ AutonomousDribingPatents > 0"이라는 표현을 갖는 필터링을 도시하고, 라인 8의 입력(1380)은 "~ ElectricVehiclePatents > 0"이라는 표현을 사용하여 필터링하여, (회사 시세표 열(1315)에 나열된 바와 같이) 그리드 뷰(1302)에 포함된 회사들만이 각각의 카테고리에서 적어도 하나의 특허를 갖는 회사들이다. 즉, 디스플레이된 회사들은 자율 주행 특허들(1375) 및 전기 차량 특허들(1385) 둘 모두를 갖는다(그러나, 반드시 임의의 자율 전기 차량 특허들을 가질 필요는 없음).
다양한 실시예들에서, 신속한 스크리닝 시스템은 광범위한 데이터 소스들의 콘텐츠를 획득하고, 그에 링크하고, 이를 필터링하도록 구성될 수 있다. 예를 들어, "NewsRecent" 데이터 태그는 그리드 뷰(1202)로 하여금 다양한 뉴스 소스들로부터의 각각의 회사에 관한 최근 뉴스 헤드라인들을 디스플레이하게 할 수 있다. 도 12의 폼 10-K 링크들 및 도 13의 특허 명칭들과 같이, 주어진 식별자에 관한 각각의 뉴스 헤드라인은 전체 기사에 링크되는 한편, 유용하게는 요약 정보를 검색 결과들에 직접 제공한다. 일부 실시예들에서, 시스템은 사용자가 관심 용어를 포함하는 최근 뉴스 기사들을 필터링할 수 있게 한다. 예를 들어, "NewsRecent["autonomous driving"]"과 같은 표현은, 사용자가 그 분야에서의 그들의 미디어 인게이지먼트와 비교하여 그 분야에서 소수의 공개된 특허들을 갖는 회사들을 식별하게 허용할 수 있거나, 그 반대의 경우도 가능하다. 이러한 방식으로, 신속한 스크리닝 시스템은, 스크리너가 회사의 기술 개발의 활성 영역들을 직접 관찰하거나 또는 관심 타겟들에 관한 뉴스를 판독하고, 그러한 타겟들에 관한 커버리지의 주관적인 인상을 획득하여, 수치 데이터 분석을 보충하거나, 또는 일부 증권들과 관련된 시장들을 움직일 수 있는 속보를 식별할 수 있게 한다.
도 14는 일 실시예에 따른 10-K 파일링들에서 발견된 텍스트에 대한 필터링을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스(1400)를 예시한다. 도 12와 유사하게, 도 14의 신속한 스크리닝 시스템은 콤팩트한 추세 그래프들 및 데이터 태그 "Filings10k"를 포함한다. 그러나, 폼 10-K 파일링들에 대한 링크들을 제공하기보다는, 도 14는 이들의 10-K 파일링들의 콘텐츠에 기초하여 식별자들을 필터링하기 위해 그 데이터 태그를 사용한다. 특히, 예시된 예에서 멀티 라인 편집기(1401)의 라인 5의 입력(1450)은 표현 "~ Filings10k contains "china tariffs""를 갖는 필터링을 도시한다. 따라서, 결과 그리드 뷰(1402) 내의 회사들(1415)의 리스트는 다수의 기준들: 이전 4개의 분기들(1420, 1425)에 걸친 ROE가 강하게 성장한(1440, 1445) 그리고 마지막 폼 10-K 파일링이 중국 및 관세(1450, 1455)를 언급한 미국 대형주 회사들(1410)에 기초하여 제한된다.
그리드 뷰(1402)에서, "파일링들 10k" 열(1455)은 단지 전체 폼 10-K 문서에 대한 링크를 제공하는 것이 아니라, 10-K로부터의 관련 매칭 텍스트를 매칭 검색 용어들이 강조된 상태로 디스플레이한다. 일부 실시예들에서, 강조된 텍스트는 소스 문서에 대한 또는 더 구체적으로는 소스 문서의 인용된 부분에 대한 링크를 제공한다.
전술된 바와 같이, 일부 실시예들에서, 'contains'와 같은 연산자는 알파벳 텍스트 없이 구현된다. 예를 들어, 브래킷 표기를 사용하여, 신택스는 도 13의 "PatentsIssued["electric vehicle"]"의 예와 유사한 등가의 예로서 "Filings10k["china tariffs"]"일 수 있다. 일부 실시예들에서, 'contains' 연산자는 변환으로서 기능하는데, 예를 들어, "Filings10k | contains "china tariffs""는 그 단계를 명시적으로 하고 결과들에 대한 필터링을 허용하며; 필터링 그 자체는 암시적일 수 있다. 폼 10-K 출원들 또는 특허들과 같은 문서들의 콘텐츠에 기초하여 식별자들을 필터링하는 능력을 제공함으로써, 개시된 신속한 스크리닝 시스템은 스크리닝에 대한 강력하고 새로운 접근법을 허용하고, 이질적인 데이터세트들에 걸쳐 합성하는 능력을 제공한다.
도 15는 일 실시예에 따른 결과들의 그룹화를 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스(1500)를 예시한다. 도 12와 유사하게, 도 15의 신속한 스크리닝 시스템은 멀티 라인 편집기(1501)의 라인 6의 입력(1560)에 데이터 태그 "GicsSector"를 포함한다. 따라서, 결과 그리드 뷰(1502)는 디스플레이된 식별자들(주식 시세표 심볼들) 각각에 대한 GICS 섹터를 디스플레이한다. 그러나, 도 15에서, "Gics Sector" 열(1565) 제목은 식별자들의 카테고리 데이터 값들에 따라 식별자들을 그룹화하는 데 사용된다.
예시된 실시예에서, "Gics Sector" 제목은 또한, 그리드 뷰(1502)의 최상부에 설정 행 그룹들로서 디스플레이된다(1506). 따라서, 그리드 뷰(1502)의 좌측은 일련의 GICS 섹터 카테고리들(1566)을 나열한다. 각각의 카테고리는, 그 섹터 내의 회사들의 식별자들을 보여주도록 확장될 수 있거나, 또는 활성 유니버스 필터링 기준들을 충족시키는, 그 섹터 내의 회사들의 수를 보여주기 위해 축소될 수 있다. 이 예에서, 미국 대형주들 중 최근의 강력한 ROE 성장의 기준은 대부분 정보 기술 주식들의 리스트를 생성하였다. 개시된 신속한 스크리닝 시스템의 이러한 인터페이스 특징들은 스크리너들이 추세들을 식별하고, 관심 타겟들을 식별하기 위한 전략들을 탐색하고, 대안적인 전략들을 시도하는 영향을 쉽게 확인하도록 허용한다.
상기 예시들 각각에서 입증된 바와 같이, 개시된 신속한 스크리닝 시스템의 유연한 커스터마이징 가능성, 사용 용이성, 신속한 피드백 및 능력은, 예를 들어, 복잡하고 표현력이 풍부한 스크리닝("지난 3년에 걸쳐 증가하고 안정적인 자기 자본 이익률(ROE)을 갖는 모든 회사들"); 고유한 관점들("그들의 마지막 10-K에서 중국 관세를 언급한 모든 회사들"); 데이터에서의 불연속들 또는 불협화들의 식별("브랜드 심리는 증가하지만 주식 가격은 변동이 없는 모든 회사들"); 집계 추세들의 발견("그들의 어닝들에서 증가하는 심리를 갖는 섹터들이 Q&A를 호출함"); 및 벤치마킹("MSFT는 우리가 구성한 모든 스크린들에 대해 어떻게 수행하는가?")을 가능하게 한다. 특히, 스크린들은 구성가능할 수 있어서, 사용자는 다른 스크린으로부터 하나의 스크린을 참조하거나 다수의 스크린들에 걸쳐 회사를 "단위 테스트"할 수 있다. 이는 관점들의 모자이크를 구성하는 것을 용이하게 한다. 본 개시내용의 시스템들 및 방법들은 이전에 이용가능하지 않았던 유연하고 구조화된 관점들을 제공한다.
도 16a 및 도 16b는 종래 기술 시스템에 대한 예시적인 공식(1600A) 및 일 실시예에 따른 개선된 사용 용이성을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템에 대한 대응하는 예시적인 표현들(1600B)을 예시한다.
도 17a 및 도 17b는 일 실시예에 따른 백테스팅을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스(1700A-1700B)를 예시한다. 도 17a에서, 멀티 라인 편집기(1701)의 콘텍스트 메뉴(1772)의 강조된 선택은 과거 시장 결과들에 대해 기준들의 세트의 성능을 "백테스트(backtest)"하는 능력을 사용자에게 제공한다.
백테스팅은 이력 데이터에 대한 모델 - 예컨대, 임의의 주어진 시간에 구매할 가치가 있는 주식들을 식별하기 위한 스크리닝 기준들의 세트 - 을 테스트하는 것을 지칭한다. 과거 데이터에 동일한 기준들을 적용함으로써, 스크리너는 상이한 주식 시세표 식별자들이 테스트되고 있는 데이터 태그 기준들을 충족했을 수 있는 다른 시간에 전략이 효과가 있었는지 여부를 결정할 수 있다. 백테스팅은, 과거 기간 동안 일관되게 사용되었다면, 기준들의 세트가 얼마나 잘 수행되었을지를 사용자가 결정할 수 있게 한다. 백테스터는 사용자의 선택된 기준들에 따라 가상 위치들을 생성하고, 시간의 경과에 따라 사용자의 전략을 실행하며, 결과들을 기록한다. 본 개시내용 이전에, 백테스팅은 전형적으로 비용이 많이 들고 느렸으며 - 몇 시간 또는 몇 주 -, 좁은 세트의 데이터로 제한되었다. 개시된 신속한 스크리닝 시스템 기술은 백테스트 결과들(1700B)을 생성하는 데 대략 몇분의 1초에서 5초 내지 10초가 걸리며, 별개의 도구의 상당한 구성 또는 사용을 요구하지 않고 도메인-특정 언어의 전체 어휘를 사용하여 표현된 전략들을 백테스트할 수 있다. 백테스팅을 위한 예시적인 동시적 서버 상호작용은 도 28을 참조하여 아래에서 더 상세히 설명된다. 일부 실시예들에서, 백테스팅은 시스템이 스크리닝을 위해 사용하는 것과 동일한 코드의 서브세트를 사용하여 구현되며, 이는 도메인-특정 콘텍스트에 의해 가능해진다.
도 17b는 도 17a의 멀티 라인 편집기(1701)에 도시된 기준들에 대한 백테스팅 결과들(1700B)의 세트를 도시한다. 예시된 백테스트는 동일하게 가중되고; 일부 실시예들에서, 신속한 스크리닝 시스템은, 예컨대 가중할 인자를 온으로 선택하고(예를 들어, 오른쪽 클릭) 이어서 백테스트를 선택함으로써 (단지 동일하게 가중되기보다는) 인자 가중된 백테스트들을 선택적으로 실행하도록 구성된다. 다양한 실시예들에서, 백테스팅 결과들(1700B)은 백테스트의 결과들을 차트화 및 나열하는 다양한 접근법들을 포함하는 보고 생성을 포함한다. 예를 들어, 백테스트는 선택된 스크리닝 기준들에 따라 선택된 투자들이 하나 이상의 벤치마크들과 비교하여 선택된 기간에 걸쳐 어떻게 수행되었을지에 대한 및/또는 시간의 경과에 따른 리턴들을 설명하는 통계를 제공할 수 있다. 개시된 기술은 동시성 프로그래밍의 실행에 대한 전례없는 접근성을 제공하는데, 이는 사용자들이 단순히 종래의 기술로는 이용할 수 없었다.
도 18은 일 실시예에 따른, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 변화 경보 그래프(1800)를 예시한다. 일부 실시예들에서, 신속한 스크리닝 시스템은 자동화된 일일 스크리닝을 실행하고 그 결과들을, 예를 들어, 이메일을 통해 사용자에게 전송하도록 구성될 수 있다. 예를 들어, 임의의 중요한 변화들(예를 들어, 리스트로부터 추가되거나 제거된 회사들, 위험의 새로운 소스들, 관련 뉴스 기사들 등)이 있는 경우, 신속한 스크리닝 시스템은, 사용자 시간을 절약하고 이용가능성 편향을 감소시키기 위해 이를 자동으로 강조할 수 있다. 예시된 그래프(1800)에서, 주식 스크린의 결과들의 세트가 수직으로 나열된 식별자들 및 수치 수평 축과 함께 도시된다. 변화 경고 그래프(1800)는, 어제(파란색 원들)와 오늘(주황색 원들)에 대한 값들 사이의 변화들에 대한 시각화를 제공하여, 무엇이 얼마나 많이 변화되었는지를 뷰어가 즉시 볼 수 있게 한다.
일부 실시예들에서, 기술은 임의의 2개의 스크리닝 결과 세트들을 비교하는 유사한 그래프를 사용자가 생성하는 능력을 제공한다.
도 19a는 일 실시예에 따른, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템에서 성찰에 대한 예시적인 AI 특징부(1900)를 예시한다. 예시된 예에서, 개시된 기술은 기존의 스크리닝 관행들을 성찰하고 개선하기 위해 인공 지능(AI) 기계 학습(ML)을 사용한다.
먼저, (예를 들어, 잠재적인 투자들을 랭킹하기 위해) 기존의 스크리닝 모델에서 현재 사용되는 인자들이 식별된다. 예를 들어, 개시된 신속한 스크리닝 시스템의 도메인-특정 언어로 표현된 가상 스크린은 (0.4 * ReturnOnEquity + 0.4 * ReturnOnAssets + 0.2 * DebtToEquity) => CustomFactor일 수 있으며, 여기서 기존 스크리너는 그들에게 무엇이 가장 중요한지에 의해 그들의 질의를 우선순위화하기 위해 CustomFactor에 의한 잠재적 투자들을 높음-대-낮음으로 정렬한다.
기존의 관행들을 복제하도록 블랙-박스 AI 모델을 트레이닝하기 위해, 다음과 같이 질문한다: "입력들이 ROE, ROA 및 DTE, 대응하는 입력 데이터, 및 결과들이라는 것을 알면, 그들의 스크린의 결과들을 복제하는 모델을 구축할 수 있는가?" 이어서, 많은 ML 모델들을 트레이닝하는데, 샘플 입력들은 기존 모델이 사용하는 것과 동일한 입력들, 기존 랭킹들, 및 모델이 현재 관행을 반영함을 검증하기 위한 예측된 랭킹의 출력이다. 모델을 트레이닝한 후에, 그 모델에 대한 상대적인 특징 중요도를 결정하기 위해 그에 대해 성찰할 수 있는데, 즉, 블랙 박스 내부를 볼 수 있다. 성찰은, 예를 들어, 인자가 불필요하거나 또는 예기치 않게 과중하게 가중되었다고 결정할 수 있다. 예를 들어, 사용자는 ROE 및 ROA가 자신들의 스크리닝 프로세스에서 동일하게 가중되었다고 생각했을 수 있지만; ROA를 주로 사용함으로써 사용자의 의도된 모델의 출력을 예측한 모델을 구성하는 것이 가능했다면, AI 특징부(1900)는 사용자가 그들의 스크리닝 프로세스가 실제로 어떻게 작동하고 있는지를 이해하는 것을 돕고, 이를 개선하거나, 동일한 결과를 얻는 대안적인 방식들을 제공할 수 있다.
ML 모델들을 트레이닝할 때 가장 어려운 부분들 중 하나는 특징부 선택 프로세스이다. 전형적으로, 전문 사용자가 특징들을 선택하는 것은 모델을 구현하는 데이터 과학자 또는 퀀트(quant) 조사자와는 상이하다. 개시된 기술은 기존의 스크린들을 구성할 때 도메인-특정 언어의 사용자의 사용으로부터 스크리너의 특징 선택 파라미터들의 추론을 가능하게 한다. 이러한 도메인-특정 언어의 사용을 분석하는 것은 어떠한 기존의 스크리너에서도 가능하지 않았을 것인데, 이는, 유사하게 액세스할 수 있는 다른 어떤 스크리너도 사용자가 찾고 있는 것을 말할 수 있을 만큼 충분히 표현적이지 않으며, 기존 언어에서는 사용자의 도구 사용에서 의미론적 의미를 추론할 수 있을 만큼 충분히 구조화되거나 제한되지 않기 때문이다.
다른 난제는 - 특히 금융 데이터를 다룰 때 - 오버피팅(overfitting)이다. 성찰 사용 사례의 경우, 생성된 ML 모델이 오버피팅되는 것은 중요하지 않은데, 이는 실제로 미래 이벤트를 예측하려고 시도하는 것이 아니라 기존 이벤트를 분석하려는 것이기 때문이다. 오버피팅된 모델들의 속성들을 활용함으로써, 개시된 기술은 종래의 관행 및 교시에 반하여 실행된다. 오버피팅은 일반적으로 바람직하지 않은 것으로 간주되며, 당업자에게 극도로 비직관적일 것이다.
도 19b는 일 실시예에 따른, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템에서의 예측을 위한 예시적인 AI 특징부(1950)를 예시한다. 이는, 도 19a와 관련하여 전술된 성찰 ML 모델과는 상이한, AI를 이용한 스크리닝을 개선하는 접근법이다. 이 경우의 접근법은, 기계 학습을 사용하여, 특정 시점에서의 회사들의 유니버스 및 예시적인 회사들의 선택된 서브세트를 입력으로서 취하는 분류기들의 세트를 트레이닝하는 것이다. 예시적인 회사들은 개별적으로 선택된 개별 식별자들의 리스트일 수 있거나 일부 필터링 기준들(예를 들어, 임계치를 초과하는 ROE, 또는 "호텔들"을 포함하는 회사 이름들)을 충족하는 것들일 수 있다. 서브세트 내의 예시적인 회사들은 "바람직한" 타겟들, 스크리너가 회피하기를 원하는 특성들을 갖는 회사들, 또는 일부 다른 카테고리일 수 있다. ML 모델을 개발하기 위한 접근법들은 부트스트래핑, 랜덤 포레스트, AutoML 또는 다른 ML 모델들, 바람직하게는 트레이너가 상대적인 특징 가중치들을 추론할 수 있는 모델을 포함할 수 있다. 트레이너는, 예를 들어, 더 많은 모델들을 트레이닝하고 평균화함으로써, 결과적인 스크리닝 모델들에 대해 일부 제어를 행사할 수 있다. 분류기들은 예시적인 회사들을 생성하도록 트레이닝되고; 이들은 모두 동일한 솔루션을 달성하지만 상이한 방식들로 달성한다. 따라서, 이들은 그러한 예시적인 회사들을 발견했을 필터들을 예측할 수 있다. 이는, 어떤 데이터 태그들 및 가중치들이 상관되거나 또는 역상관되는지를 보여줌으로써 사용자의 선호도들을 드러낼 수 있다. 일부 구현들에서, 결과는 확률 분포 및 특징 가중치들의 생성이다.
유사한 것들의 미리 정의된 세트의 하나의 서브세트에 대해 트레이닝되고, 다른 추정된 유사한 서브세트에 대해 동작하는 통상적인 추천 엔진과 달리, 이러한 트레이닝 모델은, 사용자가 자신이 잘 알고 있다고 믿을 수 있는 포켓(예를 들어, 선택된 산업에서 선택된 회사들)을 설명하는 추상화 층을 생성한다. 모델은, 이를 정량화하는 것을 돕는 것에 부가하여, 사용자가 그 포켓의 이해를 다른 산업들, 국가들 및/또는 시간들과 같은 다른 포켓들 또는 유니버스들에 적용할 수 있게 한다.
이러한 분류기들은 개별적으로 또는 앙상블의 일부로서 활용될 수 있다. 앙상블들은 예측 맥락에 대한 오버피팅을 감소시킬 수 있게 한다. 그리고 일부 모델들은 우리가 특정 가중치들에 대해 추가로 성찰하는 것을 가능하게 한다. 다른 구현들은 이러한 동일한 알고리즘의 상이한 "실행들"로부터 생성된 분류기들을 조합하는 것을 포함한다. 결과적인 예측 모듈(분류기들의 조합)은 다수의 상이한 방식들로 적용될 수 있거나, 또는 사용자가, 예를 들어 특징 가중치들에 대해 머신으로 조정하거나 반복하는 것을 가능하게 할 수 있다.
도 20은 일 실시예에 따른, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템에서 체제 변화 검출을 위한 예시적인 AI 특징부(2000)를 예시한다. 금융에서, 체제 변화는 금융 시장들의 거동의 갑작스러운 변화와 연관되는데, 예컨대, 팽창과 후퇴 사이에 변화하는 경제적 활동의 사이클들과 연관될 수 있다. 체제 변화를 이해하는 것은, 그것이 투자 운용사들이 체계적인 시장 변화들에 반응할 수 있게 하기 때문에 중요하다.
체제 변화 모델은 통상적으로, 파라미터들이 일부 고정된 수의 "체제들" 각각에서 상이한 값들을 취하도록 허용되는 시계열 모델로서 정의된다. 전형적으로, 체제 변화 모델은 그들이 찾는 미리 정의된 인자들의 일부 세트, 및 체제의 일부 고정된 정의를 포함한다. 일반적으로, "체제들" 및 "체제들에 영향을 미치는 특징들은 무엇인가"를 정의하는 데 상당한 고려가 이루어진다. 그러나, 현재의 접근법들의 2개의 문제점들은 다음과 같다:
1. 체제에 대한 우리의 역사적 그리고 미리-정의된 이해를 고려할 때, 모델이 가능한 체제 변화에 대해 말할 수 있지만, 투자가가 대답해야 할 중요한 질문은 "세계가 변하고 있는가?"가 아니라, "세계가 이 투자 전략에 중요한 방식으로 변하고 있는가?"이다.
2. 이들은 입력 변수들을 미리 정의할 것을 요구하며, 시장에 영향을 미치는 힘들의 변화들에 적응적이지 않다.
맞춤 체제 변화 검출을 해결하기 위해 도 19a를 참조하여 전술된 AI/ML 접근법을 계속해서 구축할 수 있다. 도 19a의 AI를 기반으로 하여, 투자 운용사에 의한 어떠한 명시적인 명령들도 없이 맞춤 체제 변화 모델을 추론 및 구성한다. 우리는 동일한 절차를 수행하지만, 이번에는, 하나의 스냅샷 시간 윈도우를 보는 것이 아니라, 다수의 윈도우들을 순차적으로 관찰할 수 있다. 따라서, 각각의 시간 기간(예를 들어, 분기들)에 대한 ML 모델들의 세트를 구성한다.
다시, 구성하는 ML 모델들이 오버피팅되는 것은 중요하지 않다. 출력은 시간에 걸친 정의된 인자들/특징들의 영향이다. 당신의 투자 프로세스에 중요한 특징들의 영향에 변화가 있다면, 그것은 당신이 의존하는 인자들이 시프트되었을 수 있다는 조기 경고 신호이며, 따라서 당신은 자신의 접근법을 적응시키는 것을 고려하기를 원할 수 있다.
이러한 작은 정보로부터 체제 변화 모델들을 추론하는 능력은 현재 존재하지 않는다. 언어의 조합된 표현가능성 및 시맨틱 구조/제한들, 및 또한 ML의 적용은 그 능력을 더 강력하게 만드는 것을 돕는다. 개시된 기술은 도메인 전문가 의사결정자가 이를 그들 자신의 판단과 조합하고 AI와 함께 반복하여 결과를 개선할 수 있게 한다.
도 19b를 다시 참조하면, 예측 AI 모델은 현재 체제에서 행하기 위한 유사한 선택들을 추론하기 위해 과거에 알려진 체제에 대해 직관을 사용하는 데 적용될 수 있다. 예를 들어, 사용자가 오늘날의 체제가 회사들이 1990년에 경험한 체제와 유사하다고 생각하면, 모델은 1990년으로부터 선택된 회사들의 서브세트와 유사한 회사들(예컨대, 그 체제에서 번성했던 회사들)을 강조하는 데 사용될 수 있다. 즉, 1990년에 관심 타겟들을 예측하도록 트레이닝된 모델이 이제 오늘날에 적용될 수 있다. 따라서, 이름들 및 날짜들의 세트의 입력으로, 출력은, 현재 및 한 세트의 스크린들에서 그들과 연관된 스코어를 갖는 유사한 이름들의 세트가 될 것이다.
다른 예로서, 세계의 현재 상태는 일반적으로, "가치", "성장", "품질", "모멘텀" 등의 인자 주식들이 현재 아웃퍼폼(outperform)하기 위해 선호되는지 여부의 관점에서 평가된다. 그러나 사용자는, 말하자면, 품질 카테고리가 그 사용자의 세계 '포켓'(예를 들어, 증권들의 제한된 서브세트)에 실제로 적용되는지 여부를 확신하지 못할 수 있다. 예를 들어, 2007년 및/또는 2003년에 잘했을 회사들을 찾는 것은 머리에 저장하기에는 너무 많은 데이터를 요구할 것이며; 따라서, 전통적인 투자가는 직관에 의존해야 한다. AI 모델은 본질적으로 그 직관을 체계화할 수 있으며: "이것은 과거의 시간처럼 느껴지는 것"이라는 아이디어가 구체적이지 않은 경우, 모델은 "이제, 그때와 같이 느껴지는 것"을 구체적이고 정량화가능하게 만든다.
또한, 이 AI 모델 접근법은 산업들에 걸쳐 또는 국가들에 걸쳐 뿐만 아니라 날짜들 또는 자산 클래스들(예를 들어, 2003년의 미국 시장과 현재의 중국)에 걸쳐 적용될 수 있어서, 전환 학습을 가능하게 하고 그렇지 않으면 발견되지 않은 채로 유지될 수 있는 교차 연결들에 관한 통찰력을 생성할 수 있다.
개시된 AI 모델 트레이닝은 단지 과거를 사용하여 튜닝가능하지 않은 블랙 박스를 통해 미래를 예측하는 것이 아니라; 과거에 관한 경험-기반 직관의 사용자의 입력을 부가하고, 체제(즉각적으로 정의되고, 미리 분류되지 않음)을 정량화하고, 그에 기초하여 예측 모델들을 정의하며, 당시 잘 작동했던 특성들을 식별하기 위한 이론적 근거들을 제공하고, - 사용자의 직관이 정확하다면 - 이제 잘 작동할 수 있다. 어떠한 액션가능한 통찰력들(예를 들어, 분위기가 유사한 것을 고려하면, 어떤 회사들을 구매할지를 고려할 수 있는지)을 제공하지 않으면서, 사용자가 오늘날 어떤 미리 정의된 체제에 있는지를 말해주려고 시도하기보다는, 이 모델은 (예를 들어, 이들의 성능/수익들 또는 다른 품질들에 기초하여) 과거 분위기에서 과거에 관심있었을 회사들과 유사한 오늘날의 회사들의 추천들을 제공한다.
일부 실시예들에서, 모델을 트레이닝시키기 위한 관련 "특징들"은 (예를 들어, 사용자-정의 데이터 태그들을 포함하는 데이터 태그들 및 표현들을 분석함으로써) 편집기에서 특정된 코드로부터 추론될 수 있다. 일반적으로, 데이터 과학 또는 기계 학습 전문가가 이러한 특징 엔지니어링을 수행할 것이다. 개시된 기술은 기계 학습에 대해 알지 못하는 비-기술적 사용자가 기계 학습 AI 스크리닝 모델과 효과적으로 협력할 수 있게 한다.
이는 사용자와 AI 스크리닝 모델 사이의 연속적인 피드백 루프를 가능하게 하며, 여기서 사용자는 멀티 라인 편집기 내에서 텍스트를 변경함으로써 AI 스크리닝 모델을 개선하기 위해 특징 엔지니어링을 효과적으로 수행할 수 있다. 이러한 방식으로, 사용자는 모델에 피드되는 특정된 특징들을 효과적으로 반복할 수 있고, 관심 타겟들을 더 양호하게 찾을 수 있다.
도 21은 일 실시예에 따른, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템에서 블렌딩을 최적화하기 위한 예시적인 AI 특징부(2100)를 예시한다.
도 19a 및 도 20과 관련하여 위에서 개시된 접근법들에 기초하여, 앞으로 스크리닝 모델들을 최적화하기 위해 이러한 성찰 및/또는 체제 변화 통찰력들을 사용한다. ROE가 오버퍼폼하면, 즉, ROE 및 ROA가 동등하게 중요하다고 스크리너가 생각하지만, ROE가 더 많은 관심 회사들을 식별할 가능성이 있다고 ML 모델들이 추론한다면, 생성된 리스트에서 더 집중하기를 원할 수 있는 회사들을 강조할 수 있다.
유사하게, 도 19b 및 도 20과 관련하여 위에서 개시된 접근법들을 기반으로, 포트폴리오에서 고-수행 증권들을 모델링하는 스크린이 적용되어 그러한 증권들의 이름들을 생성하기 위한 스크린들의 세트를 찾음으로써 추가적인 스크리닝 기준들 및/또는 가중치들을 식별할 수 있다.
위의 접근법의 변형에서, 예측 AI 모델은 또한, 스크린 내의 이름들에 대한 허딩(herding) 및/또는 최소 합의 위험 평가를 획득하기 위해 적용될 수 있다. 스크린의 입력 및 날짜가 주어지면, 출력은 식별자들의 2개의 리스트들, 즉, 다른 스크린들 중 가장 적은 히트에 대한 이름들 및 가장 많은 다른 스크린들에 히트된 이름들이다. 첫번째는 최소 합의 위험을 표현하고; 두번째는 허딩 위험을 표현한다.
따라서, 말하자면, 그 회사들의 세트를 찾는 것을 돕는 100개의 스크린들을 생성하면(즉, 동일한 솔루션에 도달하기 위한 100개의 방법들이 존재한다면), 이들 스크린들 중 75개는 MSFT가 양호한 선택이라는 것에 동의하는 경우, 테이크어웨이는 MSFT가 사고자 하는 종류의 회사라는 확신에 따라 좌우된다. 그것이 당신이 가치 있게 여기는 것을 표현하는가? 아니면, 당신의 관점이 얼마나 독립적인지를 반성하고 생각하고 있는가? 즉, 만약 스크린이, 당신이 하는 것의 대부분이 전통적인 성장 투자가들이 하는 것이고 작은 부분이 당신의 "비밀 소스"임을 나타내면, 당신은 자신의 편향들, 자신의 관점 및/또는 자신의 액션들을 조정하기 위해 성찰하고 그에 따라 행동하는 능력을 얻는다.
다른 변형에서, 예측 AI 모델은 니어 미스(near miss)들: 예를 들어, 사용자의 오리지널 스크린 또는 포트폴리오 내의 이름들에 히트하지 않지만 AI-학습된 스크린들 중 다수에 히트한 시세표 이름들을 식별하는 데 사용될 수 있다. 그러한 회사들은 조사를 위한 액션을 보증할 수 있다.
도 22는 일 실시예에 따른, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템에서 특징부 제안들을 위한 예시적인 AI 특징부(2200)를 예시한다.
도 19a, 도 20 및 도 21과 관련하여 전술된 접근법들을 기반으로, 스크리닝 기준들의 세트에 추가할 특징들(예를 들어, 데이터 태그들) 및 제거할 특징들을 제안할 수 있다. 예를 들어, 단지 랜덤 잡음인 하나 이상의 특징을 추가하고, 이를 기존의 스크리닝 기준들 내의 다른 인자들의 영향과의 비교를 위한 기준선으로서 설정하고, 그 임계치 미만의 특징들을 제거하도록 당신에게 추천한다. 예를 들어, DTE가 우리의 쉐도우 모델들에서 랜덤 잡음보다 더 적은 영향을 갖는다면, 당신은 신호가 통합되고 있다고 생각할 수 있지만, 실제로는 그렇지 않다. 우리는 사용자가 달성하려고 하는 목표에 대한 강한 의미론적 이해를 갖기 때문에, 우리는 이들의 전략 성능을 개선하는 제안들을 하기 위해 정적으로 그리고/또는 동적으로 분석할 수 있다.
개시된 AI 모델들 및 인터페이스는 간단하지만 강력한 레벨의 추상화를 제공하는데, 사용자 입력이 도메인-특정적이기 때문에, 우리는 사용자들이 해결하려고 하는 문제들의 종류들에 대해 더 많은 맥락을 갖는다. 사용자 입력은 도메인 내의 사용자 선호도들의 추론을 허용한다. 인터페이스는 비-기술적이고 상호작용적이어서, 사용자들이 자신들의 결과들에 기초하여 반복하고 '특징' 엔지니어링을 쉽게 수행하도록 권장한다.
또한, 이러한 AI 모델들은 목표들이 통상적으로 매우 엄격하게 정의되는 정상적인 정량적 모델링과 대조적이다. 개시된 모델들은 우리가 정성적 및/또는 설명하기 어려운 목표들을 타겟팅할 수 있게 하며, 이는 경험에 더 의존하는 임의적 투자가들에게 이를 실행가능하고 유용하게 한다.
도 23은 일 실시예에 따른 연산자들의 독창적인 사용들을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스를 예시한다. 멀티 라인 편집기(2301)에서, 라인 3 입력(2330)은 현재 자산수익률에 기초하여 미국 대형 자본 회사들(2310)에 변환 "RankHighToLow"를 적용하고, 랭킹 메타데이터를 변수 "RoaRank"(2335)에 할당한다. 라인 6 표현(2360)은 3항 연산자, 이모지 캐릭터들 및 문자열 연쇄를 통합하여 판독하기 쉬운 Roa 표시자 열(2365)을 생성한다. 3항 연산자는 "(X ≥ Y : Z)"로서 포맷된 짧은 형태의 if-then 진술과 같이 기능하며, 여기서, 표현 X가 참이면, 3항 연산자의 출력은 Y이고, 그렇지 않다면, 출력은 Z이다. 따라서, Roa 랭크가 75 이상인 임의의 회사의 경우, 결과는 녹색 체크 박스 이모지 캐릭터이고, Roa 랭크가 76 이하인 임의의 회사의 경우, 결과는 적색 X 마크 이모지 캐릭터이다. 출력 이모지 캐릭터는 스페이스 캐릭터 및 자산수익률 값과 연접되어, 미국 대형주 주식들 중에서 가장 높은 ROA를 갖는 주식들을 강조하는 Roa 표시자 열(2365)을 디스플레이한다.
도 24는 일 실시예에 따른 자동 포맷을 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스(2400)를 예시한다. 미국 대형주들(2410)의 유니버스에 적용되는 예시된 예에서, 3개의 계산들은 "가치" 인자(2450/2455), "성장" 인자(2460/2465) 및 "품질" 인자(2470/2475)를 결정한다. 라인들 10, 11 및 12에서, 3개의 인자들 각각은 "SplitQuintiles" 변환이 적용되어(2451, 2461, 2471), 각각의 식별자에 대한 인자 스코어들에 1 내지 5의 5분위수 스케일을 할당하는 메타데이터를 생성한다.
각각의 인자에 대한 5분위수 스코어링은 "Score"로 끝나는 변수 또는 맞춤 데이터 태그에 할당된다. 결과적으로, 신속한 스크리닝 시스템은, "히트맵" 컬러 코딩으로 그리드 뷰(2402)에 값들을 디스플레이함으로써, 그러한 변수들과 연관된 값들을 특별히 취급한다. 예시된 바와 같이, "1" 5분위수 스코어들은 어두운 적색으로 착색된 셀들에 도시되고; "2" 5분위수 스코어들은 짙은 오렌지색로 착색 셀들에 도시되고; "3" 5분위수 스코어들은 어두운 황색으로 착색된 셀들에 도시되고; "4" 5분위수 스코어들은 밝은 녹색으로 착색된 셀들에 도시되고; "5" 5분위수 스코어들은 어두운 녹색으로 착색된 셀들에 도시된다.
디스플레이된 값들의 이러한 그리고 다른 자동화된 포맷은 종래의 스크리닝 시스템들에 대한 대조를 제공하며, 더 큰 유연성 및 표현력을 제공하면서, 훈련되지 않은 사용자가 이해하기 쉽게 디스플레이된 결과들을 만든다.
도 25는 일 실시예에 따른, 예측들의 시점 상황 보고를 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스(2500)를 예시한다. 시계열 상황 보고 모델은 단지 탐색 및 스크리닝 능력들뿐만 아니라, 시간의 경과에 따른 분석가들의 예측들을 활용하고 이들을 회사들의 실제 성능과 비교하는 통찰력들 및 강력한 분석들을 제공한다.
예시된 예에서, 멀티 라인 편집기 인터페이스(2501)에서, 라인 1(2510)에서, "#/Model/SituationReport" 표기는 상황 보고 모드 또는 모델을 호출한다(많은 다른 동등한 접근법들, 예컨대 버튼, 드롭다운 메뉴, 음성 커맨드 등이 또한 사용될 수 있음). 회사들의 리스트 또는 유니버스 식별자를 입력하기 위한 입력 필드(이 경우, "회사 이름" 열(2515)에 도시된 5개의 회사들) 및 캘린더 드롭다운을 갖는 날짜 필드를 포함하는 일부 제어부들은 도시되지 않는다. 멀티 라인 편집기 인터페이스(2501)는 "EbitConsensusMean"(2530)과 같은 몇몇 영역들에서 분석가들의 예상들을 표현하는 데이터 태그들의 세트를 포함한다. 그 데이터 태그는, 이자 및 세전 회사의 이익들에 대한 분석가들의 예측들의 합의 평균을 반영한다.
상황 보고 모델의 각각의 셀의 콘텐츠들은 각각 단순한 값들이 아니라, 복잡한 데이터 세트의 요약이다. 요약 상황 보고를 생성하기 위해, 신속한 스크리닝 시스템은, 근본적인 정보를 다운로드하고 프로세싱하기 위해, 그리드 디스플레이(2502) 내의 각각의 셀에 대한 컴퓨팅 프로세스를 발생시킨다. 데이터는 보간되고 평활화된 다음 디스플레이된다. 디스플레이되는 값들은 선택된 회사에 대한 선택된 메트릭의 현재(선택된 캘린더 날짜에 대한) 예측 변화율을 표현한다. 예를 들어, 예시된 예에서, Bed Bath & Beyond Inc.(2531)에 대해, Ebit 합의 평균(2535)에 대한 값은 53 2545이다. 이는 합의 평균에 대한 약간의 포지티브 기울기를 나타내며, 이는 EBIT가 평탄하게 유지되거나 매우 약간 증가할 것이라는 예측을 의미한다.
예시된 예에서, 셀들은 평활화된 예측의 곡선 경사에 기초하여 (인간의 눈/예상들에 매칭하기 위한 표준 편차들에 기초하여) 적색-황색-녹색 스펙트럼을 따라 색조화된다. 따라서, 0 내지 10의 값들은 가장 빠른 감소에 대응하고, 90 내지 100의 값들은 최대 절대 경사에 대한 가장 빠른 증가에 대응한다. Microsoft Corporation(2532)에 대한 EBIT 합의 평균(2535)은 매우 높은 95 2546이고, 따라서 선명한 녹색으로 음영 처리되어, 합의 예측이 Microsoft의 EBIT가 거의 어느 때보다 급격하게 증가할 것이라는 것을 나타낸다. 본 개시내용의 날짜로서, 예시된 분석들의 계산 복잡성은 분석들이 개인용 컴퓨터 상에서 실행되는 것을 실행불가능하게 만들 것이다.
현재 추세를 디스플레이하는 것에 부가하여, 상황 보고는 이전에 이용가능하지 않은 내비게이션, 합성, 및 분석가들의 예측들의 맥락-인식을 허용하는 제어부들을 제공한다. 예를 들어, 캘린더 날짜들을 조정함으로써, 사용자는 이전 시간들에 대한 예측들을 쉽게 실행하고, 합의 예측들의 상태가 어떻게 변했는지 또는 변하고 있는지를 비교할 수 있다. 또한, 녹색 화살표(2580) 또는 적색 화살표(2585)는 회사의 실제 예측이 예측된 합의 예측을 초과하거나 충족하지 않음을 나타내며, 이는 변화를 미리 알릴 수 있다. 또한, 각각의 셀은 도 26을 참조하여 아래에서 추가로 설명되는 바와 같이, 시간의 경과에 따라 더 완전한 정보를 디스플레이하는 더 큰 그래프에 대한 링크이다.
도 26은 일 실시예에 따른 상황 보고 이력 예측 그래프(2601)를 도시하는, 주식 스크리닝을 위해 구성된 신속한 스크리닝 시스템의 예시적인 사용자 인터페이스(2600)를 예시한다. 이 그래프(2601)는 사용자가 도 25로부터 셀(2545)을 선택할 때 도시되며, 초기 상황 보고 테이블에 디스플레이된 숫자 이면의 세부사항을 도시한다. 그래프(2601)는 디스플레이된 시간 프레임에 걸쳐 Bed, Bath, & Beyond에 대한 EBIT에 대한 실제 합의 예측들을 표현하는 계단형 라인(2610)을 포함한다. 또한, 평활화된 라인(2620)이 도시되며, 이는 또한 도 25를 참조하여 전술된 기울기 계산의 소스이다. 실제 및 평활화된 예측들 주위 또는 근처에 분석가들의 예측들에 대한 예측된 구간을 표현하는 음영 영역(2640)이 있다. 실제 예측(2610)이 예측된 간격(2640)을 벗어나게 될 때, 상황 보고 테이블(도 25에 도시됨)은 이탈을 마크하는데, 이는, 이탈이 이전에 체결된 예상들로부터의 변화를 표시할 수 있기 때문이다. 범례(2650)는 주어진 날짜에 대한 정확한 값들을 디스플레이한다.
상황 보고 그래프는 추정치들뿐만 아니라 임의의 시계열 데이터에 적용된다. 예시된 예의 추정치들에 적용되는 바와 같이, 이는 예측들을 초과하는 분석가들의 예측치들의 큰 변화들, 및 일관된 움직임들을 또한 강조한다. 예를 들어, dy(평활화된) 그래프가 차트의 하반부를 따라 실행되어, 예측치들의 변화율을 예시한다. 따라서, 예시된 예에서, 분석가들의 EBIT 예상들은 2018년 10월경에 상승하고 있었고(2630), 2019년 11월경에는 하락하고 있었다(2635). 이는, 사용자로부터 요구되는 코딩 또는 다른 특별한 기술적 전문지식 없이, 분석가들의 예상들에서 변곡점들을 식별하기에 더 용이하게 한다. 합의 예측들의 이러한 시각화는 학습 곡선을 감소시키고 통찰까지의 시간을 감소시키며, 리스트에 회사를 추가함으로써, 사용자는 즉각적인 결과들을 얻을 수 있다. 따라서, 개시된 기술은, 잠재적으로, 심지어 시장이 반응하기 전에, 사용자가 경고들을 보기 쉽게 할 수 있다. 다른 실시예들은, 사용자가 위에서 예시되고 설명된 것과 동일한 방식들로 이러한 정보를 스크리닝하는 것을 가능하게 한다.
도 27은 본 기술이 구현될 수 있는 컴퓨팅 시스템들 및 다른 디바이스들에 전형적으로 통합되는 컴포넌트들 중 일부를 도시하는 블록도이다. 예시된 실시예에서, 컴퓨터 시스템(2700)은 메모리(2740)에 저장된 컴퓨터 판독가능 명령어들에 따라 컴퓨터 시스템(2700)의 동작을 제어하는 프로세싱 컴포넌트(2730)를 포함한다. 프로세싱 컴포넌트(2730)는 임의의 논리적 프로세싱 유닛, 예컨대 하나 이상의 중앙 프로세싱 유닛(CPU)들, 그래픽 프로세싱 유닛(GPU)들, 디지털 신호 프로세서(DSP)들, 필드 프로그래밍가능 게이트 어레이(FPGA)들 등일 수 있다. 프로세싱 컴포넌트(2730)는 전자 디바이스의 단일 프로세싱 유닛 또는 다수의 프로세싱 유닛들일 수 있거나 또는 다수의 디바이스들에 걸쳐 분산될 수 있다. 본 기술의 양태들은 본 명세서에서 상세히 설명되는 컴퓨터 실행가능 명령어들 중 하나 이상을 수행하도록 특별히 프로그래밍, 구성 또는 구성되는 특수 목적 컴퓨팅 디바이스 또는 데이터 프로세서로 구현될 수 있다.
본 기술의 양태들은 또한, 통신 네트워크, 예컨대 로컬 영역 네트워크(LAN), 광역 네트워크(WAN), 또는 인터넷을 통해 링크되는 원격 프로세싱 디바이스들에 의해 기능들 또는 모듈들이 수행되는 분산형 컴퓨팅 환경들에서 실시될 수 있다. 분산형 컴퓨팅 환경에서, 모듈들은 로컬 및 원격 메모리 저장 디바이스들 둘 모두에 위치될 수 있다. 다양한 실시예들에서, 컴퓨터 시스템(2700)은 본 명세서에 설명된 기능성들을 집합적으로 제공하는 하나 이상의 물리적 및/또는 논리적 디바이스들을 포함할 수 있다. 일부 실시예들에서, 컴퓨터 시스템(2700)은 하나 이상의 복제 및/또는 분산된 물리적 또는 논리적 디바이스들을 포함할 수 있다. 일부 실시예들에서, 컴퓨터 시스템(2700)은 "클라우드 컴퓨팅" 제공자, 예를 들어, 워싱턴주 시애틀의 Amazon.com, Inc.에 의해 제공되는 Amazon® Elastic Compute Cloud("Amazon EC2®"), Amazon Web Services®("AWS®"), 및/또는 Amazon Simple Storage Service™ ("Amazon S3™"); 캘리포니아주 마운틴 뷰의 Google Inc.에 의해 제공되는 Google Cloud Platform™ 및/또는 Google Cloud Storage™; 워싱턴주 레드몬드의 Microsoft Corporation에 의해 제공되는 Windows Azure® 등으로부터 제공되는 하나 이상의 컴퓨팅 자원들을 포함할 수 있다.
프로세싱 컴포넌트(2730)는 메모리(2740)에 연결되며, 메모리(2740)는 임시 및/또는 영구 저장소, 및 판독 전용 메모리(ROM) 및 기록가능 메모리(예를 들어, 랜덤 액세스 메모리 또는 RAM, CPU 레지스터들 및 온-칩 캐시 메모리들) 둘 모두, 기록가능 비휘발성 메모리, 예컨대, 플래시 메모리 또는 다른 솔리드 스테이트 메모리, 하드 드라이브들, 착탈식 매체들, 자기적으로 또는 광학적으로 판독가능한 디스크들 및/또는 테이프들, 나노기술 메모리, 합성 생물학적 메모리 등의 조합을 포함할 수 있다. 메모리는 기본 하드웨어와 분리된 전파 신호가 아니며; 따라서, 메모리 및 컴퓨터-판독가능 저장 매체는 일시적인 전파 신호 그 자체를 지칭하지 않는다. 메모리(2740)는 운영 체제(2742), 애플리케이션 프로그램들(2744) 및 데이터(2746)와 같은 프로그램들, 소프트웨어 및 정보를 포함하는 데이터 저장소를 포함한다. 컴퓨터 시스템(2700) 운영 체제들(2742)은 예를 들어, Windows®, Linux®, Android™, iOS® 및/또는 임베디드 실시간 운영 체제를 포함할 수 있다. 애플리케이션 프로그램들(2744) 및 데이터(2746)는 컴퓨터 시스템(2700) 컴포넌트들을 제어하고, (예를 들어, 프로그램 코드 데이터를 최적화하기 위해) 정보를 프로세싱하고, 데이터 및 정보를 원격 컴퓨터들 및 다른 디바이스들과 통신 및 교환하는 것 등을 위해 구성된, 데이터 구조들, 데이터베이스 기록들, 다른 데이터 테이블들 등을 포함하는 소프트웨어 및 데이터베이스들을 포함할 수 있다.
컴퓨터 시스템(2700)은, 사용자 상호작용들로부터 입력을 수신하고 입력을 프로세서(2730)에 제공하는 입력 컴포넌트들(2710)을 포함할 수 있으며, 프로세서(2730)는 전형적으로 입력 디바이스로부터 수신된 미가공 신호들을 해석하고 알려진 통신 프로토콜을 사용하여 정보를 프로세서(2730)에 통신하는 하드웨어 제어기에 의해 매개된다. 입력 컴포넌트(2710)의 예들은 키보드(2712)(물리적 또는 가상 키들을 가짐), 포인팅 디바이스(예컨대, 마우스(2714), 조이스틱, 다이얼 또는 눈 추적 디바이스), 사용자가 터치할 때 접촉 이벤트들을 검출하는 터치스크린(2715), 오디오 입력을 수신하는 마이크로폰(2716) 및 정지 사진 및/또는 비디오 캡처를 위한 카메라(2718)를 포함한다. 컴퓨터 시스템(2700)은 또한 다양한 다른 입력 컴포넌트들(2710), 예컨대, GPS 또는 다른 위치 결정 센서들, 모션 센서들, 가속도계들을 갖는 웨어러블 입력 디바이스들(예를 들어, 웨어러블 글러브-유형 입력 디바이스들), 생체인식 센서들(예를 들어, 지문 센서), 광 센서들(예를 들어, 적외선 센서), 카드 판독기들(예를 들어, 자기 스트라이프 판독기 또는 메모리 카드 판독기) 등을 포함할 수 있다.
프로세서(2730)는 또한, 예를 들어, 직접적으로 또는 하드웨어 제어기를 통해 하나 이상의 다양한 출력 컴포넌트들(2720)에 연결될 수 있다. 출력 디바이스들은 텍스트 및 그래픽들이 디스플레이되는 디스플레이(2722)를 포함할 수 있다. 디스플레이(2722)는, 예를 들어, LCD, LED, 또는 OLED 디스플레이 스크린(예컨대, 데스크톱 컴퓨터 스크린, 핸드헬드 디바이스 스크린, 또는 텔레비전 스크린), e-잉크 디스플레이, 투사된 디스플레이(예컨대, 헤드-업 디스플레이 디바이스), 및/또는 입력 디바이스 뿐만 아니라 그래픽 및 텍스트 시각적 피드백을 사용자에게 제공하는 출력 디바이스로서의 역할을 하는 터치스크린(2715)과 통합된 디스플레이일 수 있다. 출력 디바이스들은 또한 오디오 신호들을 재생하기 위한 스피커(2724), 진동과 같은 촉각적 출력을 위한 햅틱 피드백 디바이스들 등을 포함할 수 있다. 일부 구현들에서, 스피커(2724) 및 마이크로폰(2716)은 조합된 오디오 입력-출력 디바이스에 의해 구현된다.
예시된 실시예에서, 컴퓨터 시스템(2700)은 하나 이상의 통신 컴포넌트들(2750)을 더 포함한다. 통신 컴포넌트들은, 예를 들어, 유선 네트워크 연결(2752)(예를 들어, 이더넷 포트, 케이블 모뎀, 썬더볼트 케이블, 파이어와이어 케이블, 라이트닝 커넥터, 범용 직렬 버스(USB) 포트 등 중 하나 이상) 및/또는 또는 무선 송수신기(2754)(예를 들어, Wi-Fi 트랜시버; 블루투스 송수신기; 근거리 통신(NFC) 디바이스; GSM, CDMA, 3G, 4G, 및/또는 5G 기술들을 활용하는 무선 모뎀 또는 셀룰러 무선통신장치; 등 중 하나 이상)를 포함할 수 있다. 통신 컴포넌트들(2750)은 직접적으로 유선 또는 무선 피어-투-피어 연결을 통해 그리고/또는 간접적으로 통신 링크 및 네트워킹 하드웨어, 예컨대 스위치들, 라우터들, 중계기들, 전기 케이블들 및 광섬유들, 광 방출기들 및 수신기들, 무선 송신기들 및 수신기들 등(이는 인터넷, 공용 또는 사설 인트라넷, 로컬 또는 확장 Wi-Fi 네트워크, 셀 타워들, POTS(plain old telephone system) 등을 포함할 수 있음)을 통해 컴퓨터 시스템(2700)과 다른 로컬 및/또는 원격 컴퓨팅 디바이스들 사이의 통신에 적합하다. 컴퓨터 시스템(2700)은 컴퓨터 시스템(2700)과 연관된 다양한 전기 컴포넌트들의 동작을 위한 설비 전력 및/또는 배터리 전력을 포함할 수 있는 전력(2760)을 더 포함한다.
본 기술과 함께 사용하는 데 적합할 수 있는 잘 알려진 컴퓨팅 시스템들, 환경들 및/또는 구성들의 예들은 개인용 컴퓨터들, 서버 컴퓨터들, 핸드헬드 또는 랩톱 디바이스들, 셀룰러 전화들, 웨어러블 전자기기들, 태블릿 디바이스들, 멀티프로세서 시스템들, 마이크로프로세서-기반 시스템들, 셋톱 박스들, 프로그래밍가능 소비자 전자장치들, 네트워크 PC들, 미니컴퓨터들, 메인프레임 컴퓨터들, 상기 시스템들 또는 디바이스들 중 임의의 것을 포함하는 분산형 컴퓨팅 환경들 등을 포함하지만 이에 제한되지 않는다. 전술된 바와 같이 구성된 컴퓨터 시스템들이 전형적으로 기술의 동작을 지원하는 데 사용되지만, 당업자는, 기술이 다양한 유형들 및 구성들의 그리고 다양한 컴포넌트들을 갖는 디바이스들을 사용하여 구현될 수 있음을 인식할 것이다. 예시적인 실시예를 설명하기 위해 그러한 인프라구조 및 구현 세부사항들을 보여줄 필요는 없다.
도 28은 일 실시예에 따른 백테스팅을 위한 예시적인 동시적 서버 상호작용의 몇몇 컴포넌트들을 예시하는 개략적인 데이터 흐름도(2800)이다. 사용자는 예컨대, 웹 애플리케이션 또는 다른 클라이언트 디바이스(2810)를 통해 신속한 스크리닝 시스템과 상호작용한다(예를 들어, 로컬 소프트웨어를 실행하거나 또는 SaaS(software-as-a-service)에 액세스함). 사용자는 예를 들어, 도 17을 참조하여 위에서 상세히 설명된 바와 같이 백테스트(2805)를 요청한다. 신속한 스크리닝 시스템은 스크리닝 기준들 및 다른 포트폴리오 분석들을 수정하는 것과 같이 덜 복잡한 결과들에 대해 유사하게 동작할 수 있다. 클라이언트 웹 애플리케이션 또는 디바이스(2810)는 세션 서버(2820), 예를 들어, 원격 서버 상의 사용자 데이터베이스를 관리하는 호스트 디바이스에 요청(2815)을 전송한다. 요청(2815)은 예를 들어, 가입자가 인가된 것(그리고 예를 들어, 백테스팅 서비스에 대해 청구된 것)을 보장하기 위한 가입자 인증 또는 세션 정보 및/또는 테스트할 기준들 및 테스트할 벤치마크와 같은 백테스트의 파라미터들을 특정하는 날짜들 및 코드들을 포함할 수 있다. 다양한 실시예들에서, 파라미터들은 이미 사용자의 세션과 연관되고 서버 상에서 이용가능하므로, 현재 세션 및 백테스팅 요청의 식별은 최소의 데이터 송신으로 달성될 수 있다. 일부 실시예들에서, 클라이언트 인터페이스 디바이스 또는 웹 애플리케이션(2810)은 새로운 스크린들, 백테스트들 또는 다른 포트폴리오 분석 요청들이 발생할 때 하나 이상의 트리거들을 세션 서버(2820)에 전송하고, 분석이 완료될 때 수신될 업데이트들에 가입한다.
사용자가 세션 서버(2820)에 의해 검증되었을 때, 세션 서버(2820)는, 예를 들어, 하나 이상의 클라우드 컴퓨팅 인스턴스들과 같은 서버 상에서 동작하는 메인 기능(2830)에 요청(2825)을 전송한다. 주요 기능(2830)은, 백테스팅 계산들을 효율적으로 병렬화하기 위해, 동시성 컴퓨팅 자원들을 사용하여 요청을 실행하는 것(예를 들어, 람다 함수들을 트리거하는 것(2840))을 포함하여 백테스팅 요청의 프로세싱 및 어셈블리를 전체적으로 관리한다. 람다들은 간단하지만, 시스템이 많은 작업들을 병렬로 생성하여 짧은 시간에 큰 작업들을 동시에 수행할 수 있기 때문에 많은 것을 달성한다. 예를 들어, 백테스트들에서, 신속한 스크리닝 시스템은 계산들을, 백테스트에서의 각각의 연도 및 각각의 연도의 개별 월들과 같은 이산 시간 기간들로 분해할 수 있다. 이는 백테스팅 속도의 상당한 개선들을 가능하게 한다. 다양한 실시예들에서, 도메인-특정 언어는 (예를 들어, 시간, 데이터 아이템들, 및 사용자-특정 패턴들에 걸친) 동시성 및 데이터 샤딩을 위해 설계된다.
예시된 실시예에서, 람다 함수들(2840)은 하나 이상의 금융 데이터 데이터베이스(들)(2850)로부터 데이터를 획득하며, 구체화된 뷰들(2845)은 데이터 및 시간에 걸친 스냅샷들을 포함한다. 일부 실시예들에서, 구체화된 뷰(2845)의 스냅샷들은 또한, 이력 값들의 최근 세트를 포함하여, 일부 반복을 야기하지만, 예를 들어 극도로 신속하게 그리고 비교가능한 방식으로 지난 몇 년 동안의 맞춤 추세에 액세스하는 것을 가능하게 한다. 구체화된 뷰 예시 데이터(2848)는 날짜, 식별자, (후행 12 개월에 대한 그리고 현재 분기에 대한) 값들의 쌍 및 (후행 12 개월에 대한 그리고 현재 분기에 대한) 이력 값들의 세트들의 쌍을 포함한다. 다양한 실시예들에서, 구체화된 뷰들(2848)은 동일한 또는 다른 백테스트가 실행될 때 액세스 속도를 높이기 위해 저장되며; 이는 사용자가 재계산을 요구하지 않고 상이한 백테스트들의 결과들 사이에서 앞뒤로 스위칭할 수 있게 한다. 다양한 실시예들에서, 스크리닝 및/또는 백테스트 기능들은 많은 유형들의 데이터 저장소들에 플러그인될 수 있고, 데이터베이스들(2850)로 제한되지 않으며; 예를 들어, 애플리케이션 프로그래밍 인터페이스(API)들이 또한 효과적으로 사용될 수 있다.
람다 함수들(2840)은 메인 함수(2830)로 돌아가고, 메인 함수(2830)는 백테스트 또는 다른 분석의 전체 결과들(2855)을 세션 서버(2820)에 전달한다. 다양한 실시예들에서, 질의가 실행된 후에, 전체 결과들(2855)은 서버측에 저장된다. 이는, 데이터 자체가 변하지 않을 경우(예를 들어, 정렬, 그룹화 등), 신속한 스크리닝 시스템이 항상 질의를 재실행할 필요가 없고, 또한 증분 질의에 대한 가능성을 연다는 것을 의미한다.
일부 실시예들에서, 람다 함수들(2840)은 클라이언트 인터페이스 디바이스 또는 웹 애플리케이션(2810)이 가입한 결과들로 업데이트된다. 일부 실시예들에서, 세션 서버(2820)는 결과 식별자(2857)를 클라이언트 인터페이스 디바이스 또는 웹 애플리케이션(2810)에 제공한다. 이어서, 클라이언트 인터페이스 디바이스 또는 웹 애플리케이션(2810)은 부분적 결과들(2865)(예를 들어, 결과들을 사용자의 디스플레이 상에서 가시적으로 렌더링하는 데 필요한 것만)을 요청할 수 있다. 이어서, 세션 서버(2820)는 결과들(2875)의 요청된 부분을 클라이언트 인터페이스 디바이스 또는 웹 애플리케이션(2810)에 전달한다.
도 29는 일 실시예에 따른 신속한 스크리닝 시스템을 구현하기 위한 예시적인 서버 시스템의 몇몇 컴포넌트들을 예시하는 개략도(2900)이다. 사용자는 예컨대, 웹 애플리케이션 또는 다른 클라이언트 디바이스(2910)를 통해 신속한 스크리닝 시스템과 상호작용한다. 웹 애플리케이션(2910)은 스크리닝, 백테스팅 또는 시계열 예측 분석 수행과 같은 요청들을 위해, 예를 들어, 서버 엔드포인트들(2905, 2908)을 통해 세션 서버(2920)와 통신한다. 서버 엔드포인트(2905)에 대한 요청들은 1:1 대응 방식으로 서버에 의해 처리되며, 여기서 세션 서버(2920)는 예를 들어, 요청당 하나의 행을 세션 데이터베이스에 삽입한다. 예를 들어, 표현을 입력하는 사용자의 스크리닝 세션을 프로세싱할 때, 웹 애플리케이션(2910)은 입력된 표현을 세션 서버(2920)에 제공하며, 이는 표현에 대한 프로세스를 개시할 수 있다. 예를 들어, 행이 편집기에서 업데이트, 추가 또는 제거될 때마다, 웹 애플리케이션(2910)은 세션 서버(2920)에 통지하고, 이는 백 엔드 데이터베이스(2940) 또는 컴파일러/해석기(2930)에 대한 요청을 개시한다. 일부 실시예들에서, 웹 애플리케이션(2910)으로부터 세션 서버(2920)로의 백테스트 요청이 또한 1:1 기반으로 처리된다.
서버 엔드포인트(2908)에 대한 요청들은 1:다 대응 기반으로 서버에 의해 처리되며,여기서 세션 서버(2920)는 예를 들어, 요청마다 다수의 행들을 세션 데이터베이스에 삽입한다. 예를 들어, 시계열 분석 요청에 응답하여, 세션 서버(2920)는 전체 요청에 대한 하나의 프로세스보다는 회사 및 예측의 각각의 조합(즉, 결과 테이블의 각각의 셀)에 대해 별개의 프로세스를 개시할 수 있다. 일부 실시예들에서, 웹 애플리케이션(2910) 클라이언트는 일련의 별개의 요청들을 개시하고; 일부 실시예들에서, 세션 서버(2920)는 분석 요청을 수신하고, 요구된 서브태스크들을 생성한다. 어느 경우이든, 별개의 태스크들은, 예를 들어 단일 JSON 블롭(blob)보다는 셀 단위로 결과들의 세트를 생성할 수 있어서, 결과들이 비동기적으로 어셈블리될 수 있게 한다.
세션 서버(2920)의 다른 컴포넌트들은 요청자들이 인가되고 데이터가 안전하다는 것을 보장하기 위한 인증 서비스들(2921)을 포함하고; 인증 서비스들(2921)은 사용자 데이터(2922)와 링크될 수 있다. 사용자 데이터베이스(2922)는 부가적으로 사용자의 코드(예를 들어, 스크리닝 표현들이 자동으로 저장되고 세션들에 걸쳐 이용가능함을 보장함), 선호도들 및/또는 인증 크리덴셜들을 저장할 수 있고, 캐싱 계층을 제공할 수 있다. 세션 데이터 서비스(2923)는 스크리닝 결과들(2934)의 캐싱을 포함하는 사용자의 세션 데이터를 관리한다. 예를 들어, 스크린을 실행하는 사용자의 경우, 사용자가 도메인-특정 언어로 코드를 기록할 때, 세션 데이터 서비스(2923)는 세션 데이터베이스에 코드에 대한 행을 삽입할 수 있다. 일부 실시예들에서, 세션 데이터 서비스는 업데이트들을 위해 폴링한다. 요청된 데이터가 (예를 들어, 컴파일러/해석기(2930)로부터) 로딩될 때, 세션 데이터 서비스(2923)는 데이터를 캐싱하고 웹 애플리케이션(2910)을 결과들로 업데이트한다.
또한, 세션 서버(2920)는 콘텍스트 데이터(2924)를 저장할 수 있다. 콘텍스트 데이터(2924)는, 예를 들어, 맞춤 유니버스들(각각은, 예를 들어, 유니버스의 명칭, 유니버스를 정의하는 파라미터들(예를 들어, 최소 시장 자본, 국가들, 특정 회사 이름들 등)을 포함함) 및/또는 맞춤 인덱스들(각각은 예를 들어, 인덱스의 이름 및 시계열 수익들(사용자가 업로드할 수 있음)을 포함함)을 포함할 수 있다. 콘텍스트 데이터(2924)는 더 용이한 협력을 허용하고 복제 또는 동기화 문제들을 최소화하기 위해 사용자들 사이에서 공유될 수 있다.
예시된 실시예에서, 세션 서버(2920)는 컴파일러/해석기(2930)와 별개이다. 세션 데이터를 별개로 저장하는 것은 이점들을 제공할 수 있다. 예를 들어, 이는 사용자 분석들 및/또는 원격 측정(telemetry)을 위해 데이터가 더 쉽게 청취가능하게 허용할 수 있다. 또한, 이는 어떤 데이터가 어떤 사람들에 의해 - 단지 어떤 패키지뿐만 아니라 필드 맵핑(field mapping)과 같은 세분화된 데이터 - 가장 많이 사용되는지에 대한 보고를 가능하게 할 수 있으며, 이는 비용들을 감소시키는 것을 도울 수 있다. 따라서, 개시된 기술의 구조는, 종래의 백엔드 데이터베이스 질의들을 실행할 때 일반적으로 가능하지 않은 성찰 및 분석을 가능하게 한다.
또한, 컴파일러/해석기(2930)가 별개의 서버이기 때문에 그리고 도메인-특정 언어가 사용자가 달성하려고 시도하는 것에 대한 콘텍스트를 제공하고 예상된 결과들이 검증가능하고 복제가능하기 때문에, 개시된 시스템은 시스템 관리자가 프로그래밍 언어의 전통적인 제약들 없이 언어 특징 업데이트들을 행할 수 있게 한다. 이는, 새로운 특징들이 사용자들에게 더 빨리 전달되는 것을 가능하게 하는데, 그 이유는, 도메인-특정 언어의 구조 및 그의 맥락적 이해는, 관리자가, 새로운 특징들이 (종래 언어들의 새로운 버전들에서 통상적인 바와 같이) 결코 깨지지 않는 것을 보장할 수 있게 할 수 있기 때문이다.
컴파일러/해석기(2930)는 스크리닝 검색들, 백테스트들, 및/또는 분석 모델링에 대한 실제 요청들을 수행하는 것을 담당하는 작업자이다. 개략도는 단순화된 논리 표현이고; 당업자는, 컴파일러/해석기(2930)가, 예로서, 요구되는 데이터 프로세싱, 로드 밸런싱/큐 관리 등을 수행하기 위한 분산형 컴퓨팅 자원들을 포함할 수 있다는 것을 이해할 것이다. 또한, 컴파일러/해석기(2930)로부터 세션 서버(2920)의 예시된 분리는, 사용자들을 이해할 필요가 없지만 데이터 소스들을 이해할 필요가 있는 컴파일러/해석기(2930)에 유리하다.
예시된 실시예에서, 스크리닝 모델(2935)은 그것이 사용자의 코드를 (예를 들어, 전체적으로) 추상 신택스 트리(AST)(2932)로 파싱하기 위해 사용하는 문법(2931)을 포함하거나 참조한다. 스크리닝 모델(2935)은 각각의 라인에 (예를 들어, 순서대로) 표현들을 포함하는 각각의 라인(2933)을 평가한다. 이는 각각의 라인에 대해, AST를 해석한다. 스크리닝 모델(2935)은 데이터를 획득하기 위해 하나 이상의 데이터베이스들(이용가능하다면 캐시들을 포함함)에 연결되고, 각각의 라인에 대해 결과 세트(2934)를 연속적으로 구축한다. 스크리닝 모델(2935)은 결과 세트(2934)를 세션 데이터 서비스(2923) 결과 데이터베이스에 삽입한다.
예시된 실시예에서, 백테스팅 모델(2936)은 백테스트 특정 로직(2937)을 통해 실행될 뿐만 아니라 스크리닝 모델(2935) 컴포넌트들을 공유한다. 백테스팅 모델(2936)은 스크리닝 모델(2935)뿐만 아니라 다양한 데이터베이스 최적화들(스냅샷 뿐만 아니라 일부 계산들을 데이터 저장소에 더 가깝도록 분담하는 것을 포함함)을 활용한다. 백테스트가 실행될 때, 이는 종종, 매수/매도 기준들의 세트에 따라 시간이 지남에 따라 재밸런싱된다. 이러한 기준들은 스크리닝 기준들로서 표현될 수 있다. 따라서, 사용자가 스크린을 구성한다면, 어떠한 부가적인 구성도 없이, 사용자들은 한 번의 클릭만큼 적게 그 스크리닝 코드에 기초하여 백테스트를 즉시 실행할 수 있다.
이어서, 컴파일러/해석기(2930)는, 백테스팅 모델(2936)의 재밸런싱 단계들의 일부로서 코드를 실행하기 전에 코드를 최적화하기 위해, (그들이 백테스트를 실행하기를 원한다는) 사용자의 의도의 시맨틱 이해를 활용한다. 예를 들어, 데이터 태그 또는 표현이 백테스트의 맥락 내에서 - 아마도 예비 스크리닝 세션으로부터의 잔여 열이거나 또는 오직 최종 사용자에 대한 디스플레이 목적들을 위해 계산됨 - 로 결정되면, 백테스팅 모델(2936)은 스트리핑할 수 있거나 또는 그렇지 않으면, 백테스트를 실행하기 전에 그 코드를 제외할 수 있는데, 왜냐하면 그것이 백테스트에 대한 필터링 기준들 또는 인자 가중치들에 의미있게 영향을 미치지 않을 것이기 때문이다. 이에 반해, 일반화된 프로그래밍 언어를 사용하여 실행되는 백테스트는 이러한 의미론적 이해(풀 다운된 데이터 일부 또는 수행된 분석들의 일부는 사용자가 수행할 현재 액션에 의미있는 영향을 미치지 않음)가 결여되어 있으며, 따라서 이는 이러한 종류의 최적화는 종래의 수단을 사용하여 자동으로 수행될 수 없다.
다양한 실시예들에서(예를 들어, 여러 연도들에 걸쳐 백테스트를 실행하기 위해), 백테스팅 모델(2936)은 백테스트를 서브-컴포넌트들로 분해하고, 이들을 (예를 들어, 월별로 또는 수익들을 계산하는 등을 위해) 병렬화(2938)한다.
부가적인 모델들(2939)(예를 들어, 시계열 분석 프로세싱 모델)이 유사하게, 컴파일러/해석기(2930)에 의해 실행되고, 세션 서버(2920)에 전송되는 결과들의 세트들을 생성한다. 요구되는 최소의 콘텍스트로, 동일한 도메인-특정 언어가 컴파일러/해석기(2930)에 의해 제공되는 모델들 모두에 적용가능하다.
일부 실시예들에서, 캐싱을 촉진시키기 위해, 요청은 두 번, 즉, 제1 시간에 데이터 태그들을 수집 및 프리페치하기 위해 그리고 제2 시간에 요청을 실제로 평가하기 위해 컴파일러/해석기(2930)를 통해 실행될 수 있다. 이는 데이터 저장소가 제1 실행에서 결과들을 효과적으로 캐싱하는 것을 가능하게 할 수 있다.
백엔드 데이터는 최적화되지 않은 데이터 저장소들(2945) 및 최적화된 데이터베이스들(2940) 둘 모두를 포함할 수 있다. 예를 들어, 일반적으로 액세스되는 데이터는 특히 가장 일반적인 질의들에 대해 신속한 검색을 위해 최적화될 수 있다. 최적화된 데이터베이스(2940) 컴포넌트들은, 질의 시간을 감소시키기 위해, 예를 들어, 상이한 데이터세트들에 대한 경량 판독-액세스 테이블들(2941) 및 (예를 들어, 특정 수의 년들로 되돌아가는 "오늘" 및 "이달 말"에 대한) 시점 스냅샷들(2942)을 포함할 수 있다. 구조화되지 않은 데이터(예를 들어, 10-K 파일링들)는 더 최적화되도록 프로세싱될 수 있다. 그러나 최적화는 바이너리가 아니며; 예를 들어, 특허 정보는 대량의 구조화되지 않은 텍스트를 포함하지만, 파일링들은 또한, 예컨대, 이름 유사성(단지 정적 데이터에 대한 링크가 아님)을 통해 이들을 회사들에 링크하도록 프로세싱될 수 있다. 따라서, 그러한 데이터베이스들은 보안 이름들 또는 식별자들과 정확히 매칭할 필요가 없으며, 그럼에도 불구하고, 이들은 다른 방식들로 "연결"될 수 있다.
최적화는 단지 개선된 성능을 제공하기 위한 도구가 아니라, 개시된 시스템들의 구조에 의해 제공되는 이점이다. 통상적으로, 데이터 세트에 대해 질의를 실행하는(예를 들어, 백테스트 요청을 실행하는) 사람은, 상이한 목표들을 갖는 사용자들로부터의 질의들을 충족시키고 데이터베이스에 액세스하는 일반화된 프로그래밍 언어들을 처리해야 하는 큰 데이터 저장소인 기본 데이터베이스에 대해 어떠한 제어도 갖지 않는다. 이에 반해, 개시된 기술은 표현력이 높은 상태로 유지되면서 사용 사례들 및 액세스 패턴들에 상당한 제약들을 부과하며, 이는 성능이 우수한 결과들 및 보다 사용자 친화적인 인터페이스들을 생성하는 최적화들을 가능하게 한다.
일부 실시예들에서, 시스템의 데이터 저장소들 및 다른 요소들은 완전히 확장가능하고 통합들에 개방적이다. 예를 들어, API 준수로 임의의 데이터베이스에 대한 원격 액세스가 가능하며, 임의의 제공자가 인터페이스를 구현할 수 있다. 데이터 자체는 언어가 특정되는 도메인을 특정하지만, 데이터 서버는 특정된 인터페이스를 준수하면 "단지 작동"한다. 유사하게, 확장성은, 데이터 태그들의 세트들(도메인-특정 언어로 정의되든, 맞춤으로 정의되든, 유도되든 또는 심지어 자기-참조로 정의되든, 표준화된 포맷으로); 추가적인 변형들; 맞춤 보고 템플릿들(예를 들어, 백테스트들 또는 스크리닝의 결과들); 결과들(예를 들어, 표준화된 JSON 포맷으로 리턴됨); (예를 들어, 불릿 HTML 리스트로서 문자열들의 어레이를 디스플레이 하기 위한) 뷰들; 및 심지어 모델들(예를 들어, 각각의 모델에 대한 별개의 세션 데이터베이스 엔드포인트를 제공함)에 적용될 수 있다. 예를 들어, 뷰들은 HTML로서 또는 데이터 구조로 웹 애플리케이션(2910)에 다시 전달될 수 있으며, 이는 데이터가 자신의 콘텐츠 또는 콘텍스트에 기초하여 특별히 렌더링될 수 있게 한다. 따라서, URL들은 링크들로서 디스플레이될 수 있고, 값들의 어레이들은 그래프들로서 취급될 수 있고, 이름이 "Score" 또는 "Ranking"으로 끝나는 변수들에 대한 값들은, 예를 들어 히트맵 색상 구배와 함께 디스플레이될 수 있다. 본질적으로, 임의의 데이터 태그, 임의의 기능, 임의의 모델 및 임의의 보고가 개시된 완전히 확장가능한 시스템에 통합될 수 있다. 도메인-특정 언어들에 대한 기본 연산자들은 동일하게 유지될 수 있지만, 새로운 데이터 유형들, 처리들 및 변환들은 상이한 도메인들 또는 클라이언트들에 대해 맞춤화될 수 있다.
본 명세서에서는 특정 실시예들이 예시되고 설명되었지만, 본 개시내용의 범위를 벗어나지 않으면서 도시 및 설명된 특정 실시예들을 대안적인 그리고/또는 등가의 구현들이 대체될 수 있음이 당업자들에 의해 인식될 것이다.
예를 들어, 다양한 실시예들이 하나 이상의 서버들에 의해 원격 클라이언트에 제공되는 신속한 스크리닝 시스템 및/또는 서비스의 관점들에서 전술되지만, 다른 실시예들에서, 본 명세서에서 설명된 것들과 유사한 스크리닝 방법들이 로컬 또는 원격 코퍼스 내에서 결과들을 찾아 디스플레이하기 위해 클라이언트 컴퓨터 상에서 로컬로 이용될 수 있다.
유사하게, 다양한 실시예들이 주식들 또는 다른 증권들(예를 들어, 부채 증서들, 암호화폐 등)의 스크리닝을 가능하게 하는 스크리닝 시스템 또는 서비스의 관점들에서 전술되었지만, 다른 실시예들은 다른 전문화된 지식 도메인, 예컨대, 부동산, 광고, 건강관리 진단들, 약물 연구, 고용, 판타지 스포츠, 영화들, 과학 데이터, 사진들 등의 데이터의 스크리닝 또는 윈나우잉을 허용하기 위해 유사한 기술들을 사용할 수 있다. 몇몇 예들로서, 백테스팅은 주어진 조건들의 세트에서 상이한 약물들의 시뮬레이션들을 실행할 수 있고; 지질학적 데이터의 도메인에 적용되는 스크리닝 시스템은 석유 시추 장소들에 대한 검색을 개선할 수 있으며; 부동산에 적용된 시스템은 과소평가된 주택 구매 기회들을 찾을 수 있고; 암에 대한 스크리닝에 적용되는 시스템은, 샘플들에서 복잡한 분석들을 즉시 수행하고 조사를 위한 유망한 방법들 및 추세들을 식별하는 개선된 능력을 제공할 수 있다. 다른 실시예들에서, 개시된 기술로 다양한 다른 애플리케이션들이 이루어질 수 있다. 본 출원은 본 명세서에서 논의되는 실시예들의 임의의 적응들 또는 변형들을 커버하도록 의도된다.

Claims (20)

  1. 동적 데이터 세트의 대화형 탐색, 필터링 및 분석을 위해 도메인-특정 언어를 해석하기 위한 컴퓨팅 장치로서, 상기 장치는 프로세서 및 명령어들을 저장하는 메모리를 포함하고, 상기 명령어들은, 상기 프로세서에 의해 실행될 때,
    사용자가 임의의 시간에 임의의 라인에 입력을 입력 및 편집할 수 있게 하는 멀티 라인(multi-line) 편집기 사용자 입력 인터페이스를 제공하고;
    그리드 뷰 디스플레이 인터페이스를 제공하고;
    계속적으로, 상기 사용자가 상기 멀티 라인 편집기 입력 인터페이스에 제1 표현을 포함하는 입력을 입력할 때,
    상기 도메인-특정 언어에 대해 상기 제1 표현을 파싱하고 - 상기 도메인-특정 언어는 복수의 데이터 태그들 및 복수의 동작들을 포함하고, 각각의 데이터 태그는 상기 데이터 세트의 복수의 식별자들 각각에 대한 적어도 하나의 값과 연관되고, 각각의 동작은 데이터 태그-연관 값들에 적용될 수 있고,
    상기 파싱은, 상기 제1 표현에서, 상기 도메인-특정 언어의 데이터 태그 및 상기 도메인-특정 언어에 제공된 동작을 인식하는 것을 포함함 -;
    상기 파싱된 표현을 실행하고 - 상기 실행하는 것은,
    상기 복수의 식별자들 중에서, 상기 파싱된 표현이 적용될 식별자들의 제1 서브세트를 결정하는 것;
    상기 인식된 데이터 태그와 연관된 하나 이상의 데이터 소스들을 식별하는 것;
    상기 식별된 데이터 소스들 중 적어도 하나로부터 상기 인식된 데이터 태그와 연관된 값들을 로딩하는 것; 및
    식별자들의 제2 서브세트에 대한 결과 값들을 생성하기 위해, 상기 로딩된 값들에 상기 동작을 적용하는 것을 포함하고, 각각의 결과 값은 상기 식별자들의 제2 서브세트의 식별자와 연관됨 -;
    상기 식별자들의 제2 서브세트에 대한 상기 결과 값들의 라이브 디스플레이로 상기 그리드 뷰 디스플레이 인터페이스를 업데이트하도록 상기 장치를 구성하고, 상기 업데이트하는 것은 각각의 디스플레이된 식별자에 대해, 상기 결과 값들의 연관된 값을 상기 그리드 뷰 디스플레이 인터페이스에 추가하는 것을 포함하여,
    상기 그리드 뷰 디스플레이 인터페이스는 상기 멀티 라인 편집기 사용자 입력 인터페이스의 현재 콘텐츠들에 따라 즉시 업데이트되는, 컴퓨팅 장치.
  2. 제1항에 있어서, 상기 파싱된 표현이 적용되는 상기 식별자들의 제1 서브세트가 식별자들의 지정된 유니버스(universe)인 것으로 결정되도록, 상기 멀티 라인 편집기 입력 인터페이스를 통해, 상기 식별자들의 유니버스를 지정하는 사용자 입력을 수신하는 것을 더 포함하는, 컴퓨팅 장치.
  3. 제1항에 있어서, 상기 파싱된 표현이 적용되는 상기 식별자들의 제1 서브세트가 선행 표현으로부터 얻어지는 식별자들의 서브세트인 것으로 결정되도록, 상기 선행 표현을 포함하는 표현들은 상기 멀티 라인 편집기 입력 인터페이스 내의 다수의 라인들 상에서 수신하는 것을 더 포함하는, 컴퓨팅 장치.
  4. 제1항에 있어서, 상기 식별자들의 제2 서브세트에 대한 결과 값들이 기존 스크린으로부터의 출력에 기초하도록, 상기 제1 표현은 상기 기존 스크린으로부터의 출력을 참조하는 데이터 태그를 포함하는, 컴퓨팅 장치.
  5. 제1항에 있어서, 상기 인식된 데이터 태그와 연관된 하나 이상의 데이터 소스들을 식별하는 것은, 데이터 소스를 명시적으로 특정하도록 상기 사용자에게 요구하지 않으면서 자동으로 수행되는, 컴퓨팅 장치.
  6. 제1항에 있어서, 상기 식별자들의 제2 서브세트에 대한 상기 결과 값들을 새로운 자동으로 명명된 데이터 태그에 할당하는 것을 더 포함하는, 컴퓨팅 장치.
  7. 제1항에 있어서, 상기 동작은 상기 식별자들의 제2 서브세트에 대한 상기 결과 값들을 새로운 사용자 명명된 데이터 태그에 할당하는 것을 포함하는, 컴퓨팅 장치.
  8. 제7항에 있어서, 상기 새로운 사용자 명명된 데이터 태그가 상기 도메인-특정 언어로 상기 복수의 데이터 태그들 중 하나로서 기능하도록, 상기 새로운 사용자 명명된 데이터 태그를 포함하는 다른 표현을 파싱하는 것을 더 포함하는, 컴퓨팅 장치.
  9. 제1항에 있어서, 상기 동작은, 상기 제2 서브세트가 상기 제1 서브세트와 동일한 식별자들을 포함하도록, 상기 제1 서브세트 내의 각각의 식별자에 대한 결과 값을 생성하는, 컴퓨팅 장치.
  10. 제9항에 있어서, 상기 동작은, 데이터 태그-연관된 값들을 특성화하는 메타데이터를 포함하는 결과 값들을 생성하는 변환이고, 상기 변환은, 평균 또는 중앙값에 의한 평균화, 랭킹, 5분위수 또는 10분위수들로의 버킷화, 표준화, 또는 추세 또는 추세 안정성 표시 중 하나인, 컴퓨팅 장치.
  11. 제1항에 있어서, 상기 동작은, 상기 식별자들의 제2 서브세트가 상기 제1 서브세트보다 적은 식별자들을 포함하는 상기 제1 서브세트의 적절한 서브세트가 되도록, 상기 표현이 적용되는 상기 식별자들의 제1 서브세트를 필터링하고; 상기 그리드 뷰 디스플레이 인터페이스를 업데이트하는 것은 상기 식별자들의 제1 서브세트 대신에 상기 식별자들의 제2 서브세트를 디스플레이하는 것 또는 상기 그리드 뷰 디스플레이 인터페이스로부터 상기 식별자들의 제2 서브세트에 포함되지 않은 식별자들을 제거하는 것을 더 포함하는, 컴퓨팅 장치.
  12. 제1항에 있어서, 상기 멀티 라인 편집기 입력 인터페이스에 입력된 각각의 표현 또는 데이터 태그는 상기 그리드 뷰 디스플레이 인터페이스에 디스플레이된 정보의 열에 대응하는, 컴퓨팅 장치.
  13. 제12항에 있어서, 상기 그리드 뷰 디스플레이 인터페이스를 업데이트하는 것은 상기 그리드 뷰 디스플레이 인터페이스에 상기 결과 값들에 대한 열을 삽입하는 것을 포함하고; 상기 사용자가 상기 멀티 라인 편집기 입력 인터페이스로부터 라인 또는 데이터 태그를 삭제할 때, 상기 그리드 뷰 디스플레이 인터페이스로부터 대응하는 열을 제거하는 것을 더 포함하는, 컴퓨팅 장치.
  14. 제1항에 있어서, 상기 그리드 뷰 디스플레이 인터페이스를 업데이트하는 것은, 변환 또는 데이터 태그 명칭에 기초하여, 상기 그리드 뷰 디스플레이 인터페이스에서의 값들의 히트 맵(heat map)을 디스플레이하는 것을 포함하는, 컴퓨팅 장치.
  15. 제1항에 있어서, 데이터 태그는 각각의 식별자에 대한 구조화된 데이터 또는 값들의 어레이와 연관되고, 상기 그리드 뷰 디스플레이 인터페이스를 업데이트하는 것은 상기 구조화된 데이터 또는 값들의 어레이의 유형을 결정하는 것 및 연속적인 값들의 그래프 또는 소스 문서에 대한 링크를 상기 그리드 뷰 디스플레이 인터페이스에 자동으로 디스플레이하는 것을 포함하는, 컴퓨팅 장치.
  16. 제1항에 있어서, 계속적으로 상기 파싱, 실행, 및 업데이트하는 것은, 상기 사용자가 상기 멀티 라인 편집기 입력 인터페이스에서 상기 제1 표현을 편집할 때, 상기 사용자의 편집들을 반영하기 위해 상기 디스플레이된 결과 값들을 변경하는 것을 포함하는, 컴퓨팅 장치.
  17. 명령어들이 저장된 컴퓨터 판독가능 저장 매체로서, 상기 명령어들은, 프로세서에 의해 실행될 때,
    사용자가 임의의 시간에 임의의 라인에 입력을 입력 및 편집할 수 있게 하는 멀티 라인 편집기 사용자 입력 인터페이스를 제공하고;
    그리드 뷰 디스플레이 인터페이스를 제공하고;
    계속적으로, 상기 사용자가 상기 멀티 라인 편집기 입력 인터페이스에 제1 표현을 포함하는 입력을 입력할 때,
    도메인-특정 언어에 대해 상기 제1 표현을 파싱하고 - 상기 도메인-특정 언어는 복수의 데이터 태그들 및 복수의 동작들을 포함하고, 각각의 데이터 태그는 데이터 세트의 복수의 식별자들 각각에 대한 적어도 하나의 값과 연관되고, 각각의 동작은 데이터 태그-연관 값들에 적용될 수 있고,
    상기 파싱은, 상기 제1 표현에서, 상기 도메인-특정 언어의 데이터 태그 및 상기 도메인-특정 언어에 제공된 동작을 인식하는 것을 포함함 -;
    상기 파싱된 표현을 실행하고 - 상기 실행하는 것은,
    상기 복수의 식별자들 중에서, 상기 파싱된 표현이 적용될 식별자들의 제1 서브세트를 결정하는 것;
    상기 인식된 데이터 태그와 연관된 하나 이상의 데이터 소스들을 식별하는 것;
    상기 식별된 데이터 소스들 중 적어도 하나로부터 상기 인식된 데이터 태그와 연관된 값들을 로딩하는 것; 및
    식별자들의 제2 서브세트에 대한 결과 값들을 생성하기 위해, 상기 로딩된 값들에 상기 동작을 적용하는 것을 포함하고, 각각의 결과 값은 상기 식별자들의 제2 서브세트의 식별자와 연관됨 -;
    상기 식별자들의 제2 서브세트에 대한 상기 결과 값들의 라이브 디스플레이로 상기 그리드 뷰 디스플레이 인터페이스를 업데이트하도록 상기 프로세서를 구성하고, 상기 업데이트하는 것은 각각의 디스플레이된 식별자에 대해, 상기 결과 값들의 연관된 값을 상기 그리드 뷰 디스플레이 인터페이스에 추가하는 것을 포함하여,
    상기 그리드 뷰 디스플레이 인터페이스는 상기 멀티 라인 편집기 사용자 입력 인터페이스의 현재 콘텐츠들에 따라 즉시 업데이트되는, 컴퓨터 판독가능 저장 매체.
  18. 제17항에 있어서, 자연어 입력으로부터, 상기 도메인-특정 언어의 제1 표현을 생성하고 상기 제1 표현을 상기 멀티 라인 편집기 사용자 입력 인터페이스에 삽입하도록 구성된 자연어 사용자 인터페이스를 더 포함하는, 컴퓨터 판독가능 저장 매체.
  19. 제17항에 있어서,
    백테스트(backtest)를 수행하기 위한 사용자-선택가능 옵션을 제공하는 것; 및 상기 옵션의 사용자 선택에 응답하여,
    이력 데이터에 대해 상기 파싱된 표현에 기초하여 증권들을 선택하는 상기 백테스트를 수행하는 것을 더 포함하고;
    상기 멀티 라인 편집기 사용자 입력 인터페이스는 계속해서 상기 사용자가 임의의 시간에 임의의 라인에 입력을 입력 및 편집할 수 있게 하고;
    상기 백테스트를 수행하는 것은 계속적으로 상기 파싱, 실행, 및 업데이트에 영향을 미치지 않는, 컴퓨터 판독가능 저장 매체.
  20. 제17항에 있어서, 상기 제1 표현의 인쇄상의 에러 또는 불완전한 입력에 응답하여, 상기 멀티 라인 편집기 사용자 입력 인터페이스는 의미론적으로 정확한 에러 처리 제안을 디스플레이하는, 컴퓨터 판독가능 저장 매체.
KR1020227044706A 2020-05-24 2021-05-25 신속한 스크리닝을 위한 도메인-특정 언어 해석기 및 대화형 시각적 인터페이스 KR102565455B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237026744A KR20230121164A (ko) 2020-05-24 2021-05-25 신속한 스크리닝을 위한 도메인-특정 언어 해석기 및대화형 시각적 인터페이스

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063029556P 2020-05-24 2020-05-24
US63/029,556 2020-05-24
PCT/IB2021/054548 WO2021240370A1 (en) 2020-05-24 2021-05-25 Domain-specific language interpreter and interactive visual interface for rapid screening

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237026744A Division KR20230121164A (ko) 2020-05-24 2021-05-25 신속한 스크리닝을 위한 도메인-특정 언어 해석기 및대화형 시각적 인터페이스

Publications (2)

Publication Number Publication Date
KR20230003662A KR20230003662A (ko) 2023-01-06
KR102565455B1 true KR102565455B1 (ko) 2023-08-08

Family

ID=78608102

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020227044706A KR102565455B1 (ko) 2020-05-24 2021-05-25 신속한 스크리닝을 위한 도메인-특정 언어 해석기 및 대화형 시각적 인터페이스
KR1020237026744A KR20230121164A (ko) 2020-05-24 2021-05-25 신속한 스크리닝을 위한 도메인-특정 언어 해석기 및대화형 시각적 인터페이스

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020237026744A KR20230121164A (ko) 2020-05-24 2021-05-25 신속한 스크리닝을 위한 도메인-특정 언어 해석기 및대화형 시각적 인터페이스

Country Status (8)

Country Link
US (3) US11328119B2 (ko)
EP (1) EP4154108A1 (ko)
JP (2) JP7389522B2 (ko)
KR (2) KR102565455B1 (ko)
CN (1) CN116235144A (ko)
AU (1) AU2021281120A1 (ko)
CA (1) CA3179300C (ko)
IL (1) IL298508A (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021158300A1 (en) * 2020-02-03 2021-08-12 nQ Medical, Inc. Methods and apparatus for assessment of health condition or functional state from keystroke data
US11769009B2 (en) * 2021-02-22 2023-09-26 International Business Machines Corporation Using domain specific vocabularies to spellcheck input strings
US11900061B2 (en) * 2021-04-14 2024-02-13 Microsoft Technology Licensing, Llc Intelligent interpretation of temporal expressions
US20230237409A1 (en) * 2022-01-27 2023-07-27 Reorg Research, Inc. Automatic computer prediction of enterprise events
US20230281194A1 (en) * 2022-01-31 2023-09-07 Walmart Apollo, Llc Systems and methods for detecting and resolving ambiguous search queries
US20230306061A1 (en) * 2022-03-22 2023-09-28 Paypal, Inc. Automated database query generation and analysis

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120079363A1 (en) 2005-09-09 2012-03-29 Microsoft Corporation Filtering User Interface for a Data Summary Table
US20140189548A1 (en) 2013-01-03 2014-07-03 Ca, Inc. Domain specific language user interface
US20140279865A1 (en) 2013-03-15 2014-09-18 Palantir Technologies, Inc. Filter chains with associated multipath views for exploring large data sets
US20190012736A1 (en) 2007-01-31 2019-01-10 Experian Information Solutions, Inc. System and method for providing an aggregation tool

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330622A (ja) 1999-05-19 2000-11-30 Mitsubishi Heavy Ind Ltd 遠隔操作可能な演算式システム
US6742015B1 (en) 1999-08-31 2004-05-25 Accenture Llp Base services patterns in a netcentric environment
JP3774371B2 (ja) 2001-02-28 2006-05-10 株式会社東芝 解析装置、方法及びプログラム
WO2003065252A1 (en) 2002-02-01 2003-08-07 John Fairweather System and method for managing memory
JP2004046657A (ja) 2002-07-15 2004-02-12 Answer:Kk 計算支援方法とその装置、及び計算支援ソフト
US8131748B2 (en) 2006-05-12 2012-03-06 Sap Ag Search query formulation
US9400825B2 (en) 2013-05-23 2016-07-26 Strategy Companion Corporation Pivot analysis method using condition group
JP5758534B1 (ja) 2014-09-09 2015-08-05 インテグラート株式会社 シミュレーションシステム、シミュレーション方法及びシミュレーションプログラム
AU2015360437A1 (en) * 2014-12-10 2017-06-29 Kyndi, Inc. Technical and semantic signal processing in large, unstructured data fields

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120079363A1 (en) 2005-09-09 2012-03-29 Microsoft Corporation Filtering User Interface for a Data Summary Table
US20190012736A1 (en) 2007-01-31 2019-01-10 Experian Information Solutions, Inc. System and method for providing an aggregation tool
US20140189548A1 (en) 2013-01-03 2014-07-03 Ca, Inc. Domain specific language user interface
US20140279865A1 (en) 2013-03-15 2014-09-18 Palantir Technologies, Inc. Filter chains with associated multipath views for exploring large data sets

Also Published As

Publication number Publication date
CN116235144A (zh) 2023-06-06
AU2021281120A1 (en) 2022-12-22
CN116235144A8 (zh) 2024-02-27
KR20230003662A (ko) 2023-01-06
US11328119B2 (en) 2022-05-10
EP4154108A1 (en) 2023-03-29
JP2023526116A (ja) 2023-06-20
CA3179300C (en) 2024-02-27
KR20230121164A (ko) 2023-08-17
JP7389522B2 (ja) 2023-11-30
JP2024037719A (ja) 2024-03-19
IL298508A (en) 2023-01-01
CA3179300A1 (en) 2021-12-02
US11893341B2 (en) 2024-02-06
US20210365630A1 (en) 2021-11-25
US20220269853A1 (en) 2022-08-25
US20240119225A1 (en) 2024-04-11

Similar Documents

Publication Publication Date Title
KR102565455B1 (ko) 신속한 스크리닝을 위한 도메인-특정 언어 해석기 및 대화형 시각적 인터페이스
Xu et al. Survey on the analysis of user interactions and visualization provenance
US11068661B1 (en) Applied artificial intelligence technology for narrative generation based on smart attributes
Belyadi et al. Machine learning guide for oil and gas using Python: A step-by-step breakdown with data, algorithms, codes, and applications
US20230161970A1 (en) Applied Artificial Intelligence Technology for Narrative Generation Based on a Conditional Outcome Framework
US10430035B2 (en) Embedded analytics for applications and interfaces across multiple platforms
US7747641B2 (en) Modeling sequence and time series data in predictive analytics
US20150170382A1 (en) Systems and methods for automatic interactive visualizations
US11748557B2 (en) Personalization of content suggestions for document creation
US11568148B1 (en) Applied artificial intelligence technology for narrative generation based on explanation communication goals
US20080244510A1 (en) Visual creation of object/relational constructs
US11531673B2 (en) Ambiguity resolution in digital paper-based interaction
US11726997B2 (en) Multiple stage filtering for natural language query processing pipelines
Bhatia et al. Machine Learning with R Cookbook: Analyze data and build predictive models
Strickland Data analytics using open-source tools
Viswanathan et al. R: Recipes for analysis, visualization and machine learning
US11726994B1 (en) Providing query restatements for explaining natural language query results
WO2021240370A1 (en) Domain-specific language interpreter and interactive visual interface for rapid screening
Liu Apache spark machine learning blueprints
US11954445B2 (en) Applied artificial intelligence technology for narrative generation based on explanation communication goals
US11977551B2 (en) Digital paper based interaction to system data
US11315590B2 (en) Voice and graphical user interface
Yu-Wei R for data science cookbook
Yunhasnawa et al. Analysis of System Requirements and Architecture for Facilitating Table-Based Data Clustering for Non-Technical Users
Malavolta “Enzo Ferrari” Engineering Department

Legal Events

Date Code Title Description
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant