U.S. patent application number 17/486368 was filed with the patent office on 2022-01-13 for data structures for transfer and processing of financial data.
The applicant listed for this patent is Nvstr Technologies Inc.. Invention is credited to Patrick J. Aber, Bernard M. George.
Application Number | 20220012809 17/486368 |
Document ID | / |
Family ID | |
Filed Date | 2022-01-13 |
United States Patent
Application |
20220012809 |
Kind Code |
A1 |
Aber; Patrick J. ; et
al. |
January 13, 2022 |
DATA STRUCTURES FOR TRANSFER AND PROCESSING OF FINANCIAL DATA
Abstract
An example computer-implemented method includes retrieving, by
at least one processor, one or more first data structures
pertaining to a current state of a financial portfolio of a first
user, one or more second data structures pertaining to one or more
historical and/or current states of a financial market, one or more
third data structures pertaining to one or more predictions
regarding one or more financial assets of the financial market, and
one or more fourth data structures pertaining to the first user's
preferences with respect to the financial portfolio. The method
also includes determining, by the at least one processor, one or
more transactions to be conducted on the financial market based on
the first, second, third, and fourth data structures. The method
also includes executing, by the at least one processor, the one or
more transactions.
Inventors: |
Aber; Patrick J.; (New York,
NY) ; George; Bernard M.; (New York, NY) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Nvstr Technologies Inc. |
New York |
NY |
US |
|
|
Appl. No.: |
17/486368 |
Filed: |
September 27, 2021 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
15472004 |
Mar 28, 2017 |
11138667 |
|
|
17486368 |
|
|
|
|
62315470 |
Mar 30, 2016 |
|
|
|
International
Class: |
G06Q 40/06 20060101
G06Q040/06; G06Q 40/04 20060101 G06Q040/04 |
Claims
1.-23. (canceled)
24. A computer-implemented method comprising: storing and
retrieving, by at least one processor via a computer network, one
or more first data structures, the one or more first data
structures representing a current state of a financial portfolio of
a first user and the first user's preferences with respect to the
financial portfolio; storing and retrieving, by the at least one
processor via a computer network, one or more second data
structures, the one or more second data structures representing a
plurality of predictions regarding one or more financial assets of
a financial market from a plurality of second users different from
the first user, wherein the second users are determined, at least
in part, by: determining a similarity between the first user's
preferences regarding management of the financial portfolio and
each of the second users' preferences regarding management of their
respective financial portfolios, and determining a similarity
between a composition of the financial portfolio of the first user
and a composition of the financial portfolios of each of the second
users; displaying, by the at least one processor, at least two of
the predictions concurrently to the first user on a graphical user
interface rendered on a display device; receiving, by the at least
one processor via the graphical user interface, a user input
indicating that the user has activated a subset of the displayed
predictions; updating, by the at least one processor, the graphical
user interface to indicate, concurrently: the activated subset of
the displayed predictions, one or more first user interface
elements enabling the first user to inactivate one or more of the
predictions of the activated subset of the predictions, an
inactivated subset of the displayed predictions, and one or more
second user interface elements enabling the first user to activate
one or more of the predictions of the inactivated subset of the
predictions; determining, by the at least one processor, one or
more transactions to be conducted on the financial market based on
the one or more first data structures, the one or more second data
structures, and the activated subset of the displayed predictions;
and executing, by the at least one processor, the one or more
transactions, wherein an amount of data that is transmitted across
the computer network by storing and retrieving of the one or more
first data structures and the one or more second data structures is
reduced, relative to an amount of data that is transmitted across
the computer network by storing and retrieving unstructured data
indicating: the current state of the financial portfolio of the
first user, the first user's preferences with respect to the
financial portfolio, and the plurality of predictions of the one or
more second users.
25. The method of claim 24, wherein determining the similarity
between the first user's preferences regarding management of the
financial portfolio and each of the second users' preferences
regarding management of their respective financial portfolios
comprises: determining that the first user and each of the second
users have specified similar volatility targets with respect to
their financial portfolios.
26. The method of claim 24, wherein determining the similarity
between the first user's preferences regarding management of the
financial portfolio and each of the second users' preferences
regarding management of their respective financial portfolios
comprises: determining that the first user and each of the second
users have similar trading patterns with respect to their financial
portfolios.
27. The method of claim 24, wherein the one or more first user
interface elements comprise one or more first toggle control
elements, and wherein the one or more second user interface
elements comprise one or more second toggle control elements.
28. The method of claim 24, wherein the activated subset of the
displayed predictions are indicated by the graphical user interface
according to a first font style, and wherein the inactivated subset
of the displayed predictions are indicated by the graphical user
interface according to a second font style different from the first
font style.
29. The method of claim 24, wherein the activated subset of the
displayed predictions are indicated by the graphical user interface
using a first icon, and wherein the inactivated subset of the
displayed predictions are indicated by the graphical user interface
using a second icon different from the first icon.
30. The method of claim 24, wherein the activated subset of the
displayed predictions are indicated by the graphical user interface
according to a first color, and wherein the inactivated subset of
the displayed predictions are indicated by the graphical user
interface according to a second color different from the first
color.
31. A system comprising: one or more processors; and memory storing
instructions that when executed by the one or more processors,
cause the one or more processors to perform operations comprising:
storing and retrieving, via a computer network, one or more first
data structures, the one or more first data structures representing
a current state of a financial portfolio of a first user and the
first user's preferences with respect to the financial portfolio;
storing and retrieving, via a computer network, one or more second
data structures, the one or more second data structures
representing a plurality of predictions regarding one or more
financial assets of a financial market from a plurality of second
users different from the first user, wherein the second users are
determined, at least in part, by: determining a similarity between
the first user's preferences regarding management of the financial
portfolio and each of the second users' preferences regarding
management of their respective financial portfolios, and
determining a similarity between a composition of the financial
portfolio of the first user and a composition of the financial
portfolios of each of the second users; displaying at least two of
the predictions concurrently to the first user on a graphical user
interface rendered on a display device; receiving, via the
graphical user interface, a user input indicating that the user has
activated a subset of the displayed predictions; updating the
graphical user interface to indicate, concurrently: the activated
subset of the displayed predictions, one or more first user
interface elements enabling the first user to inactivate one or
more of the predictions of the activated subset of the predictions,
an inactivated subset of the displayed predictions, and one or more
second user interface elements enabling the first user to activate
one or more of the predictions of the inactivated subset of the
predictions; determining one or more transactions to be conducted
on the financial market based on the one or more first data
structures, the one or more second data structures, and the
activated subset of the displayed predictions; and executing the
one or more transactions, wherein an amount of data that is
transmitted across the computer network by storing and retrieving
of the one or more first data structures and the one or more second
data structures is reduced, relative to an amount of data that is
transmitted across the computer network by storing and retrieving
unstructured data indicating: the current state of the financial
portfolio of the first user, the first user's preferences with
respect to the financial portfolio, and the plurality of
predictions of the one or more second users.
32. The system of claim 31, wherein determining the similarity
between the first user's preferences regarding management of the
financial portfolio and each of the second users' preferences
regarding management of their respective financial portfolios
comprises: determining that the first user and each of the second
users have specified similar volatility targets with respect to
their financial portfolios.
33. The system of claim 31, wherein determining the similarity
between the first user's preferences regarding management of the
financial portfolio and each of the second users' preferences
regarding management of their respective financial portfolios
comprises: determining that the first user and each of the second
users have similar trading patterns with respect to their financial
portfolios.
34. The system of claim 31, wherein the one or more first user
interface elements comprise one or more first toggle control
elements, and wherein the one or more second user interface
elements comprise one or more second toggle control elements.
35. The system of claim 31, wherein the activated subset of the
displayed predictions are indicated by the graphical user interface
according to a first font style, and wherein the inactivated subset
of the displayed predictions are indicated by the graphical user
interface according to a second font style different from the first
font style.
36. The system of claim 31, wherein the activated subset of the
displayed predictions are indicated by the graphical user interface
using a first icon, and wherein the inactivated subset of the
displayed predictions are indicated by the graphical user interface
using a second icon different from the first icon.
37. The system of claim 31, wherein the activated subset of the
displayed predictions are indicated by the graphical user interface
according to a first color, and wherein the inactivated subset of
the displayed predictions are indicated by the graphical user
interface according to a second color different from the first
color.
38. One or more non-transitory, computer-readable storage media
having instructions stored thereon, that when executed by one or
more processors, cause the one or more processors to perform
operations comprising: storing and retrieving, via a computer
network, one or more first data structures, the one or more first
data structures representing a current state of a financial
portfolio of a first user and the first user's preferences with
respect to the financial portfolio; storing and retrieving, via a
computer network, one or more second data structures, the one or
more second data structures representing a plurality of predictions
regarding one or more financial assets of a financial market from a
plurality of second users different from the first user, wherein
the second users are determined, at least in part, by: determining
a similarity between the first user's preferences regarding
management of the financial portfolio and each of the second users'
preferences regarding management of their respective financial
portfolios, and determining a similarity between a composition of
the financial portfolio of the first user and a composition of the
financial portfolios of each of the second users; displaying at
least two of the predictions concurrently to the first user on a
graphical user interface rendered on a display device; receiving,
via the graphical user interface, a user input indicating that the
user has activated a subset of the displayed predictions; updating
the graphical user interface to indicate, concurrently: the
activated subset of the displayed predictions, one or more first
user interface elements enabling the first user to inactivate one
or more of the predictions of the activated subset of the
predictions, an inactivated subset of the displayed predictions,
and one or more second user interface elements enabling the first
user to activate one or more of the predictions of the inactivated
subset of the predictions; determining one or more transactions to
be conducted on the financial market based on the one or more first
data structures, the one or more second data structures, and the
activated subset of the displayed predictions; and executing the
one or more transactions, wherein an amount of data that is
transmitted across the computer network by storing and retrieving
of the one or more first data structures and the one or more second
data structures is reduced, relative to an amount of data that is
transmitted across the computer network by storing and retrieving
unstructured data indicating: the current state of the financial
portfolio of the first user, the first user's preferences with
respect to the financial portfolio, and the plurality of
predictions of the one or more second users.
39. The one or more non-transitory, computer-readable storage media
of claim 38, wherein determining the similarity between the first
user's preferences regarding management of the financial portfolio
and each of the second users' preferences regarding management of
their respective financial portfolios comprises: determining that
the first user and each of the second users have specified similar
volatility targets with respect to their financial portfolios.
40. The one or more non-transitory, computer-readable storage media
of claim 38, wherein determining the similarity between the first
user's preferences regarding management of the financial portfolio
and each of the second users' preferences regarding management of
their respective financial portfolios comprises: determining that
the first user and each of the second users have similar trading
patterns with respect to their financial portfolios.
41. The one or more non-transitory, computer-readable storage media
of claim 38, wherein the one or more first user interface elements
comprise one or more first toggle control elements, and wherein the
one or more second user interface elements comprise one or more
second toggle control elements.
42. The one or more non-transitory, computer-readable storage media
of claim 38, wherein the activated subset of the displayed
predictions are indicated by the graphical user interface according
to a first font style, and wherein the inactivated subset of the
displayed predictions are indicated by the graphical user interface
according to a second font style different from the first font
style.
43. The one or more non-transitory, computer-readable storage media
of claim 38, wherein the activated subset of the displayed
predictions are indicated by the graphical user interface using a
first icon, and wherein the inactivated subset of the displayed
predictions are indicated by the graphical user interface using a
second icon different from the first icon.
44. The one or more non-transitory, computer-readable storage media
of claim 38, wherein the activated subset of the displayed
predictions are indicated by the graphical user interface according
to a first color, and wherein the inactivated subset of the
displayed predictions are indicated by the graphical user interface
according to a second color different from the first color.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation of U.S. patent
application Ser. No. 15/472,004, entitled "Data Structures For
Transfer And Processing Of Financial Data," filed Mar. 28, 2017,
which claims the benefit under 35 U.S.C. .sctn. 119(e) of U.S.
Patent Application No. 62/315,470, entitled "Data Structures For
Transfer And Processing Of Financial Data," filed Mar. 30, 2016,
both of which are incorporated herein by reference in their
entirety.
BACKGROUND
[0002] Computerized financial transaction systems allow users to
electronically create and maintain financial portfolios. For
example, a financial transaction system can allow a user to
purchase one or more assets from a financial market (e.g., a stock,
a bond, a commodity, or other asset), hold the asset for a period
of time, and sell the asset. In some examples, computerized
financial transaction systems transfer data (e.g., information
regarding a financial market and its assets) to/from one another
over a communications network, such that the information is
shared.
SUMMARY
[0003] Implementations of the present disclosure are directed to
data structures for transfer and processing of financial data.
[0004] In general, in an aspect, a computer-implemented method
includes retrieving, by at least one processor, one or more first
data structures pertaining to a current state of a financial
portfolio of a first user, one or more second data structures
pertaining to one or more historical and/or current states of a
financial market, one or more third data structures pertaining to
one or more predictions regarding one or more financial assets of
the financial market, and one or more fourth data structures
pertaining to the first user's preferences with respect to the
financial portfolio. The method also includes determining, by the
at least one processor, one or more transactions to be conducted on
the financial market based on the one or more first data
structures, the one or more second data structures, the one or more
third data structures, and the one or more fourth data structures.
The method also includes executing, by the at least one processor,
the one or more transactions.
[0005] Implementations of this aspect may include one or more of
the following features.
[0006] In some implementations, the method can further include
retrieving the one or more predictions from one or more second
users different than the first user. At least one prediction can
include an identity of a particular second user, an indication of a
particular financial asset of the financial market, and an
indication of a predicted future price or return of that financial
asset. The at least one prediction can further include an
indication of the particular second user's confidence regarding the
at least one prediction.
[0007] In some implementations, at least one of the one or more
third data structures can include a data field containing an
identity of the particular second user, a data field containing an
indication of the particular financial asset of the financial
market, and a data field containing an indication of a predicted
future price or return of that financial asset.
[0008] In some implementations, the first user's preferences can
correspond to at least one of: a risk tolerance of the first user
with respect to the financial portfolio, a leverage threshold with
respect to the financial portfolio, a volatility tolerance of the
first user with respect to the financial portfolio, a cash reserve
threshold with respect to the financial portfolio, and one or more
asset allocation criteria with respect to the financial
portfolio.
[0009] In some implementations, determining the one or more
transactions to be conducted on the financial market can include
determining, by the one or more processors, a target state of the
financial portfolio based on the one or more first data structures,
the one or more second data structures, the one or more third data
structures, and the one or more fourth data structures. Determining
the one or more transactions to be conducted on the financial
market can also include determining, by the one or more processors,
a difference between the target state of the financial portfolio
and the current state of the financial portfolio, and determining,
by the one or more processors, the one or more transactions to be
conducted on the financial market to align the current state of the
financial portfolio to the target state of the financial
portfolio.
[0010] In some implementations, the one or more transactions can be
executed in response to receiving an indication to execute the one
or more transactions from the first user. The one or more
transactions can be executed substantially simultaneously.
[0011] In some implementations, the one or more transactions can be
executed automatically.
[0012] In some implementations, the method can further include
retrieving the one or more predictions from the first user,
generating one or more fifth data structures based on the one or
more predictions from the first user, and transmitting the one or
more fifth data structures to one or more second users.
[0013] In some implementations, the method can further include
generating, by the at least one processor, a notification based on
at least one of the one or more first data structures, the one or
more second data structures, the one or more third data structures,
the one or more fourth data structures, and the one or more fifth
data structures. The method can also include displaying the
notification to the first user. In some implementations, at least
one of the third data structures can be retrieved from a second
user, and the notification can be generated based on the at least
one third data structure retrieved from the second user.
[0014] In some implementations, the method can further include
retrieving, by the at least one processor, one or more sixth data
structures pertaining to a financial portfolio of a second user,
generating, by the at least one processor, a notification based on
the one or more sixth data structures, and displaying the
notification to the first user.
[0015] In some implementations, the method can further include
retrieving, by the at least one processor, one or more seventh data
structures pertaining to an association between two or more users
of a social media platform, generating, by the at least one
processor, a second notification based on the one or more seventh
data structures, and displaying the second notification to the
first user.
[0016] In some implementations, the method can further include
generating, by the at least one processor, a plurality of
notifications based on at least one of the one or more first data
structures, the one or more second data structures, the one or more
third data structures, the one or more fourth data structures, and
the one or more fifth data structures. The method can also include
displaying the notifications to the first user. At least some of
the notifications can be displayed concurrently in a feed. In some
implementations, at least one of the third data structures can be
retrieved from a second user, and at least one of the notifications
can be generated based on the at least one third data structure
retrieved from the second user.
[0017] In some implementations, the method can further include
retrieving, by the at least one processor, one or more sixth data
structures pertaining to a financial portfolio of a second user,
generating, by the at least one processor, a plurality of
notifications based on the one or more sixth data structures, and
displaying the notifications to the first user.
[0018] In some implementations, the method can further include
retrieving, by the at least one processor, one or more seventh data
structures pertaining to an association between two or more users
of a social media platform, generating, by the at least one
processor, a second plurality of notifications based on the one or
more seventh data structures, and displaying the second plurality
of notifications to the first user.
[0019] In some implementations, the method can further include
retrieving, by the at least one processor, one or more eighth data
structures. The one or more eighth data structures can include one
or more statements received from the first user regarding a
particular financial asset or a particular prediction regarding a
financial asset. The method can also include presenting, by the at
least one processor, the one or more statements to one or more
second users, receiving, by the at least one processor, one or more
votes regarding the one or more statements from the one or more
second users, and presenting, by the at least one processor, the
one or more statements and indications of the one or more votes to
the first user and the one or more second users.
[0020] In some implementations, presenting the one or more
statements and the indications of the one or more votes can include
presenting the one or more statements and the indications of the
one or more votes in a list. The list can be sorted based on the
one or more votes.
[0021] In some implementations, presenting the one or more
statements and the indications of the one or more votes further can
include filtering the list based on the one or more votes.
[0022] In some implementations, executing the one or more
transactions can include executing the one or more transactions in
a simulated environment.
[0023] Other implementations of this aspect include corresponding
systems, apparatus, and computer programs, configured to perform
the actions of the methods, encoded on computer storage
devices.
[0024] Implementations of the present disclosure provide one or
more advantages. For example, the use of data structures in
accordance with the present disclosure facilitates efficient
transfer of data across a computer network. As an example, instead
of transferring unstructured data regarding a financial market
(e.g., an unstructured narrative describing various aspects of the
financial market), data can be formatted according to a pre-defined
data structure (e.g., a data item, array, record, or other
structure having a particular pre-defined arrangement of fields or
entries for each aspect of the financial market). This enables
computer systems to transfer and receive data in a consistent
manner, thereby increasing the accuracy and/or efficiency of data
transmission. Further, as data is stored according to a pre-defined
structure, the need to process the data to extract relevant
information (e.g., parsing and interpreting that data using natural
language processing techniques) is reduced. Thus, data can be
processed more efficiently by each of the computer systems, with a
reduced consumption of computing resources. Further, the use of
data structures in accordance with the present disclosure enables
the computer systems to transfer data without extraneous
information, thereby increasing the speed of data transfer and
storage efficiency of the computer systems.
[0025] Further, the implementations described herein can facilitate
users in sharing predictions regarding a financial market, and
maintaining an optimized financial portfolio based on these
predictions. This is beneficial, for example, as it allows users to
quickly and easily disseminate knowledge regarding a financial
market, browse knowledge shared by others, and execute transactions
based on the collective knowledge of those users. Thus, users can
execute transactions more confidently, and in a more educated
manner.
[0026] The details of one or more implementations are set forth in
the accompanying drawings and the description below. Other features
and advantages will be apparent from the description and drawings,
and from the claims.
DESCRIPTION OF DRAWINGS
[0027] FIG. 1 depicts an example architecture that can be used to
execute implementations of the present disclosure.
[0028] FIG. 2 depicts an example implementation of a financial
platform.
[0029] FIG. 3 depicts an example process that can be executed in
accordance with implementations of the present disclosure.
[0030] FIGS. 4A-4J depict example interfaces in accordance with
implementations of the present disclosure.
[0031] FIG. 5 depicts an example process that can be executed in
accordance with implementations of the present disclosure.
DETAILED DESCRIPTION
[0032] Implementations of the present disclosure are generally
directed to data structures for facilitating the efficient transfer
of data across a computer network (e.g., a LAN or the Internet),
and the efficient processing of that data by a computerized
financial transaction system.
[0033] In some implementations, one or more data structures can be
used to efficiently transfer information regarding past, present,
and predicted future states of a financial market between one or
more computer systems. Data structures corresponding to the past
states of the financial market can include, for example,
information regarding historical performance(s) of one or more
assets traded on the financial market (e.g., stocks, bonds,
commodities, and other assets). Data structures corresponding to
the present state of the financial market can include, for example,
the current performance of one or more assets traded on the
financial market. Data structures corresponding to the predicted
future states of the financial market can include, for example,
information regarding a predicted or estimated performance of one
or more assets at some point in time in the future.
[0034] In some implementations, information regarding the past,
present, and predicted future states of the financial market can be
used to generate or output transactions for one or more users of a
computerized financial trading system. These transactions can be
modelled transactions, simulated transactions, transactions that
are automatically executed on behalf of the users, and/or other
transactions that optimize, improve, or otherwise modify the users'
financial portfolios. For example, a computer system can receive
information regarding a user's financial portfolio (e.g.,
information regarding the assets held by the user and the
allocation of value among those assets), and information regarding
a user's portfolio preferences (e.g., the user's trading goals,
risk tolerance, asset allocation goals, availability of funds, and
so forth). Based on this information--and based on the past,
present, and predicted future states of the financial market--the
computer system can output one or more financial transactions that
optimize, improve, or otherwise modify the user's portfolio. As an
example, the computer system can output one or more transactions
(e.g., a purchase or sale of assets) that improve the predicted
financial return of the portfolio. As another example, the computer
system can output one or more transactions that increase or
decrease the financial risk associated with the portfolio, such
that the risk aligns with the user's risk tolerance (or otherwise
moves closer to the user's risk tolerance). As another example, the
computer system can output one or more transactions that reallocate
the assets of the portfolio, such that the asset allocation of the
portfolio aligns with the user's preferences (or otherwise moves
closer to the user's asset allocation preferences).
[0035] In some examples, the transactions outputted by the
computerized financial trading system can be executed on a
financial market, either automatically or in response to a user
command. This can be beneficial, for example, as it enables a user
to quickly and efficiently modify their financial portfolio.
[0036] In some examples, the transactions outputted by the
computerized financial trading system are not executed in a
real-world financial market, and are instead simulated over a
period of time (e.g., as if they actually had been executed in a
real-world financial market). This can be beneficial, for example,
as it enables users to evaluate the performance of the computerized
financial trading system over a period of time without conducting
actual transactions in a real-world financial market. This also can
be beneficial, for example, as it enables users to view simulated
transactions in a low-risk environment. This can also be
beneficial, for example, as it enables users to become familiar
with the computerized financial trading system prior to funding an
account and conducting real-world financial market transactions
with their own money.
[0037] In some examples, one or more users can share predictions
regarding the future states of the financial market. For example,
users can utilize their client devices (e.g., personal computers,
smartphones, tablet computers, or other client devices) to input
information regarding a particular asset of a financial market and
information regarding a predicted performance of that asset in the
future. This information can be formatted into data structures, and
efficiently transferred from the client devices to a computer
system (e.g., one or more server computers). The computer system
can aggregate the users' predictions, and share one or more of
these predictions to each of the users. Thus, a user can share
their predictions regarding the financial market, receive
predictions from one or more other users regarding the financial
market, and discover predictions or other investment ideas that
might otherwise be unavailable to the user. In some examples, the
computer system can automatically display one or more predictions
to each of the users. In some examples, each user can manually
specify other users from whom to receive predictions.
[0038] At least partially based on shared predictions, the computer
system can output one or more financial transactions that optimize,
improve, or otherwise modify the user's portfolio. As an example,
the computer system can output one or more transactions (e.g., a
purchase or sale of assets) to a user according to a particular
prediction provided by the user. As another example, the computer
system can output one or more transactions (e.g., a purchase or
sale of assets) to a user according to a particular prediction
provided by another user. As above, these transactions can be
provided in accordance with the user's portfolio preferences, such
that the transactions do not deviate beyond the user's preferences
for managing the portfolio.
[0039] Implementations described herein can provide one or more
advantages. For example, the use of data structures in accordance
with the present disclosure facilitates efficient transfer of data
across a computer network. As an example, instead of transferring
unstructured data regarding a financial market (e.g., an
unstructured narrative describing various aspects of the financial
market), data can be formatted according to a pre-defined structure
(e.g., a data item, array, record, or other structure having a
particular pre-defined arrangement of fields or entries for each
aspect of the financial market). This enables computer systems to
transfer and receive data in a consistent manner, thereby
increasing the accuracy and/or efficiency of data transmission.
Further, as data is stored according to a pre-defined structure,
the need to process the data to extract relevant information (e.g.,
parsing and interpreting that data using natural language
processing techniques) is reduced. Thus, data can be processed more
efficiently by each of the computer systems, with a reduced
consumption of computing resources. Further, the use of data
structures in accordance with the present disclosure enables the
computer systems to transfer data without extraneous information,
thereby increasing the speed of data transfer and storage
efficiency of the computer systems.
[0040] FIG. 1 depicts an example architecture 100 that can be used
to execute implementations of the present disclosure. In the
depicted example, the architecture 100 includes computing systems
110a-c (e.g., server system), client computing systems 120a-c, and
network 130. Although three computing systems 110a-c are depicted,
it is appreciated that implementations of the present disclosure
can include any number of computing systems (e.g., one, two, three,
or more). Similarly, although three client computing systems 120a-c
are depicted, it is appreciated that implementations of the present
disclosure can include any number of client computing systems
(e.g., one, two, three, or more).
[0041] The computing system 110a provides a financial platform 140.
In some examples, the financial platform 140 is provided as one or
more computer-executable programs executed by the computing system
110a. In general, the financial platform 140 allows users to manage
their financial portfolios. For example, users can communicate with
the financial platform 140 using the client computing system 120a-c
to access their financial portfolios (e.g., a portfolio of assets
traded on a financial market), obtain information regarding their
portfolios, input preferences regarding their financial portfolios,
and execute trades or transactions with respect to their financial
portfolios. The users can also communicate with the financial
platform 140 to input predictions regarding a financial market
(e.g., predictions regarding the future performance of various
assets) and share those predictions with other users. The users can
also communicate with the financial platform 140 to view trades
generated by the financial platform 140 and its users, and if
desired, execute those trades with respect to their financial
portfolios.
[0042] The computing system 110b provides a financial market
database 150. In some examples, the financial market database 150
is provided as one or more computer-executable programs executed by
the computing system 110b. In general, the financial market
database 150 includes historical and/or current information
regarding a financial market. As examples, the financial market
database 150 can include historical and/or current information
regarding assets available for trade on a financial market,
historical transactions that were conducted with respect to those
assets, and/or information regarding current bids and offers with
respect to those assets. In some cases, the financial platform 140
can retrieve this information from the financial market database
150 using the network 130.
[0043] The computing system 110c provides a social media platform
160. In some examples, the social media platform 160 is provided as
one or more computer-executable programs executed by the computing
system 110c. In general, the social media platform 160 provides a
computerized social environment between one or more users. For
example, users of the social media platform 160 can create a
profile or account that includes personal information or other
information that they wish to share with others. Users of the
social media platform 160 can also associate themselves with other
users (e.g., by adding other users as "friends," or by "connecting"
with or "following" other users), such that they form personal
social networks. Users within each of these social networks can
share information with one another. In some cases, the financial
platform 140 can retrieve information regarding a user (e.g., a
user's personal information, social connections, and so forth) from
the social media platform 160 using the network 130.
[0044] In some cases, the social media platform 160 can utilize
information collected from a third-party social network. For
instance, the social media platform 160 can collect information
regarding users' associations with one another on a third-party
social network (e.g., "friends," "connections," "followers," and/or
people that the users are "following" on a third-party social
network). Based on this information, the social media platform 160
can associate those users together on the financial platform 140.
Thus, users' connections and associations on the social media
platform 160 can be made similar (or identical) to their
connections and associations on the third-party social network.
This can be beneficial, for example, as it enables users to quickly
and efficiently find and associate themselves with other users of
the financial platform 140. Examples of third-party social media
platforms include Facebook, Twitter, Instagram, LinkedIn, and
Google+.
[0045] Although the social media platform 160 is depicted as a
separate component in FIG. 1, this is merely an illustrative
example. In some implementations, the social media platform 160 can
be implemented using other components (e.g., on the computing
system 110a) and/or as a part of other platforms (e.g., as a part
of the financial platform 140). Further, in some implementations,
the social media platform 160 can be implemented on a third-party
social network directly (e.g., through the use of application
program interfaces (APIs) provided by the third-party social
network).
[0046] In some examples, each of the computing systems 110a-c
includes at least one respective server device. In the example of
FIG. 1, the computing systems 110a-c are intended to represent
various forms of servers including, but not limited to, a web
server, an application server, a proxy server, a network server, a
database server, and/or a server pool.
[0047] In some examples, the computing systems 110a-c and the
client computing systems 120a-c can be any appropriate electronic
device that is used by a user to view, process, transmit, and
receive data. Examples of computing systems include computers (such
as desktop computers, notebook computers, server systems, etc.),
mobile computing devices (such as cellular phones, smartphones,
tablets, personal digital assistants, smart watches, notebook
computers with networking capability), and other computing devices
capable of transmitting and receiving data from network 130. The
computing systems 110a-c and the client computing system 120a-c
include devices that operate using one or more operating systems
(e.g., Microsoft Windows, Apple OS X, Linux, Unix, Android, iOS,
etc.) and/or architectures (e.g., Intel Core, x86, PowerPC, ARM,
etc.) In some implementations, one or more computing systems 110a-c
and the client computing system 120a-c need not be located locally
with respect to the rest of the architecture 100. For example, one
or more of the computing systems 110a-c and the client computing
system 120a-c can be located in one or more remote physical
locations.
[0048] In the depicted example, the computing systems 110a-c and
the client computing system 120a-c are each illustrated as a single
component, but one or both can be implemented on one or more
computing devices. One or more of computing systems 110a-c and the
client computing system 120a-c can be, for example, a single
computing device that is connected to the network 130, and one or
more of the modules 140, 150, and 160 can be maintained and
operated on the single computing device. In some implementations,
one or more of the computing systems 110a-c and the client
computing systems 120a-c can include multiple computing devices
that are connected to the network 130, and one or more of the
modules 140, 150, and 160 can be maintained and operated on some or
all of the computing devices. For example, one or more of the
computing systems 110a-c and the client computing system 120a-c can
include multiple computing devices, and one or more of the modules
140, 150, and 160 can be distributed on one or more of the multiple
computing devices.
[0049] In some examples, the network 130 can be any communications
network through which data can be transferred and shared. For
example, the network 130 can be a local area network (LAN) or a
wide-area network (WAN), such as the Internet. The network 130 can
be implemented using various networking interfaces, for instance
wireless networking interfaces (such as Wi-Fi, Bluetooth, or
infrared) or wired networking interfaces (such as Ethernet or
serial connections). The network 130 can include combinations of
more than one network, and can be implemented using one or more
networking interfaces.
[0050] In accordance with implementations of the present
disclosure, the financial platform 140 allows users to manage their
financial portfolios. As described herein, users can communicate
with the financial platform 140 using the client computing system
120a-c to access their financial portfolios, obtain information
regarding their portfolios, input preferences regarding their
financial portfolios, and execute trades or transactions with
respect to their financial portfolios. The users can also
communicate with the financial platform 140 to input predictions
regarding a financial market and share those predictions with other
users. The users can also communicate with the financial platform
140 to view trades generated by the financial platform 140, and if
desired, execute those trades with respect to their financial
portfolios.
[0051] FIG. 2 depicts an example of the financial platform 140. In
the depicted example, the financial platform 140 includes a
database module 210, a communications module 220, and a processing
module 230.
[0052] In some implementations, the database module 210 maintains
information related to one or more users of the financial platform
140. As an example, the database module 210 can store information
regarding a user's credentials (e.g., username and password),
contact information (e.g., e-mail address, physical address, phone
number, social media connections, and so forth), demographic
information (e.g., age, gender, geographical region, and so forth),
portfolio information (e.g., assets held in the portfolio,
allocation of value between those assets, and so forth),
preferences (e.g., system preferences and portfolio preferences),
location (e.g., geographical coordinates, such as those determined
using a global positioning system (GPS), Wi-Fi triangulation
system, or other geo-positioning system), relationship information
(e.g., indications of a user's association with other users, such
as social media connections), and other user information (e.g.,
collections of other content inputted by or pertaining to a
user).
[0053] The database module 210 can store data using one or more
data structures. For example, the database module 210 can store
data in accordance with one or more pre-defined structures (e.g., a
data item, array, record, or other structure having a particular
pre-defined arrangement of fields or entries for each aspect of the
financial market). This allows the database module 210 to store
data in a consistent and uniform manner. Example data structures
include SQL data structures, XML, data structures, Postgres data
structures, and spreadsheets. Such structures can include, for
example, sequences or arrangements of data items such as integers,
long integers, floating-point numbers, double-precision numbers,
Booleans, characters, strings, timestamps, and so forth. Data
structures can be linked, not linked, nested, combined, encrypted,
compressed, or otherwise manipulated or arranged for the purposes
of storing, accessing, modifying, and deleting information in
database module 210.
[0054] Although different examples of information are described
above, these are merely illustrative. In practice, database module
210 can store any appropriate information related to the users of
financial platform 140 or any other information pertaining to
financial platform 140.
[0055] The communications module 220 allows for the transmission of
data to and from the financial platform 140. For example,
communications module 220 can be communicatively connected to
network 130, such that it can transmit data to the client computing
systems 120a-c and/or the computing systems 110b-c and receive data
from the client computing systems 120a-c and/or the computing
systems 110b-c. As an example, information inputted by users on
client devices 120a-c can be transmitted to the financial platform
140 through communications module 220. This information can then be
processed (e.g., using processing module 230) and/or stored (e.g.,
using database module 210). As another example, information from
the financial platform 140 (e.g., information stored on database
module 210) can be transmitted to one or more client computing
systems 120a-c through communication module 220.
[0056] The processing module 230 processes data stored or otherwise
accessible to platform 140. For instance, the processing module 230
can execute automated or user-initiated processes that manipulate
data pertaining to one or more users and their financial
portfolios. As an example, the processing module 230 can manipulate
data stored on database module 210, or data that is received from
communications module 220. Likewise, processed data from the
processing module 230 can be stored on database module 210 and/or
sent to communications module 220 for transmission to other
computing systems. Example processes that can be performed by the
processing module 230 are described in greater detail herein.
[0057] In an example implementations of the architecture 100, a
user accesses the financial platform 140 using a client computing
device 120a-c. The user can, for example, create an account with
the financial platform 140 and input personal information regarding
themselves (e.g., name, contact information, identification
credentials, and so forth). The user can also input information
regarding the current state of their financial portfolio. This can
include, for instance, inputting the assets that are held in their
financial portfolio, and the amount of value allocated to each
asset (e.g., the number of shares or units held by the user).
[0058] The user can also input preferences regarding how they would
like to manage their portfolio. Portfolio preferences can include,
for example, an overall objective for their portfolio (e.g.,
whether they would like to maximize the financial returns on their
portfolio, preserve capital, earn dividend income, and so forth).
Portfolio preferences can also include the user's risk tolerance
(e.g., the amount of risk that the user is willing to tolerate in
pursuit of their objectives). Portfolio preferences can also
include an indication regarding whether to conduct certain types of
transactions (e.g., whether to conduct short sales, or other types
of transactions). Portfolio preferences can also include the
maximum leverage of their portfolio (e.g., the gross value of the
portfolio as a ratio of the total equity in the user's financial
account). Portfolio preferences can also include a particular
volatility target of the portfolio (e.g., an estimated standard
deviation of returns of the portfolio). Portfolio preferences can
also include other preferences, such as the minimum annual dividend
income of the portfolio, a single-position concentration limit
(e.g., the maximum amount that can be invested in a single stock as
a percentage of the total equity in the user's financial account),
a cash reserve minimum (e.g., the minimum amount of money required
to be left in cash or money market, and not invested in stocks or
other assets), a range for beta constraints (e.g., the range of a
portfolio's market risk relative to the risk of a broad stock
index), and a range for allocation per asset (e.g., a minimum and
maximum amount of the portfolio that can be invested in a
particular stock). Although example portfolio preferences are
described, these are merely illustrative examples. In practice, a
user can input other portfolio preferences, either instead of or in
addition to those described herein.
[0059] Further, the user can also input information regarding their
social connections. For example, the user can provide the identity
of one or more other users of the financial platform 140. As
another example, the user can provide identity credentials for the
social media platform 160, and the financial platform 140 can
automatically retrieve the user's social connections from the
social media platform 160.
[0060] Further, the user can also input predictions regarding
particular assets being traded on a financial market. Such inputs
can be entered by the user, or calculated or defaulted to certain
values by the financial platform 140. For example, a user can
identify a particular asset (e.g., a stock, bond, commodity, or
other asset), can indicate the predicted future direction of the
asset's value (e.g., whether the asset will increase in value,
decrease in value, or remain the same value in the future). The
user can also specify a price target for the asset (e.g., the price
that the user expects the asset to reach on the financial market),
and a specified time in the future that they expect the target
price to be met (e.g., a horizon). In some cases, the user can also
input a conviction level for their predictions (e.g., how confident
the user is that the price of the asset will reach the price
target). In some cases, the user can also input an expected
dividend for the asset (e.g., the asset's expected dividend yield
over a period of time, such as 12 months). In some cases, the user
can also input a thesis regarding their prediction. A thesis can
include, for example, a particular reason why the user believes
that the asset will behave in the predicted manner. Example reasons
could include the value of the asset versus the current market
price (e.g., whether the asset represents a good or bad value), the
skills of a management team associated with the asset (e.g.,
whether the skills of the management team of a corporation are good
or bad), and/or an upcoming event (e.g., whether an upcoming event
will cause the price of an asset to increase or decrease). In some
cases, the user can also enter notes or free-form comments (e.g., a
narrative explaining their prediction).
[0061] In some cases, the user can also enter free-form statements
or "thoughts" regarding an asset, and submit those comments for
voting by other users. As examples, a user can enter opinions
regarding an asset (e.g., an opinion regarding the strength or
value of an asset), opinions regarding a particular company or
corporate management team (e.g., opinions regarding the performance
of a company or corporate management team), opinions regarding
products or services offered by a company (e.g., the quality of a
product or service), or other opinions, assessments, or
characterizations.
[0062] Other users can vote in support of the statement (e.g., if
they agree with the statement), or vote against the statement
(e.g., if they disagree with the statement). The voting results can
be displayed to each of the users, or to each of the users to whom
the original author of the statement is connected (e.g. on the
social media platform 160), such that they can assess the
popularity of each statement.
[0063] In some cases, statements can be filtered and/or sorted
according to their vote totals. For instance, statements can be
displayed in the form of a list, and sorted by their net vote
totals. As an example, a statement having a relatively high net
vote total (e.g., the number of votes in support of the statement,
minus the number of votes against the statement) can be displayed
higher on the list. A statement having a relatively low net vote
total can be displayed lower on the list. In some cases, statements
having a sufficiently low net vote total (e.g., a net vote total
below a threshold value) can be deemphasized (e.g., greyed out) or
hidden from view.
[0064] In some cases, a user can enter voteable statements as a
part of a prediction. In some cases, a user can enter voteable
statements independently of a prediction (e.g., as a standalone
statement).
[0065] In some cases, voteable statements can be limited in length.
As an example, voteable statements can be limited to no more than
100 characters, or according to some other character limit.
[0066] In some cases, a user can solicit voteable statements from
other users. For instance, a first user viewing a second user's
prediction can request that the second user explain the prediction,
or a particular aspect of the prediction. In response, the second
user can enter a statement elaborating further on their prediction
(e.g., an explanation of the basis of their prediction, an opinion
supporting their prediction, and so forth). Other users can vote in
support of or against the statement, and the results can be
displayed to other users, such that they can gauge the level of
popular support for the statement.
[0067] As described herein, information regarding a user's
predictions can be formatted according to a data structure. For
example, a user can input information regarding their predictions
into a client computing system 102a-c, and the client computing
system 102a-c can format the prediction into an individual data
structure, where each field or entry of the data structure
corresponds to a different aspect of the prediction. For instance,
a first field of the data structure can contain an identity of an
asset, a second field can contain an indication of the asset's
predicted direction, a third field can contain an indication of the
target price, a fourth field can contain an indication of the
horizon for the target price, and so forth. This arrangement can be
uniform across each of the computing systems in the architecture
100. Thus, each prediction is formatted in a consistent manner, and
can be reliably shared and interpreted by each of the computing
systems in the architecture 100.
[0068] Similarly, information regarding a user's voteable
statements or "thoughts" also can be formatted according to a data
structure. For example, a user can input information regarding
their statements into a client computing system 102a-c, and the
client computing system 102a-c can format the information into a
data structure. For instance, a first field of the data structure
can contain an identity of an asset, a second field can contain the
text of the statement, a third field can contain an indication of
whether the statement expresses a positive view (e.g. a "pro" tag)
or negative view (e.g. a "con" tag) about the asset, a fourth field
can identify the user that made the statement, and so forth. The
client computing system 102a-c can transmit the data structure to
the financial platform 140, such that information regarding the
statements can be displayed to other users. As users vote for or
against the statements, the financial platform 140 can update the
data structure to indicate the voting results (e.g., using a field
containing an indication of the number of positive votes, and a
field containing an indication of the number of negative votes for
each statement). The data structure can also include fields for
other relevant information regarding each statement. For example,
the data structure can include a field indicating the identities of
all users who have voted for or against the statement. This
arrangement can be uniform across each of the computing systems in
the architecture 100. Thus, each voteable statement is formatted in
a consistent manner, and can be reliably shared and interpreted by
each of the computing systems in the architecture 100. As such,
users can share ideas about an asset, poll the community for their
opinion about the asset, and review the results in an intuitive
manner.
[0069] The client computer 120a-c transmits the information
inputted by the user to the computing system 110a and the financial
platform 140. The financial platform 140 stores the information in
the database module 120, such that the user can access the
information at a later time. In addition, the financial platform
140 aggregates the user's predictions (e.g., the data structures
pertaining to the user's predictions) with predictions received
from one or more other users. In some cases, the financial platform
140 can generate and maintain one or more structured databases that
include a record of each of the predictions made by one of its
users, and information regarding each of the predictions.
[0070] In some implementations, the financial platform 140 allows
the user to access predictions made by other users. As an example,
the financial platform 140 can retrieve information regarding a
user's social connections from the social media platform 160,
determine whether any of the user's social connections are users of
the financial platform 140, and if so, automatically present those
users' predictions to the user. This is beneficial, for example, as
it allows a user to quickly view predictions made by their social
acquaintances.
[0071] As another example, the user can manually input the
identities of one or more users of the financial platform 140
(e.g., by inputting a user name, e-mail address, or other
identifying information regarding those users). In response, the
financial platform 140 can retrieve the predictions made by the
identified users, and present those users' predictions to the user.
This is beneficial, for example, as it allows a user to manually
select particular people whose predictions they wish to view.
[0072] As another example, the financial platform 140 can display a
number of users of the financial platform 140, and the user can
select one or more of those users to view their predictions. This
can be beneficial, for example, as it allows a user to browse
through a number of other users, and select users or predictions
that interest them.
[0073] As another example, the financial platform 140 can display a
number of individuals or organizations who are not users of the
financial platform 140, but have publicly known predictions. This
can include, for example, well known investors, pundits, thought
leaders, people of influence, analysts, journalists, investment
banks, think tanks, research firms, or other such individuals or
organizations. Information regarding these individuals or
organizations and their predictions can be manually entered (e.g.,
by an administrator or user of the financial platform 140) and/or
automatically obtained (e.g., automatically retrieved from the
individuals' or organizations' publications), and presented to the
users of the financial platform 140 for review.
[0074] In some cases, the financial platform 140 can display
several different users and/or predictions, and allow the user to
browse through each of the users and/or predictions. As the user
browses through the users and/or predictions, the user can select
particular users and/or predictions that interest them, and save
them for later (e.g., in a "favorite" or "following" or
"connections" list).
[0075] In some implementations, the financial platform 140 can
automatically suggest users and/or display predictions to a user,
even if the user was not previously associated with those users
and/or predictions. For example, the financial platform 140 can
automatically identify other users having similar trading patterns
as the user, and display those users and their corresponding
predictions. As another example, the financial platform 140 can
automatically identify other users having similar portfolio
preferences as the user, and display those users and their
corresponding predictions. As yet another example, the financial
platform 140 can automatically identify other users who have
similar portfolio compositions as the user, and display those users
and their corresponding predictions. As yet another example, the
financial platform 140 can automatically identify other users who
have similar demographic information as the user, and display those
users and their corresponding predictions.
[0076] In some implementations, the financial platform 140 can
display information regarding another user's portfolio allocation.
For example, the financial platform 140 can display each of the
assets held by another user, and the percentage of their
portfolio's value that corresponds to each asset. This can
beneficial, for example, as it allows a user to examine the
portfolio allocations of others, and adjust their own portfolio
accordingly. For instance, a user might see that numerous other
people have concentrated a significant portion of their portfolios
on a particular asset. In response, the user can select that asset
for purchase or sale. As another example, a user might see that
relatively few other people have invested in a particular asset. In
response, the user can select that asset for purchase or sale.
[0077] In some cases, a user can search or filter the users and/or
predictions to identify particular users and/or predictions that
match their criteria. For example, a user can filter a list of
users based on name, social network connection, demographic, and so
forth. As another example, a user can filter predictions based on
the asset that is the subject of the prediction, the predicted
direction of that asset, the target price of that asset, and so
forth. As another example, a user can filter predictions based on a
particular thesis identified by the predictor, or based on a
particular note entered by the predictor. In some cases, a user can
search or filter using several different criteria to narrowly
identify a specific user or prediction.
[0078] The user views each of these predictions, and selects one or
more predictions (e.g., their own predictions and/or predictions
from other users, individuals, or organizations) that they wish to
make active in their portfolio. In response, the financial platform
140 determines one or more transactions that can be performed based
on those selected active predictions. As described herein, the
financial platform 140 can determine one or more trades of an asset
based on the past and present state of a financial market (e.g.,
information received from the financial market database 150), the
predicted future states of the financial market (e.g., the user's
selected predictions), and the user's portfolio preferences. These
trades, when executed, can optimize, improve, or otherwise modify
the user's portfolio in accordance with their predictions, the
predictions of others, their preferences, and/or their
objectives.
[0079] In some cases, users can selectively share information with
others. This can be beneficial, for example, if a user wishes to
maintain their privacy by sharing certain types of information with
a selected group of people, while not sharing other types of
information at all. As an example, a user can publicly share
information regarding their predictions with each of the users of
the financial platform 140, but share information regarding their
portfolio allocations with only a select number of users (e.g.,
users with whom they are connected on a social media platform 160).
As another example, a user can share information regarding their
predictions with a select number of users (e.g., users that they
have specifically identified on the financial platform 140), and
not share information regarding their portfolio allocations at all.
These examples are provided merely to illustrate how a user can
selectively or non-selectively share or opt not to share
information. In practice, users can selectively or non-selectively
share or opt not to share information however they wish.
[0080] In some implementations, the financial platform 140 can
display information to users using notifications or "feeds." For
instance, the financial platform 140 can generate a message and/or
image describing particular events that have occurred with respect
to the user and their portfolio, and display those messages and/or
images to the user for review. As an example, the financial
platform 140 can generate a message and/or image indicating the
performance of a particular asset held by the user in their
financial account (e.g., a notification indicating that a
particular stock has increased in value by a particular percentage
over a particular period of time). As another example, the
financial platform 140 can generate a message and/or image
indicating when the user performed a particular action (e.g., a
notification indicating that the user last optimized their
portfolio at a particular point in time in the past). As another
example, the financial platform 140 can generate a message and/or
image indicating that the projected return of the user's optimized
portfolio exceeds the expected return of their actual portfolio by
a threshold amount (e.g., a notification that optimizing the
portfolio would result in an increase in the modeled return of the
financial portfolio that is at least a certain percentage). In some
implementations, the user can select the message and/or image to
obtain further information regarding the selected event.
[0081] In some implementations, the financial platform 140 can
generate a message and/or image for particular events that have
occurred with respect to other users and their respective
portfolios, and display those messages and/or images to the user to
review. As an example, the financial platform 140 can generate a
message and/or image indicating the performance of a particular
asset held by one or more other users in their financial accounts
(e.g., a notification indicating that a particular stock held by
one of the user's "friends" or "connections" has increased in value
by a particular percentage over a particular period of time). As
another example, the financial platform 140 can generate a message
and/or image indicating the actions performed by one or more other
users (e.g., a notification indicating that one of the user's
"friends" or "connections" conducted a particular transaction with
respect to a particular asset). As another example, the financial
platform 140 can generate a message and/or image indicating that
another user shared a prediction (e.g., a notification indicating
that one of the user's "friends" or "connections" has predicted
that a particular asset will perform in a particular manner). As
another example, the financial platform 140 can generate a message
and/or image providing additional information regarding a shared
prediction (e.g., a notification indicating the identity of the
user's "friend" or "connection" who shared a prediction, an
indication of the particular financial asset of the financial
market identified by the prediction, and an indication of a
predicted future price or return of that financial asset). As
another example, the financial platform 140 can generate a message
and/or image indicating that two or more users interacted on a
social media platform (e.g., a notification indicating that one of
the user's "friends" or "connections" has "friended," "connected
with," "liked," or otherwise associated themselves with another
user on a social media platform).
[0082] In some implementations, multiple notifications can each be
presented individually (e.g., as a series of sequentially displayed
messages) or concurrently (e.g., as a list or "feed"). These
notifications can be beneficial, for example, as they allow the
users of the financial platform 140 to quickly review information
relating to their own financial accounts, one or more other users
of the financial platform 140, and/or the financial accounts held
by those other users.
[0083] Although example notifications are described above, these
are merely illustrative examples. In practice, other notifications
are also possible, either instead of or in addition to those
described above.
[0084] A generalized process 300 for generating transactions is
shown in FIG. 3. As described herein, these transactions can be
modelled transactions, simulated transactions, transactions that
are automatically executed on behalf of a user, or other
transactions that optimize, improve, or otherwise modify the user's
financial portfolio. The process 300 can be performed, for example,
by the processing module 230 of the financial platform 140.
[0085] A user's predictions (302) and third-party predictions (304)
are combined into an aggregated set of predictions (306). As
described herein, a user's predictions can include predictions
regarding the predicted performance of one or more assets traded on
a financial market. Further, third party predictions can include
predictions inputted by one or more other users (e.g., one or more
other users of the financial platform 140) and/or publicly known
predictions made by other individuals or organizations. As
described herein, these predictions can be represented using data
structures having pre-defined arrangements, and aggregated into one
or more structured databases.
[0086] One or more of these predictions are presented to the user.
The user reviews the predictions, and selects one or more
predictions that interest them (308), thereby "activating" the
predictions with respect to their portfolio (310). Based on the
active predictions (310), the user's portfolio settings (312), and
information regarding the financial market (314), optimal or target
positions are determined with respect to the financial market
(316). The optimal or target positions can include, for example,
the identity of one or more assets, and the amount of each asset
that should be held in the user's portfolio.
[0087] The optimal or target positions are compared with the
current state of the portfolio (318) to determine one or more
modelled transactions (320). The modelled transaction can be, for
example, one or more transactions that can be executed against the
current portfolio to realize the optimal or target positions
(322).
[0088] As described herein, this information can be represented
using data structures having pre-defined arrangements. For example,
a user's portfolio settings can be represented by one or more data
structures (e.g., one or more data structures having particular
fields or entries for each respective preference). Similarly,
information regarding the financial market can be represented by
one or more data structures (e.g., one or more data structures
having particular fields or entries for each asset or group of
assets). Similarly, information regarding the optimized or target
positions can be represented by one or more data structures (e.g.,
one or more data structures having particular fields or entries for
each position). Similarly, information regarding the transactions
can be represented by one or more data structures (e.g., one or
more data structures having particular fields or entries for each
transaction).
[0089] As described herein, in some implementations, these
transactions, when executed, can optimize, improve, or otherwise
modify the user's portfolio in accordance with their predictions,
the predictions of others, their preferences, and/or their
objectives.
[0090] Optimal or target positions can be determined in various
ways. For example, in some implementations, an optimal or target
position can be computationally determined using an optimization
model, such as a Markowitz mean variance (MMV) model or modified
MMV model. MMV or modified MMV models can be used, for instance, to
maximize a portfolio's expected return based on particular
parameters, such as a predicted future state of an asset, a given
amount of portfolio risk, restrictions on the types of transactions
that can be performed, a range of allowable asset allocations, and
other such inputs.
[0091] In some implementations, these parameters can be determined
based on the user's selected predictions. For example, as described
herein, a prediction can contain information regarding a predicted
direction of an asset. This predicted direction can be used as a
constraint in an optimization model. In some implementations,
assets having a predicted upward direction (e.g., corresponding to
a "buy" prediction) will never to sold short, and assets having a
predicted downward direction (e.g., corresponding to a "sell"
prediction) will never be bought. This can be beneficial, for
example, as it can restrict the optimization model from outputting
a transaction or position contrary to the user's predictions.
[0092] As another example, as described herein, a prediction can
contain information regarding a predicted price of an asset, and a
specified period of time in which the asset is predicted to achieve
that price (e.g., a horizon). In some cases, the difference between
the price target and the current price can be incremented by the
expected dividends of the asset to arrive at an expected return,
which in turn can be used as an input in an optimization model.
This can be beneficial, for example, as it allows for returns to be
calculated continuously based on live market data and the user's
input price targets, yielding real-time expected returns. This
allows the financial platform 140, for example, to notify users
when one of their held assets has exceeded its target price and the
position now has zero or negative expected returns, signaling an
exit point for the optimization model. Further, the optimization
model can normalize predictions according to a standard timeframe
(e.g., 12 months), and automatically annualize returns over other
periods of time. This can be beneficial, for example, as performing
automatic annualization of numbers expressed over other timeframes
can be a convenience for the user. This can also be beneficial, for
example, to ensure that projected returns are inputted to the
optimization model using a standardized convention for
timeframe.
[0093] As another example, as described herein, a prediction can
contain information regarding the predictor's conviction level
regarding their prediction. In some implementations, the predictor
can input a numerical value representing how confident they are
about the price target that they have inputted (e.g., on a scale of
1 to 5, with 5 being the highest confidence). This information can
be translated into position-level maximum allocations, scaled based
on the user's risk tolerance settings and/or single-position
concentration limit. This can be beneficial, as it allows the
optimization model to consider the relative confidence of the
predictor such that higher confidence predictions are weighted more
heavily than relatively lower confidence predictions.
[0094] As another example, as described herein, a prediction can
contain information regarding an expected dividend of the asset.
For example, the expected dividend could be expressed as an asset's
expected dividend yield over a period of time (e.g., 12 months). In
some implementations, the expected dividends are added to the
user's expected price appreciation when calculating the total
expected return for the asset. This can be beneficial, for example,
as it allows the optimization model to consider dividends and price
appreciation separately or in conjunction, and allows a user to
input dividend and price projections separately when making
predictions.
[0095] In some implementations, these parameters also can be
determined based on the user's inputted portfolio preferences. For
example, as described herein, a user's portfolio preferences can
contain information regarding an overall objective of the
portfolio. In some implementations, this overall objective can
define the optimization goal for the optimization model (e.g., to
maximize returns on the portfolio). Other objectives can be used,
depending on the implementation.
[0096] As another example, as described herein, a user's portfolio
preference can contain information regarding a risk tolerance or
risk profile for the user. This can be, for example, a user's
self-identified level of risk tolerance. In some implementations,
the optimizer can use this risk tolerance to limit the types of
transactions that it can output (e.g., by reducing or eliminating
transactions that exceed the risk tolerance of the user). In some
instances, the overall risk profile selected by the user can be
used to set various other preferences to default settings
consistent with the risk profile. This can be beneficial, for
example, by allowing the user broad control over risk parameters
without changing many detailed settings individually.
[0097] As another example, as described herein, a user's portfolio
preference can contain information regarding whether the user
allows for certain types of transactions to be performed (e.g.,
short sales). This can be beneficial, for example, as certain users
may not want to perform certain types of transactions (e.g., due to
increased risk or credit requirements).
[0098] As another example, as described herein, a user's portfolio
preference can contain information regarding the maximum leverage
of the portfolio (e.g., the gross value of the portfolio as a ratio
of the total equity in the user's financial account). This can be
used as a constraint for the optimization model. This can be
beneficial, for example, as it provides a specific constraint on
leverage, such that the user can specifically control the leverage
of their portfolio, as a means of controlling or limiting projected
risk.
[0099] As another example, as described herein, a user's portfolio
preference can contain information regarding a particular
volatility of the portfolio (e.g., an estimated standard deviation
of returns of the portfolio). This can be used as an overall risk
constraint in a mean-variance optimization. In some cases, the
volatility can be calculated numerically, but can be presented to
the user in the form of a generalized label (e.g., "conservative"
volatility). This can be beneficial, for example, as it allows less
sophisticated users to understand the effect of this parameter on
the optimization model.
[0100] As another example, as described herein, a user's portfolio
preference can contain information regarding a minimum annual
dividend income of the portfolio. This can also be used as a
constraint on the optimization model. This can be beneficial, for
example, as it allows a user to prioritize assets based on dividend
income (a source of income that may be particularly important to
some users, such as retirees).
[0101] As another example, as described herein, a user's portfolio
preference can contain information regarding a single-position
concentration limit (e.g., the maximum amount that can be invested
in a single asset as a percentage of the total equity in the user's
account). This can be used as a constraint in the optimization
model, and can be used in conjunction with conviction level to
limit the maximum concentration in a particular security. This can
be beneficial, for example, as it allows a user to control the
diversification of their portfolio (e.g., by specifying that the
portfolio be well-diversified under certain circumstances). For
instance, if an asset (ABC) has a very negative expected return and
is also highly correlated to another asset (XYZ), the optimization
model might, in the absence of this feature, return a portfolio
that is allocated -200% to ABC and +200% to XYZ, with small or zero
allocations to other assets. This parameter enforces a better
diversification of allocations.
[0102] As another example, as described herein, a user's portfolio
preference can contain information regarding a cash reserve minimum
(e.g., the minimum amount of money required to be left in cash or
money market, and not invested in stocks or other assets). This can
be used to reduce the overall portfolio size. This can be
beneficial, for example, as it provides an additional means to
modulate risk by limiting overall market exposure. For instance,
some investors may wish to keep a cash balance in their account for
emergencies, or they may have a large upcoming outlay such as a car
purchase, tuition payment, or down payment on real estate.
[0103] As another example, as described herein, a user's portfolio
preference can contain information regarding a range for beta
constraints (e.g., the range of a portfolio's market risk relative
to the risk of a broad stock index). This can be used as a
parameter in the optimization model. This can be beneficial, for
example, as it allows the user to modify their overall market
exposure. As an example, a user who suddenly becomes nervous about
the stock market might decide to reduce overall risk by 50%. With
this single parameter, the user can reduce their estimated beta
from 1.0 to 0.5, cutting market exposure in half
[0104] As another example, as described herein, a user's portfolio
preference can contain information regarding a range for allocation
per asset (e.g., a minimum and maximum amount of the portfolio that
can be invested in a particular stock). This can be used as a
per-position constraint for the optimization model. This can be
beneficial, for example, as it allows users to override the
optimization results from the optimization model, and instead
require a certain allocation, or range of allocations, for any
specific stock. The optimization model can then maximize returns
subject to this extra condition or set of conditions.
[0105] In some implementations, these parameters can be determined
based on market data (e.g., information obtained from the financial
market database 150). This can include, for example, live or
delayed market prices (during trading hours) or recent closing
prices (when markets are closed). The current prices for each asset
can be used to compute the expected returns of each asset given the
price target, estimated dividend, and horizon in the corresponding
prediction. As the market data changes, the optimization model can
account for these changes, and update its optimal or target
positions in response. In some cases, market data can also include
one or more covariance matrices that include pairwise covariances
between the historical returns of assets of a particular financial
market. This can be used, for example, to assess how correlated
assets are to each other and the risk associated with each
asset.
[0106] As described herein, the modelled transactions can be
determined by comparing the current state of the user's portfolio
with a target state of the portfolio determined by the optimization
model. That is, the modelled transactions can represent a series of
transactions that can be executed to align the current state of the
financial portfolio to the optimal or target state. For example, a
user's portfolio might be allocated such that 50% of its value is
held in a stock A, and 50% of its value is held in a stock B. Based
on the user's predictions, the predictions of others, their
preferences, and/or their objectives, the optimization model
determines that the optimal or target state of the portfolio
allocates 25% of its value to the stock A, 25% of its value to the
stock B, and 50% of its value to a stock C. Thus, the financial
platform 140 can output a series of transactions in which a portion
of stock A corresponding to 25% of the value of the portfolio is
sold, a portion of stock B corresponding to 25% of the value of the
portfolio is sold, and a portion of stock C corresponding to 50% of
the value of the portfolio is purchased.
[0107] In some implementations, the user can instruct the financial
platform 140 to execute the transactions. In this case, the
modelled transactions (320) are executed against the current
portfolio (318), resulting in an optimized (or otherwise modified)
portfolio (322). In some implementations, the financial platform
140 can automatically execute transactions continuously,
periodically, or according to some other arbitrary period, such
that the portfolio is automatically optimized (or otherwise
modified) over time.
[0108] In some implementations, however, the financial platform 140
need not actually execute the financial transactions. For example,
in some implementations, the financial platform 140 can output one
or more modelled transactions, and track the simulated performance
of those transactions and corresponding portfolio over a period of
time, as if they actually had been executed in a real-world
financial market. This can be beneficial, for example, as it
enables users to evaluate the performance of the financial platform
140 over a period of time without conducting actual transactions in
a real-world financial market. This also can be beneficial, for
example, as it enables users to view modelled or simulated trades
in a low-risk environment.
[0109] As described herein, the financial platform 140 can
represent and store information using one or more data structures
having pre-defined arrangements.
[0110] As an example, the financial platform 140 can store
information regarding the state each user's financial portfolio
using one or more structured database tables. The database table
can include one or more records (e.g., one or more "columns" or
"rows" of data fields), each containing information regarding a
particular user's financial portfolio. For instance, each record of
a database table can include a unique identifier associated with
the record (e.g., an integer or alphanumeric sequence uniquely
identifying the record in the database table), a unique identifier
associated with a particular user (e.g., an integer or alphanumeric
sequence uniquely identifying the user), and timestamps indicating
particular actions that the user took with respect to the account
(e.g., when the user created the account, when the user last
updated the account, and so forth).
[0111] As another example, the financial platform 140 can store
information regarding its users' transactions with respect to their
financial portfolios using one or more structured database tables.
For instance, each record of a database table can include a unique
identifier associated with a particular financial transaction
(e.g., an integer or alphanumeric sequence uniquely identifying the
transaction), a unique identifier associated with the user that
conducted the transaction (e.g., an integer or alphanumeric
sequence uniquely identifying the user), a unique identifier
associated with the recipient of the transaction (e.g., an integer
or alphanumeric sequence uniquely identifying the recipient), the
value of the transaction (e.g., in the form of a double precision
floating point number), an indication of whether the transaction
pertained to real-money or simulated trading (e.g., in the form of
a Boolean value), a timestamp indicating when the transaction took
place, and/or fields indicating other parameters related to the
transaction.
[0112] As yet another example, the financial platform 140 can store
information regarding its users' portfolio settings (e.g., the user
portfolio settings 312) using one or more structured database
tables. For instance, each record of a database table can include a
unique identifier associated with the record (e.g., an integer or
alphanumeric sequence uniquely identifying the record in the
database table), a unique identifier associated with a particular
user (e.g., an integer or alphanumeric sequence uniquely
identifying the user), a unique identifier associated with a
particular security or asset (e.g., an integer or alphanumeric
sequence uniquely identifying the asset or security), indications
of the minimum and maximum allowable allocations that the user has
selected for a particular asset or security (e.g., in the form of
integers), and/or timestamps indicating when the constraint was
created and/or last modified.
[0113] As yet another example, the financial platform 140 can store
information regarding the connections or associations between its
users (e.g., the connections or associations between its users on
the social media platform 160) using one or more structured
database tables. For instance, each record of a database table can
include a unique identifier associated with the record (e.g., an
integer or alphanumeric sequence uniquely identifying the record in
the database table), a unique identifier associated with a first
user (e.g., an integer or alphanumeric sequence uniquely
identifying the first user), a unique identifier associated with
another user connected to the first user (e.g., an integer or
alphanumeric sequence uniquely identifying the other user), fields
indicating the users' identifiers on a social media platform (e.g.,
user names, e-mail addresses, and so forth), and/or fields
indicating profile information associated with the users (e.g.,
contact information, textual content shared by the users, and/or
photographs, videos, or other media shared by the users).
[0114] As described herein, users can modify their connections or
associations with other users on the social media platform (e.g.,
by "inviting" other users to connect with them). Information
regarding these invitations can be stored using one or more
structured database tables. For instance, each record of a database
table can include a unique identifier associated with the record
(e.g., an integer or alphanumeric sequence uniquely identifying the
record in the database table), a unique identifier associated with
the user who initiated the invitation (e.g., an integer or
alphanumeric sequence uniquely the user who initiated the
invitation), a unique identifier associated with the invitee (e.g.,
an integer or alphanumeric sequence uniquely the user who received
the invitation), a unique token that was sent to the invitee (e.g.,
a token that the invitee can use to accept the invitation), and/or
timestamps indicating when the invitation was created, updated,
and/or deleted.
[0115] As described above, the transactions outputted by the
financial platform 140 can be executed on a financial market. In
some cases, these transactions can be executed by transmitting
instructions to a third party (e.g., a clearing broker firm) using
the communications module 220. Such instructions could be encoded,
for example, in the FIX specification for financial messaging, and
a database table can include a record for each instruction. For
instance, a record can include a FIX message (e.g., in the form of
a string), an order identification number (e.g., in the form of an
integer), a message direction field to indicate whether it is an
incoming or outgoing message from the communications module 220
(e.g., in the form of a string), and/or timestamps indicating when
the message was sent, received, and/or revised.
[0116] As yet another example, the financial platform 140 can store
information regarding its users' predictions about assets on a
financial market using one or more structured database tables. For
instance, each record of a database table can include a unique
identifier associated with the record (e.g., an integer or
alphanumeric sequence uniquely identifying the record in the
database table), a unique identifier associated with a user who is
utilizing the prediction (e.g., an integer or alphanumeric sequence
uniquely identifying the user who selected and/or activated the
prediction), a predicted future price or return for the asset
(e.g., in the form of a double precision floating point number),
the confidence of the user in this prediction (e.g., in the form of
an integer), the user's projected dividend yield or payment for the
asset (e.g., a double precision floating point number), the time
horizon over which the user expects the projected performance to be
realized (e.g., in the form of an integer representing a number of
days, months, or years), the type of investment thesis represented
by the idea (e.g., an integer or string indicating "growth,"
"value," or other theses), a unique identifier associated with a
user who created the prediction (e.g., an integer or alphanumeric
sequence uniquely identifying the user who made the prediction), an
indication whether or not the asset and its projection are active
within the user's portfolio (e.g., a Boolean), and/or timestamps
indicating the times at which various events occurred in relation
to the projection, such as its creation, modification, and/or
deletion.
[0117] As yet another example, the financial platform 140 can store
information regarding its users' "thoughts" or statements about
assets of a financial market of predictions relating to these
assets. For instance, each record of a database table can include a
unique identifier associated with the record (e.g., an integer or
alphanumeric sequence uniquely identifying the record in the
database table), a unique identifier associated with a user who
made the statement (e.g., an integer or alphanumeric sequence
uniquely identifying the user who made the statement), a unique
identifier associated with a particular security or asset (e.g., an
integer or alphanumeric sequence uniquely identifying the asset or
security), a text field containing the thought text entered by the
user (e.g., a string), a field indicating whether the statement
expresses positive view (e.g., a "Pro" label) or a negative view
(e.g., a "Con" label) (e.g., a string), an indication of whether
the user agrees or disagrees with the statement (e.g., a Boolean),
and/or timestamps indicating the times at which various events
occurred in relation to the statement, such as its creation,
modification, and/or deletion.
[0118] As yet another example, information regarding one or more
financial markets (e.g., information maintained by the financial
market database 150) can be stored using one or more structured
database tables. For instance, each record of a database table can
include a unique identifier associated with the record (e.g., an
integer or alphanumeric sequence uniquely identifying the record in
the database table), a unique identifier associated with a
particular security (e.g., an integer or alphanumeric sequence
uniquely identifying the security), the ticker symbol of the
security (e.g., in the form of a text string), the exchange on
which the security trades (e.g., in the form of an integer
representing the exchange), the security's quoted currency (e.g.,
in the form of a string), codes representing the security in other
platforms or systems (such as market data systems, trading systems,
or financial quotation systems) (e.g., in the form of integers),
the total market capitalization of the company (e.g., in the form
of an integer), the type of security (for example, a stock,
exchange-traded fund, or depository receipt) (e.g., in the form of
an integer), an average analyst price estimate for the security
(e.g., a floating point number), and/or other types of
information.
[0119] In some implementations, the processing module 230 of the
financial platform 140 can generate a list of orders, which can be
stored, for example, as records contained in a database table. This
table can be passed to the communications module 220 within the
financial platform 140 for further processing and conveyance to a
third party for trade execution, or to a simulated environment
within financial platform 140 that can record such trades without
placing actual securities transactions in real-world financial
markets. For instance, each record of a database table can include
a unique identifier associated with the record (e.g., an integer or
alphanumeric sequence uniquely identifying the record in the
database table), a unique identifier associated with the user
placing the trade (e.g., an integer or alphanumeric sequence
uniquely identifying the user), a unique identifier associated with
the asset being traded (e.g., an integer or alphanumeric sequence
uniquely identifying the asset), an order type (e.g., in the form
of an integer representing the order type), a financial projection
upon which the trade is based (such as, for example, a price
target, time horizon, and/or confidence level) (e.g., in the form
of one or more integers and/or double precision floating point
numbers), the number of shares to be traded (e.g., in the form of
an integer), a limit price (e.g., in the form of a double precision
floating point number), an estimated commission (e.g., a double
precision floating point number), the total value of the order
(e.g., in the form of a double precision floating point number),
and/or timestamps indicating when the order was placed, updated,
and/or executed.
[0120] In some implementations, information about all users of the
financial platform 140 and social media platform 160 can be
maintained in a database table. For instance, each record of a
database table can include a unique identifier associated with the
record (e.g., an integer or alphanumeric sequence uniquely
identifying the record in the database table), a unique identifier
associated with a particular user (e.g., an integer or alphanumeric
sequence uniquely identifying the record in the user), an email
address of the user (e.g., in the form of a text string), the
user's password (e.g., in the form of an encrypted text string), a
profile photo of the user for their social media profile (e.g., in
the form of an image, image information encoded as a text string,
or binary information), their contact information (such as an
e-mail address, telephone number, mailing address, and so forth)
(e.g., in the form of a text string), and/or biographical text
(e.g., in the form of a text string). Such a table can also contain
information about each user's portfolio settings such as their
maximum allowable financial leverage in the account (e.g., in the
form of a double precision floating point number), an indication of
whether they want to participate in short sales (e.g., in the form
of a Boolean), their maximum target concentration in a single
position (e.g., in the form of a double precision floating point
number), their minimum and maximum target portfolio beta (e.g., in
the form of double precision floating point numbers), among other
types of information.
[0121] Pseudo-code representing example data structures are
provided below. However, it is appreciated that these are merely
illustrative examples. In practice, other data structures and
arrangements are possible, depending on the implementation.
TABLE-US-00001 database table "user_accounts" int account_id int
unique_user_id timestamp time_created timestamp last_updated
database table "user_activities" int unique_user_id int
unique_transaction_id int recipient_id double transaction_value
bool simulated_trade, default = TRUE timestamp activity_time
database table "portfolio_settings" int unique_user_id int
security_id int_min_allocation int max_allocation timestamp
time_created timestamp last_updated database table
"social_connections" int requester_id int invitee_id bool accepted,
default = FALSE timestamp time_created timestamp last_updated
database table "third_party_social_media" int unique_user_id int
third_party_id string email_address string profile_photo database
table "invitations" int sender_user_id string
receiver_email_address int invitation_token timestamp time_created
timestamp last_updated timestamp time_deleted database table
"trading_messages" int unique_user_id string fix_message int
order_number string direction timestamp time_sent timestamp
time_received timestamp last_updated database table "predictions"
int unique_user_id int security_id double projected_price int
confidence_level double dividend_yield int time_horizon_in_months
int thesis_category string thesis_text, required = FALSE bool
active_prediction timestamp time_created timestamp last_updated
timestamp time_deleted database table "thoughts" int unique_user_id
int security_id string thought_text string thought_type bool
user_agrees timestamp time_created timestamp last_updated timestamp
time_deleted database table "market_data" int security_id string
ticker int exchange_code string currency int market_data_id int
trading_system_id int quote_system_id int market_cap int
security_type float avg_price_estimate database table "customer
orders" int unique_user_id int security_id int order_type double
price_target int time_horizon int confidence_level int order_size
double limit_price double total_order_value timestamp order_placed
timestamp order_updated timestamp order_executed database table
"user_list" int unique_user_id string email_address string
password, encrypted = TRUE string profile_photo string
mailing_address string biography double max_leverage bool
short_sales_allowed double max_single_position_concentration double
min_beta double max_beta
[0122] In some implementations, a user can interact with the
financial platform 140 using a graphical user inter (GUI) provided
by the financial platform 140. For example, the financial platform
140 can generate a webpage or website, and transmit that webpage or
web site to a client computing system 120a-c. The user can interact
with the webpage or website on their client computing system
120a-c, and transmit commands back to the financial platform
140.
[0123] FIG. 4A shows an example GUI 400 that allows a user to view,
input, and/or modify information regarding a prediction. The GUI
400 includes various control elements 402 that allow a user to
input information regarding their prediction (e.g., the asset, the
predicted direction of that asset, the target price, the user's
conviction with respect to the prediction, the expected dividend,
the horizon, the thesis, and so forth). The GUI 400 can also
display a graphical portion 404 that visually depicts information
regarding the asset and the prediction (e.g., the current price of
the asset, the average target price predicted by market analysts
with respect to this asset, the minimum target price predicted by a
market analyst, the maximum target price predicted by a market
analyst, and so forth).
[0124] FIG. 4B shows an example GUI 410 that allows a user to
create predictions and/or select predictions made by third parties.
The GUI 410 includes a number of entry spaces 412. A user can
select one of the entry spaces 412, and input a name of an asset in
a text box 414. In response, the user can be presented with a GUI
to input other information regarding a prediction for that asset
(e.g., the GUI 400). The user can also select one of the entry
spaces 412, and select one of the third-party predictions displayed
in the portion 416. As described herein, the third-party
predictions displayed in the portion 416 can be automatically
presented by the financial system 140. For example, the financial
system 140 can automatically display one or more predictions
generated by one or more of the user's social connections, or one
or more publicly known predictions (e.g., predictions generated by
a well known investor, pundit, thought leader, or so forth). The
inputted or selected predictions are displayed in the entry spaces
412, indicating that the user has selected those predictions.
[0125] FIG. 4J shows another example GUI 490 that allows users to
create predictions and/or elect to include a selection of
diversified ETFs or other assets. The GUI 490 includes a dialog 492
enabling a user to enter a voteable statement or "thought" for each
prediction, and indicate whether the statement expresses a positive
sentiment regarding the asset (e.g., by selecting "Pro" if the user
believes that the asset will appreciate) or a negative sentiment
for the asset (e.g., by selecting "Con" if the user believes that
the asset will depreciate).
[0126] As described herein, in some implementations, a user can
view the portfolio allocations of one or more other users. FIG. 4C
shows an example GUI 420 that presents a grid 422 displaying the
identities of several other users, assets held by those users, and
a respective user's allocation of value among each of those assets.
This can be useful, as it allows a user to quickly and visually
compare their portfolio composition with that of several other
users at once. The GUI 420 also includes a portion 424 that
presents predictions generated by several other users and/or well
known investors, pundits, thought leaders, and so forth. The user
can interact with the portion 424, and select predictions to be
saved for future review, or to be activated in the user's
portfolio.
[0127] As described herein, a user can select and save one or more
predictions for future review. The user can later examine these
predictions, and select particular predictions that they wish to
activate with respect to their portfolio (e.g., to generate
transactions based on the active predictions). FIG. 4D shows an
example GUI 430 for selectively activating and deactivating saved
predictions. The GUI 430 includes a listing of each of the
predictions 432 that were saved by the user. If the user wishes to
activate a particular prediction, they can toggle a control element
434. In response, the GUI 430 can display that prediction using a
different font style (e.g., bold), a particular color (e.g.,
brightly colored), and/or icon (e.g., a green icon), indicating
that the prediction has been activated. Inactive predictions can be
indicated, for example, using a contrasting font style (e.g.,
light), a contrasting color (e.g., gray), and/or icon (e.g., a red
icon). This is beneficial, for example, as it allows the user to
visually ascertain which of the saved predictions have been
activated. The user can also revise any of the saved predictions by
selecting a control element 436. In response, the financial
platform 140 can present the user with a GUI for editing the
prediction (e.g., the GUI 400).
[0128] As described herein, a user can input various portfolio
parameters that control or influence the transactions that are
generated by the financial platform 140 (e.g., modelled or
simulated transactions). FIG. 4E shows an example GUI 440 that
allows a user to input and revise their portfolio parameters. The
GUI includes various control elements 442 that allow the user to
input and/or revise portfolio parameters (e.g., overall objective,
risk profile, portfolio volatility, minimum dividend, and so
forth). The GUI 440 also includes a graphical portion 444 that
visually depicts the predicted or potential future state of the
portfolio based on the portfolio settings. For example, the
graphical portion 444 can display a range 446 of predicted values
for the portfolio if no future transactions were to be made, and a
range 448 of predicted values for the portfolio based on the
current portfolio settings and the transactions determined based on
those current portfolio settings. While this illustration presents
the information in graphical form, it is appreciated that the
information could also be displayed as text, a table, an
interactive element, or in any other form. This presentation is
beneficial, for example, as it allows a user to compare the
estimated performance of their portfolio prior to optimization by
the financial platform 140, against the estimated performance of
their portfolio after optimization by the financial platform
140.
[0129] As described herein, the financial platform 140 can
determine one or more transactions that can be executed to optimize
(or otherwise modify) the composition of the user's financial
portfolio. FIG. 4F shows an example GUI 450 that presents
information regarding the user's current portfolio composition, and
an optimized or target portfolio composition. This allows the user
to quickly compare the current state of their portfolio against the
optimized or target state of the portfolio, and ascertain the
differences between them. The user can elect to execute all or some
of the transactions that would bring the portfolio from its current
state to its optimized (or otherwise modified) state.
[0130] As described herein, the financial platform 140 can display
information to users using notifications or "feeds." FIG. 4G shows
an example GUI 460 that presents information in the form of a list
462 (e.g., a chronological "feed" of information). Each item on the
list 462 includes a textual message 464 (e.g., describing a
particular event that occurred, or describing a particular
condition of the user's financial portfolio), and an image 466. A
user can select one or more of the items to obtain additional
information regarding the selected event or condition.
[0131] As described herein, the financial platform 140 can enable
users to enter statements or "thoughts" regarding an asset, and
vote on the statements or thoughts of others. FIG. 4H shows an
example GUI 470 that presents voteable statements to users. The GUI
470 includes a prediction portion 472 presenting information
regarding a user's prediction. The GUI 470 also includes a list 474
displaying voteable statements regarding the prediction (e.g., an
opinion regarding the performance of a corporate executive, an
opinion regarding the value of the asset, an opinion regarding a
product of the company, and so forth). Users can vote in support of
or against each statement (e.g., by selecting an appropriate
command, such as "like," "dislike," "thumbs up," "thumbs down,"
etc.). Further, the list 474 can be sorted, such that popular
statements (e.g., statements having higher net vote totals) are
more prominent than less popular statements (e.g., statements
having lower net vote totals).
[0132] Further, the GUI 470 enables users to solicit additional
information from the user who made the prediction (e.g., by
selecting an "Ask Why" command 476). The user who made the
prediction can enter a statement in response, and the response can
be presented on the list 474 for voting.
[0133] Further, the GUI 470 enables a user to pose questions to the
user who made the prediction (e.g., by entering a statement in a
dialog 478, indicating whether the statement is a positive
sentiment or a negative sentiment, and submitting the statement for
consideration, such that the user who made the prediction can vote
on it, and the user who posed the question can view the result of
that vote).
[0134] As described herein, a user can input information regarding
each prediction individually. For example, a user can input a
predicted return with respect to a first asset, and input a
different predicted return with respect to a second asset. However,
in some cases, the user can enter information that is common to
multiple different predictions. As an example, a user can input a
single average predicted return with respect to their entire
portfolio. This single value can be applied to all of the user's
subsequent predictions with respect to that portfolio as the
default predicted return. Price targets for predictions can be
determined by this default return, or can be further edited by the
user. This can be beneficial, for example, as the user does not
need to repeatedly enter the same predicted return across multiple
predictions, or manually calculate price targets. Thus, a user can
input predictions more quickly.
[0135] FIG. 4I shows an example GUI 480 for entering common
information across multiple different predictions. In this example,
the user can input a predicted yield across their entire portfolio
(e.g., by entering the predicted yield into the input box 482). The
entered predicted yield is propagated across each of the user's
predictions with respect to that portfolio, such that the user need
not manually input the information for each individual
prediction.
[0136] Although example GUIs are depicted and described herein,
these are merely illustrative example. In practice, a financial
platform 140 can provide different GUIs to perform each of the
functions described herein, either in addition to or instead of
those depicted.
[0137] FIG. 5 shows an example process 500 for determining one or
more transactions that can be can executed with respect to a
financial portfolio. As described herein, these transactions can be
modelled transactions, simulated transactions, transactions that
are automatically executed on behalf of the user, or other
transactions that optimize, improve, or otherwise modify the user's
portfolio. The process 500 can be performed, for example, by the
processing module 230 of the financial platform 140.
[0138] Several data structures are retrieved by at least one
processor (510). The data structures can include one or more first
data structures pertaining to a current state of a financial
portfolio of a first user. The data structures can also include one
or more second data structures pertaining to one or more historical
and/or current states of a financial market. The data structures
can also include one or more third data structures pertaining to
one or more predictions regarding one or more financial assets of
the financial market. The data structures can also include one or
more fourth data structures pertaining to the first user's
preferences with respect to the financial portfolio.
[0139] As described herein, example data structures include, for
example, SQL data structures, XML, data structures, Postgres data
structures, and spreadsheets. Such structures can include, for
example, sequences or arrangements of data items such as integers,
long integers, floating-point numbers, double-precision numbers,
Booleans, characters, strings, timestamps, and so forth. Data
structures can be linked, not linked, nested, combined, encrypted,
compressed, or otherwise manipulated or arranged for the purposes
of storing, accessing, modifying, and deleting information in a
database module (e.g., the database module 210).
[0140] The processor determines one or more transactions to be
conducted on the financial market based on the one or more first
data structures, the one or more second data structures, the one or
more third data structures, and the one or more fourth data
structures (520).
[0141] As described herein, in some implementations, these
transactions, when executed, can optimize, improve, or otherwise
modify the user's portfolio in accordance with their predictions,
the predictions of others, their preferences, and/or their
objectives. These transactions can be determined in different ways.
For example, as described herein, an optimal or target position can
be computationally determined using an optimization model, such as
a Markowitz mean variance (MMV) model or modified MMV model. These
models can be used, for instance, to maximize a portfolio's
expected return based on particular parameters, such as a predicted
future state of an asset, a given amount of portfolio risk,
restrictions on the types of transactions that can be performed, a
range of allowable asset allocations, and other such inputs. In
some implementations, these parameters can be determined based on
the user's selected predictions.
[0142] The processor executes the one or more transactions (530).
In some examples, the transactions can be executed on a financial
market automatically or in response to a user command. This can be
beneficial, for example, as it enables a user to quickly and
efficiently modify their financial portfolio. In some examples, the
transactions are not executed in a real-world financial market, and
are instead executed in a simulated environment, and their
performance is simulated over a period of time (e.g., as if they
actually had been executed in a real-world financial market). This
can be beneficial, for example, as it enables users to evaluate the
performance of the computerized financial trading system over a
period of time without conducting actual transactions in a
real-world financial market. This also can be beneficial, for
example, as it enables users to view modelled or simulated
transactions in a low-risk environment.
[0143] In some implementations, the process 500 can also include
retrieving the one or more predictions from one or more second
users different than the first user. As described herein, a
prediction can include an identity of a second user (e.g., another
user of a financial transaction system), an indication of a
particular financial asset of the financial market (e.g., a stock,
a bond, a commodity, or other asset), and an indication of a
predicted future price or return of that financial asset. In some
implementations, the prediction can also include an indication of
the second user's confidence regarding the at least one
prediction.
[0144] In some implementations, the one or more third data
structures can include various data fields. For example, as
described herein, the third data structures can each include a data
field containing an identity of the second user, a data field
containing an indication of the particular financial asset of the
financial market, and a data field containing an indication of a
predicted future price or return of that financial asset.
[0145] In some implementations, the first user's preferences can
include various parameters. For example, as described herein, these
parameters can include a risk tolerance of the first user with
respect to the financial portfolio, a leverage threshold with
respect to the financial portfolio, a volatility tolerance of the
first user with respect to the financial portfolio, a cash reserve
threshold with respect to the financial portfolio, one or more
asset allocation criteria with respect to the financial portfolio,
and/or a combination thereof.
[0146] The one or more transactions to be conducted on the
financial market can be determined in various ways. For example, in
some implementations, this can be performed by determining a target
state of the financial portfolio based on the first, second, third,
and fourth data structures, and determining a difference between
the target state of the financial portfolio and the current state
of the financial portfolio. Based on this information, the one or
more transactions to be conducted on the financial market to align
the current state of the financial portfolio to the target state of
the financial portfolio can be determined.
[0147] In some implementations, the one or more transactions can be
executed in response to receiving an indication to execute the one
or more transactions from the first user. The one or more
transactions can be executed substantially simultaneously and/or
automatically. In some implementations, the transactions can be
executed in a simulated environment (e.g., as if they actually had
been executed in a real-world financial market).
[0148] In some implementations, the one or more predictions can be
retrieved from the first user, and one or more fifth data
structures can be generated based on the one or more predictions
from the first user. The one or more fifth data structures can be
transmitted to one or more second users, such that the predictions
are shared with others.
[0149] In some implementations, one or more notifications can be
generated based on at least one of the data structures (e.g., one
or more of the first, second, third, fourth, and/or fifth data
structures), and the one or more notifications can be displayed to
the user (e.g., alone, sequentially, or concurrently, such as in a
"feed"). In some implementations, a notification can be generated
based on a third data structure that had been retrieved from a
second user (e.g., corresponding to a prediction shared by the
second user with the first user).
[0150] In some implementations, notifications can be generated
based on the financial portfolios of one or more users, and
displayed to another user for review. For instance, one or more
sixth data structures can be retrieved, where the sixth data
structures pertain to a financial portfolio of the second user. One
or more notifications can be determined based on the sixth data
structures and presented to the first user for review. As above,
notifications can be displayed to the user alone, sequentially, or
concurrently, such as in a "feed."
[0151] In some implementations, notifications can be generated
based on the associations between users, and displayed to another
user for review. For instance, one or more seventh data structures
can be retrieved, where the seventh data structures pertain to an
association between two or more users of a social media platform
(e.g., a "connection," "friendship," "link," or other association
between two or more users on a social media platform, such as the
social media platform 160, or third-party social network). One or
more notifications can be determined based on the seventh data
structures and presented to the first user for review. As above,
notifications can be displayed to the user alone, sequentially, or
concurrently, such as in a "feed."
[0152] Some implementations of subject matter and operations
described in this specification can be implemented in digital
electronic circuitry, or in computer software, firmware, or
hardware, including the structures disclosed in this specification
and their structural equivalents, or in combinations of one or more
of them. For example, in some implementations, the computing
systems 110a-c, the client computing system 120a-c, and the modules
140, 150, 160, 210, 220, and 230 can be implemented using digital
electronic circuitry, or in computer software, firmware, or
hardware, or in combinations of one or more of them.
[0153] Some implementations described in this specification can be
implemented as one or more groups or modules of digital electronic
circuitry, computer software, firmware, or hardware, or in
combinations of one or more of them. Although different modules can
be used, each module need not be distinct, and multiple modules can
be implemented on the same digital electronic circuitry, computer
software, firmware, or hardware, or combination thereof.
[0154] Some implementations described in this specification can be
implemented as one or more computer programs, i.e., one or more
modules of computer program instructions, encoded on computer
storage medium for execution by, or to control the operation of,
data processing apparatus. A computer storage medium can be, or can
be included in, a computer-readable storage device, a
computer-readable storage substrate, a random or serial access
memory array or device, or a combination of one or more of them.
Moreover, while a computer storage medium is not a propagated
signal, a computer storage medium can be a source or destination of
computer program instructions encoded in an artificially generated
propagated signal. The computer storage medium can also be, or be
included in, one or more separate physical components or media
(e.g., multiple CDs, disks, or other storage devices).
[0155] The term "data processing apparatus" encompasses all kinds
of apparatus, devices, and machines for processing data, including
by way of example a programmable processor, a computer, a system on
a chip, or multiple ones, or combinations, of the foregoing. The
apparatus can include special purpose logic circuitry, e.g., an
FPGA (field programmable gate array) or an ASIC (application
specific integrated circuit). The apparatus can also include, in
addition to hardware, code that creates an execution environment
for the computer program in question, e.g., code that constitutes
processor firmware, a protocol stack, a database management system,
an operating system, a cross-platform runtime environment, a
virtual machine, or a combination of one or more of them. The
apparatus and execution environment can realize various different
computing model infrastructures, such as web services, distributed
computing and grid computing infrastructures.
[0156] A computer program (also known as a program, software,
software application, script, or code) can be written in any form
of programming language, including compiled or interpreted
languages, declarative or procedural languages. A computer program
may, but need not, correspond to a file in a file system. A program
can be stored in a portion of a file that holds other programs or
data (e.g., one or more scripts stored in a markup language
document), in a single file dedicated to the program in question,
or in multiple coordinated files (e.g., files that store one or
more modules, sub programs, or portions of code). A computer
program can be deployed to be executed on one computer or on
multiple computers that are located at one site or distributed
across multiple sites and interconnected by a communication
network.
[0157] Some of the processes and logic flows described in this
specification can be performed by one or more programmable
processors executing one or more computer programs to perform
actions by operating on input data and generating output. The
processes and logic flows can also be performed by, and apparatus
can also be implemented as, special purpose logic circuitry, e.g.,
an FPGA (field programmable gate array) or an ASIC (application
specific integrated circuit).
[0158] Processors suitable for the execution of a computer program
include, by way of example, both general and special purpose
microprocessors, and processors of any kind of digital computer.
Generally, a processor will receive instructions and data from a
read only memory or a random access memory or both. A computer
includes a processor for performing actions in accordance with
instructions and one or more memory devices for storing
instructions and data. A computer may also include, or be
operatively coupled to receive data from or transfer data to, or
both, one or more mass storage devices for storing data, e.g.,
magnetic disks, magneto optical disks, or optical disks. However, a
computer need not have such devices. Devices suitable for storing
computer program instructions and data include all forms of
non-volatile memory, media and memory devices, including by way of
example semiconductor memory devices (e.g., EPROM, EEPROM, flash
memory devices, and others), magnetic disks (e.g., internal hard
disks, removable disks, and others), magneto optical disks, and CD
ROM and DVD-ROM disks. The processor and the memory can be
supplemented by, or incorporated in, special purpose logic
circuitry.
[0159] To provide for interaction with a user, operations can be
implemented on a computer having a display device (e.g., a monitor,
or another type of display device) for displaying information to
the user and a keyboard and a pointing device (e.g., a mouse, a
trackball, a tablet, a touch sensitive screen, or another type of
pointing device) by which the user can provide input to the
computer. Other kinds of devices can be used to provide for
interaction with a user as well; for example, feedback provided to
the user can be any form of sensory feedback, e.g., visual
feedback, auditory feedback, or tactile feedback; and input from
the user can be received in any form, including acoustic, speech,
or tactile input. In addition, a computer can interact with a user
by sending documents to and receiving documents from a device that
is used by the user; for example, by sending web pages to a web
browser on a user's client device in response to requests received
from the web browser.
[0160] A computer system may include a single computing device, or
multiple computers that operate in proximity or generally remote
from each other and typically interact through a communication
network. Examples of communication networks include a local area
network ("LAN") and a wide area network ("WAN"), an inter-network
(e.g., the Internet), a network comprising a satellite link, and
peer-to-peer networks (e.g., ad hoc peer-to-peer networks). A
relationship of client and server may arise by virtue of computer
programs running on the respective computers and having a
client-server relationship to each other.
[0161] While this specification contains many details, these should
not be construed as limitations on the scope of what may be
claimed, but rather as descriptions of features specific to
particular examples. Certain features that are described in this
specification in the context of separate implementations can also
be combined. Conversely, various features that are described in the
context of a single implementation can also be implemented in
multiple embodiments separately or in any suitable
sub-combination.
[0162] A number of embodiments have been described. Nevertheless,
it will be understood that various modifications may be made
without departing from the spirit and scope of the invention.
Accordingly, other embodiments are within the scope of the
following claims.
* * * * *