COMPUTERIZED SECURITIES MANAGEMENT TOOL

Various examples are directed to computerized securities management tools. A pricing service computing system may receive first net asset value (NAV) data describing a first NAV of an open end mutual fund and access first trust strike price data describing a first strike price for the trust shares at the first time. The pricing service computing system may determine that a difference between the first NAV and the first strike price is greater than a threshold value. In response to determining that the difference between the NAV and the strike price is greater than the threshold value, the pricing service computing system may send an alert message to a manager computing device. The alert message may comprise interrupt trigger data to cause the manager computing device to generate at least one of an audible alert or a visual alert.

TECHNICAL FIELD

Embodiments described herein generally relate to systems and methods for managing securities to enable transactions involving a trust and a related open-end mutual fund.

BACKGROUND

Raising capital for new investment opportunities can generate business challenges as well as technical challenges. One method of attracting capital to an investment opportunity is to provide investors with liquidity (i.e., the right to liquidate an investment and/or arbitrage differences in value between an investment fund and its underlying assets). Providing investors with liquidity, however, creates difficult technical challenges, for example, associated with tracking fund assets and shares.

DETAILED DESCRIPTION

Various examples described herein are directed to systems and methods for managing securities. In some examples, the systems and methods described herein are directed to managing securities structured as shares in a trust entity, shares in a mutual fund, such as an open end mutual fund, and assets held by the mutual fund. The mutual fund may own a plurality of reference assets and may issue tradable shares to the trust and to investors via an exchange. The trust may also issue tradable shares to investors on an exchange, which may be the same exchange offering the mutual fund shares.

The trust and mutual fund may enable transactions that enhance investor liquidity, for example, by allowing investors to arbitrage differences between the price of the reference assets and the price of the trust shares. For example, the trust may be structured to permit investors to redeem trust shares for mutual fund shares held by the trust or to issue new shares of the trust in return for mutual fund shares. If the price of the reference assets (e.g., the net asset value (NAV) of the mutual fund) exceeds the price of the trust shares, then investors may redeem trust shares in return for mutual fund shares held by the trust. Conversely, if the price of the trust shares exceeds the price of the reference assets, then the investor may provide mutual fund shares to the trust return for trust shares. For example, the trust may issue new trust shares in return for the received mutual fund shares.

Accordingly, various examples described herein utilize a pricing service system in communication with a mutual fund system and a trust system. The pricing service system may receive NAV data from the mutual fund system. (In some examples, the NAV data may be generated by a separate service that receives reference asset data from the mutual fund system and pricing information the reference assets, for example, from another data source.) The pricing system may also receive trust share strike price data, for example, from an exchange system. The pricing service system may compare the NAY of the mutual fund with the trust share strike price. If the difference is greater than a threshold, then the pricing service system may send an alert message to a manager computing device. The alert message may include interrupt trigger data to cause the manager computing device to generate an audible or visual alert. A user of the managing computing device may receive the audible or visual alert and, in response, rebalance the reference assets of the mutual fund. For example, the user may send an asset change order to the mutual fund system, wherein the asset change order describes a change to the reference assets of the mutual fund.

Another technical challenge involved in enabling arbitrage transactions in an environment including the described trust and mutual fund involves managing the assets and trust shares. For example, as described above, the trust may redeem trust shares, issue trust shares, receive mutual fund shares, etc. in different allowable transactions. The complexity of ownership and assets statuses for the trust makes managing the trust technically difficult. Accordingly, various examples described herein utilize a scalable trust database. The trust database may be configured to permit the easy addition of hardware to increase the storage capacity of the trust database. Also, in some examples, the trust database may operate according to a database schema that includes a trust share table and a mutual fund share table. The trust share table includes trust share records for each share or group of shares issued by the trust. A trust share record may indicate when a trust share or trust shares were created, a par value for the trust share, etc. The mutual fund share table may include mutual fund records for each mutual fund share or group of mutual fund shares owned by the trust. A trust system may add and/or subtract trust share records and/or mutual fund share records in response to transactions. These and other technical challenges and solutions will be apparent in view of the examples described herein.

Also, systems and methods in some examples may include and/or use an automated advisor system. The automated advisor system may be programmed to identify opportunities where the liquidity of the trust shares and/or mutual fund shares create arbitrage conditions. The automated advisor system may then execute one or more trades on behalf of a user and/or send an alert message to the investor indicating that arbitrage conditions exist. In some examples, the alert message may include transaction data describing an arbitrage transaction selected by the automated advisor system in response to the detected arbitrage condition. The alert message may include interrupt trigger data that causes an investor computer device to interrupt or pause its processing to display the transaction data.

In some examples, the automated advisor system may also receive desired position data indicating one or more positions that a user would like to take in the trust and/or mutual fund. Based on the prices of the trust shares and/or mutual fund shares, the automated advisor system may select a transaction for implementing the desired position.

FIG. 1is an environment100showing an entity structure102and a computerized securities management tool112. The entity structure102including a trust104, a mutual fund106, reference assets108, and investors110. Investors110may include any investors who are legally qualified to purchase trust shares of the trust104and/or mutual fund shares of the mutual fund106. In some examples, trust shares and/or mutual fund shares may be traded on an exchange, such as a public exchange. In some examples trust shares and/or the mutual fund shares may be publicly traded. The mutual fund106may own or otherwise measure its value relative to a set of reference assets108. The reference assets108may include any suitable investment assets including, for example, securities, real estate, currency, etc. The trust104may own some or all of the mutual fund shares.

The securities management tool112may comprise one or more of a pricing service system114, a trust system116, a mutual fund system118, and/or an exchange system124. The environment100may also comprise one or more broker systems126A,126B, one or more investor computing devices140A,140B used by investors142A,142B, and/or one or more manager systems146.

The mutual fund system118may be configured to provide management services to the mutual fund106. The mutual fund system118may be or include any suitable computing device or devices, such as, for example, one or more servers. The mutual fund system118may be in communication with a mutual fund asset database122. The mutual fund asset database122may be organized according to a database schema that includes a reference asset table. The reference asset table may comprise a plurality of reference asset records. Each reference asset record may comprise at least one asset record field describing a reference asset and at least one asset record field describing a price of the corresponding reference asset and/or another indication of the value of the reference asset. In some examples, the mutual fund asset database122may be scalable, for example, as described below with respect to the trust database120.

As described herein, the mutual fund system118may be configured to assist the pricing service system to generate a Net Asset Value (NAV) for the mutual fund106. The mutual fund system118may incorporate the NAV into NAY data128, which may be provided to the pricing service system114as described herein. The mutual fund system118, in some examples, generates the NAV itself. For example, the mutual fund system118may receive pricing data for the reference assets from a third party service, the exchange system124, etc. In some examples, the mutual fund system118may provide data describing the reference assets to a third party pricing service, which may generate the NAV and provide the NAV to the pricing service system. The NAV data128may be provided via any suitable connection including, for example, a File Transfer Protocol (FTP) connection. In some examples, the NAV data128may be sent by encrypted e-mail. In some examples, the mutual fund system118may generate the NAV data128periodically, such as daily or intra-daily. For example, the mutual fund system118may generate NAV data128on any suitable intra-day interval such as, for example, every hour, every 10 minutes, every 15 seconds, etc.

The trust system116may be configured to provide management services to the trust104. Like the mutual fund system118, the trust system116may be or include any suitable computing device or devices such as, for example, one or more servers. The trust system116may be in communication with a trust database120. In some examples, the trust database120is organized according to a database schema including a trust share table and a mutual fund share table. The trust share table may include a plurality of trust share records. Trust share records may describe one or more trust shares that have been issued by the trust. For example, a trust share record may indicate a name, number or other identifier of a trust share or group of trust, a timestamp indicating when the trust share or group of trust shares was issued, a par value for the trust share, etc. The mutual fund share table may include a plurality of mutual fund share records. Mutual fund share records may indicate mutual fund shares or groups of mutual fund shares owned by the trust. For example, a mutual fund share record may include a name, number, or other identifier of a mutual fund share or group of mutual fund shares, a timestamp indicating when the mutual fund share or shares was acquired, a time stamp indicating when the mutual fund share or shares was sold, a purchase and/or sale price for the mutual fund share or shares, etc.

As described herein, the trust104may issue and redeem shares, sometimes large numbers of shares, over the course of its operation. Similarly, the trust104may acquire and distribute mutual fund shares, sometimes large numbers of mutual fund shares. Also, as described herein, the number of trust shares issued and mutual fund shares held by the trust104can vary over time, sometimes significantly. For this reason, the size of the trust share table and the mutual fund share tables may vary, and sometimes vary significantly, during operation of the trust system116. Accordingly, in some examples, the trust database120may be or include a scalable database.

A scalable database may be configured to dynamically add storage hardware, for example, while minimizing the impact on the transaction rate (e.g., measured in transactions per second). For example, the trust database120may partition tables, such as the mutual fund share table or the trust share table, based on values for record key stored at a key record field). In some examples, records may be assigned to different partitions based on the value of the record key (e.g., record keys 1-10,000 may be at one partition, 10,001-20,000 at a different partition, and so on). In other examples, records may be assigned to different partitions in another manner, such as in order of creation or deletion. For example, the trust database120may maintain a partition table indicating the partitions that correspond to different records of the mutual fund share table, the trust share table, or other tables.

Different table partitions may be stored at different servers and/or storage devices. When a table grows beyond the storage or management capabilities of the existing servers, the trust database120may add a new partition of the table at a new server. For example, if the trust104issues new shares resulting in an increase in size to the trust share table or if the trust104receives mutual fund shares resulting in an increase in size of the mutual fund share table, the trust database120may be configured to add an additional server or servers to manage new partitions of the respective tables. Similarly, if the number of records at a table (e.g., the mutual fund share table or the trust share table) results in a below the capabilities of the existing servers, the trust database120may remove table partitions and subtract un-needed hardware. Removing table partitions may involve redistributing records from partitions that are to be removed to other partitions.

The pricing service system114may be or include any suitable computing device or devices, such as, for example, one or more servers. The pricing service system114may be programmed to detect arbitrage conditions and, upon detecting arbitrage conditions, send the alert message136to a manager computing device146(e.g., via a securities management application144). The pricing service system114, in some examples, may receive the NAV data128and may receive strike price data for the trust shares. The strike price data for the trust shares may indicate the price at which the trust shares are trading to investors110(such as on an exchange managed by the exchange system124). The pricing service system114may compare the strike price of the trust shares with the NAV of the mutual fund106. If the difference is greater than a threshold, the pricing service system114may send an alert message136to a manager computing device146. The alert message136may include interrupt trigger data that causes the manager computing device146to provide an audible alert and/or a visual alert to the user148. In some examples, the user148may choose to modify the reference assets108of the mutual fund106. For example, the user148may send an asset change order to the mutual fund system118.

The manager computing device148may be or include any suitable type of computing device such as, for example, a laptop computer, a desktop computer, a tablet computer, a smart phone, etc. The managing computing device148, in some examples, executes a securities management application144. For example, the securities management application144may receive the alert message136and/or generate the audible and/or visual alert. In some examples, the manager computing device146also executes one or more other applications145that may provide various other functionality such as, for example, word processing, web browsing, research provision, etc. In some examples, the interrupt trigger data included with the alert message136may cause the manager computing device146to pause or cease the execution of an other application145to provide the audible or visual alert.

In some examples, trades may be executed utilizing an exchange system124. For example, investors142A,142B may hold accounts with a broker. A broker may implement a broker system126A,126B for receiving and implementing buy or sell requests from investors142A,142B (and/or from brokers or other advisors of investors142A,142B). In some examples, investors142A,142E access the broker systems126A,126B via one or more investor computing devices140A,140B. Investor computing devices140A,140B may be or include any suitable type of computing device such as, for example, a laptop computer, a desktop computer, a tablet computer, a smart phone, etc. in some examples, investor computing devices140A,140B may execute investor applications138A,138B for communicating with and accessing the functionality of the respective broker systems126A,126B.

Upon receiving requests from investors142A,142B (and/or brokers or other advisors of investors142A,142B) a broker system126A,126B may provide buy or sell orders to the exchange system. The exchange system124may be or include any suitable computing device or devices, such as, for example, one or more servers. In some examples, a broker system126B may hold individual accounts with the exchange system124on behalf of some or all investors142A,142B who utilize the broker system126A,126B. For example, the broker system126B may send an individual order134, which may be a buy order or a sell order. In other examples, a broker system126A may have an omnibus account with the exchange system124. For example, the broker system126A may aggregate buy or sell orders over a number of investors142A,142B and send omnibus order, such as omnibus order data132, including a net number of trust shares and/or mutual fund shares over a number of individual orders from investors142A,142B. Although the broker system126A is shown sending an omnibus order132and the broker system126B is shown sending an individual order134, in some examples, a broker system, such as126A,126B may send both individual and omnibus orders, for example, depending on the investor142A,142B from which the order or orders originated.

The exchange system124may receive orders132,134and provide order data to the pricing service system114and/or trust system116. For example, the trust system116may have an omnibus account with the exchange system124. For example, the exchange system124may aggregate some or all of the received orders that affect the trust104and provide a single omnibus order130. The omnibus order130may be provided to the pricing service system114. For example, the pricing service system may utilize the omnibus order130to determine a strike price for the trust shares. In some examples, the omnibus order130may be provided directly to the trust system116.

FIG. 2is a diagram showing the environment100ofFIG. 1with additional components including an automated advisor system150. The automated advisor system150may be or include any suitable computing device or devices, such as, for example, one or more servers. The automated advisor system150may be programmed to perform additional securities management for an investor156. In some examples, the automated advisor system150may detect arbitrage conditions. When an arbitrage condition exists, the automated advisor system150may send an alert message158to the investor156, for example, via an automated advisor application152executing at the investor computing device154. The alert message158may describe one or more transactions selected by the automated advisor system150to respond to the arbitrage condition. In some examples, the alert message158also includes interrupt trigger data that may instruct the investor computing device154to interrupt its processing to display transaction describing the selected transaction or transactions. In some examples, the automated advisor system150may automatically execute a transaction on behalf of the investor156, for example, in response to an arbitrage condition.

In some examples, the automated advisor system150may be programmed to determine the suitability of a trade before executing the trade and/or sending the alert message158to the investor156. Determining the suitability of a trade may include determining whether the trade is consistent with applicable regulations and/or determining that market liquidity is likely to support the trade.

The automated advisor system150may detect arbitrage conditions and/or determine the suitability of a trade, for example, based on trade data164. Trade data164may be received from the exchange system124, the pricing service system114and/or the mutual fund system118. For example, the automated advisor system150may receive from the exchange system124trust share strike price data describing a strike price of the trust shares and/or mutual fund inter-day NAV values indicating the net asset value of the reference values of the mutual fund106. In some examples, however, share strike prices for the trust104and/or NAV values for the mutual fund106may be received from another source, such as a data stream provided by a third party server (e.g., see data service server170inFIG. 12).

In some examples, trade data164may also include data regarding a volume and/or type of trades in the trust shares and/or the mutual fund shares. For example, trade data164may include bid/ask spread data indicating a price difference between the average ask price for a share (i.e., the average price that a seller is willing to receive for a share) and the average bid price for a share (i.e., the average price that a buyer is willing to pay). If the bid/ask spread is high, it may indicate a relatively low liquidity for the trust share and/or mutual fund share, meaning that some transactions (and especially transactions for larger numbers of shares) may be difficult to complete.

In some examples, the automated advisor150may send a trade order162to the exchange system124and/or to the mutual fund system118. In some examples, the trade order162is generated automatically by the automated advisor150to implement an automatic trade, for example, as described herein. In other examples, the trade order162may have been provided to an investor156(e.g., via the UI160). Upon approval of the trade by the investor156, the automated advisor system150may provide the trade order162to the exchange system124and/or to the mutual fund system118. In some examples, the investor156may provide data to file one or more fields of the trade order162(e.g., via the UI160). Also, in some examples, the automated advisor system150may pre-fill some or all of the trade order162.

The investor156may interact with the automated advisor system150, in some examples, utilizing an investor computing device154similar to the investor computing devices140A,140B described herein above. The investor computing device154may execute an automated advisor application152. The automated advisor application152may receive alert messages158. In some examples, automated alert messages158may include interrupt trigger data that may, upon receipt of the automated alert message158, cause the investor computing device154to interrupt the processing of another application, similar to the other application145ofFIG. 1.

In some examples, the automated advisor system150may provide the investor computing device154with a user interface160(e.g., via the automated advisor application152, The user interface160may provide the investor156with functionality for configuring the automated advisor system150, for receiving trade data from the automated advisor system150, for displaying an automated alert message158, etc. In some examples, the automated advisor system150may provide the investor156with data describing one or more transactions selected by the automated advisor system150through the user interface160. The investor156may indicate through the user interface160whether to proceed with the transaction.

For clarity,FIG. 2omits several components shown inFIG. 1including, for example, the broker systems126A,126B. In various examples, these and other features ofFIG. 1may be included in the environment100as illustrated inFIG. 2. For example, trade orders162, in some examples, may be sent via a broker system126A,126B. Also, in some examples, trades from trade orders162generated by the automated advisor system150may be incorporated with other trades into an omnibus order130,132, as described herein. Additionally, althoughFIG. 2shows a single investor156, the automated advisor system150may serve multiple investors simultaneously

FIG. 3is a diagram showing one example of the environment100showing additional components.FIG. 3illustrates various components shown inFIG. 1the mutual fund system118, mutual fund asset database,122, trust system116, trust database120, pricing service system114, exchange system124, and automated advisor system150ofFIGS. 1-2. User computing devices172may include computing devices140A,140B,146,156ofFIGS. 1-2.FIG. 3shows additional components that may be included in the environment100including, for example, a data service server170and an infrastructure as a service (IAAS) system174. The data service server170may provide the various components of the environment100with data describing the entity structure102, the investors, etc., for example, as described herein. The IAAS system174may include hardware to execute one or more virtual machines176A,176B,176C,176N. The virtual machines176A,176B,1760,176N may implement all or parts of any of the other components of the environment100. In some examples, the number of virtual machines176A,176B,176C,176N may change based on load conditions, for example, as described herein. In some examples, the IAAS system174may be or include a web services system, such as Amazon Web Services® available from Amazon.com, Inc. or the Azure® available from Microsoft, Inc.

The various components118,122,116,120,114,124,140A,140B,146of the environment100may be in communication with one another via a network171. The network171may be or comprise any suitable network element operated according to any suitable network protocol. For example, one or more portions of network171may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), a portion of the Internet, a portion of the Public Switched Telephone Network (PSTN), a cellular telephone network, a wireless network, a Wi-Fi network, a WiMax network, another type of network, or a combination of two or more such networks.

FIG. 4is a flow chart showing one example of a process flow400that may be executed to implement an arbitrage transaction in the environment100when the trust shares are under-valued relative to the mutual fund shares. Optionally, at operation402, an investor purchases trust shares. In some examples, the investor may already own the trust shares and may not need to purchase any. At operation404, the investor delivers the trust shares to the trust. At operation406, the trust may redeem the delivered shares in return for mutual fund shares. In various examples, the transactions of the process flow400may be executed in the environment100ofFIG. 1. For example, an investor142A,142B may request trust shares, present the trust shares for redemption, and receive mutual fund shares using an investor computing device140A,140B, broker system126A,126B, and exchange system124, as described herein.

FIG. 5is a flow chart showing one example of a process flow500that may be executed to implement an arbitrage in the environment100when the trust shares are over-valued relative to the mutual fund shares. Optionally, at operation502, the investor may purchase mutual fund shares. In some examples, the investor may already own the mutual fund shares and may not need to purchase any. At operation504, the investor may deliver the mutual fund shares to the trust. At operation506, the trust may issue new trust shares to the investor in return for the mutual fund shares. In various examples, the transactions of the process flow500may be executed in the environment100ofFIG. 1. For example, an investor142A,142B may request mutual fund shares, present the mutual fund shares to the trust, and receive newly-issued trust shares using an investor computing device140A,140B, broker system126A,126B, and exchange system124, as described herein.

FIG. 6is a flow chart showing one example of a process flow600that may be executed in the environment100to process trades involving the trust104and mutual fund106. At operation602, an investor142A may utilize an investor application138A to send a trust share issue order to the broker system126A. The trust share issue order may be similar to the transaction described herein at the process flow400. For example, the investor142A may have an account with the broker system126A that includes mutual fund shares to act as compensation for the trust shares to be issued. At operation604, an investor142B may utilize an investor application138B to send a trust share redemption order to the broker system126A. The trust share redemption order may be similar to the transaction described herein at the process flow400. For example, the investor142B may have an account with the broker system126A that includes trust shares to be redeemed.

At operation606, the broker system126A may aggregate orders for the trust. For example, the order of operation602may be aggregated with the order of operation604. At operation608, the broker system126A may send an omnibus order, such as omnibus order132, to the exchange system124. For example, if broker system126A may determine a net number of trust shares to be redeemed or issued and a net number of mutual fund shares to be provided to or relinquished by the trust104. To the extent that orders, such as those at operations602,604offset, the broker system126A may meet the orders from the accounts of the investors142A,142B. To illustrate, consider an example in which the investor142A provides five mutual fund shares to receive five trust shares, and the investor142B provides seven trust shares to receive seven mutual fund shares. The investor142A may receive five of the seven trust shares provided by the investor142B. Investor142B may receive the five mutual fund shares provided by the investor1421. The broker system126; may send an omnibus order132including investor142B additional two trust shares and requesting two mutual fund shares. Although the ratio of trust shares to mutual funds shares in this example is one-to-one, any suitable ratio may be used.

At operation610, the exchange system124may aggregate issue/redemption orders. This may occur, for example, in a manner similar to that used by the broker system to aggregate its orders at operation606. For example, the exchange system124may receive a number of orders, such as omnibus order132. The exchange system124may also, in some examples, receive individual orders from individual investors, (e orders that are not aggregated at a broker system such as126A,126B). The exchange system may generate an omnibus order130for the trust104. At operation612, the exchange system124sends the omnibus order130to the trust. The exchange system124may send the omnibus order130directly to the trust system116and/or indirectly to the trust system116via the pricing service system114.

At operation614, the trust system116provides and/or receives mutual fund shares (e.g., whether the trust system116provides and/or receives mutual fund shares may depend on the net of the transactions making up the omnibus order130). The trust system116may update the trust database120to reflect its new total of mutual fund shares. For example, if additional mutual fund shares are received, the trust system116may generate one or more new mutual fund share records at a mutual fund share table of the trust database120to describe newly received mutual funds. If the trust104is to provide mutual fund shares, the trust system116may query the trust database120to receive mutual fund share records from the mutual fund share table describing mutual fund shares that can be provided. Mutual fund share records corresponding to mutual funds shares to be provided may be deleted at the trust database120or otherwise modified to indicate that the trust104is to no longer own those shares.

The trust system116may also issue and/or redeem trust shares. For example, if trust shares are to be issued, the trust system116may write one or more additional trust share records to the trust share table at the trust database120. The one or more additional trust share records may include data describing newly-issued trust shares. If trust shares are to be redeemed, the trust system116may identify one or more trust share records at the trust table of the trust database120that reference the trust shares to be redeemed. The trust system116may modify and/or delete the returned records. In some examples, the trust system116may provide return data to the exchange system. The return data may include, for example, identifiers of newly-issued trust shares and/or mutual fund shares provided as part of the transaction.

At optional operation616, the trust system116may scale the trust database120. For example, if the trust104has provided mutual fund shares, then the number of mutual fund share records at the mutual fund table of the trust database120may be reduced. Accordingly, the trust system116may eliminate one or more partitions of the mutual fund share table of the trust database120. Similarly, if the trust has received mutual fund shares, then the trust system116may generate one or more additional partitions of the mutual fund share table to store mutual fund share records for the newly-received mutual fund shares. Also, for example, if the trust has issued new trust shares, it may generate a new partition of the trust share table to include trust share records describing the newly-issued trust shares. Also, for example, if the trust redeems shares it may delete existing partitions of the trust share table.

FIG. 7is a flow chart showing one example of a process flow700that may be executed by the mutual fund system118, for example, to generate and provide NAV data to the pricing service system114. At operation702, the mutual fund system may receive reference asset data describing values of the reference assets108. For example, the mutual fund system118may receive a list of the reference assets108from the mutual fund asset database122. Value data for the reference assets108may be retrieved form the mutual fund asset database122and/or received from the exchange system124. The asset value for the mutual fund106may be a sum of the values for the reference assets108. At operation704, the mutual fund system118may determine a net value of the reference assets108. This, for example, may indicate the net asset value of the mutual fund106. In some examples, the net value may be found by summing the value of the reference assets108and dividing by the number of issued mutual funds shares. The mutual fund system118may receive value data describing values of the reference assets108, for example, from the exchange system124(which may facilitate trades in the reference assets108) or from any suitable source. At operation706, the mutual fund system118may provide the NAV data128to the pricing service system114as described herein. As described herein, the mutual fund system118may perform the process flow700at any suitable interval including, for example, every hour, every 10 minutes, every 15 seconds, etc.

FIG. 8is a flow chart showing one example of a process flow800that may be executed by the pricing service system114to detect an arbitrage opportunity and alert the manager computing system146. At operation802, the pricing service system114may receive NAV data128from the mutual fund system118. At operation804, the pricing service system114may access a strike price of the trust shares. The strike price, in some examples, is received from the exchange system124, which may facilitate other transactions in the trust shares. For example, the strike price of the trust shares may indicate an average strike price of trust shares for transactions in the trust shares facilitated by the exchange system124.

At operation806, the pricing service system114may determine whether a difference or difference between the strike price of the trust shares and the NAV of the mutual fund106(e.g., the value of the mutual fund shares) is greater than a threshold. In some examples, the difference considered at operation may not be a one-to-one comparison of strike price of trust shares to NAV of the mutual fund106. For example, the trust shares may be intended to trade at a multiple of the NAV of the mutual fund106. Accordingly, the difference of operation806may be based on a multiple of the strike price, the NAV, etc. For example, the difference may be based on the difference between X times the strike price and the Y times the NAV, where X and Y can take any suitable value.

If, at operation806, the difference is less than the threshold, then the pricing service system114may return to operation802to receive the next period NAV data128from the mutual fund system118. If the difference is greater than the threshold, then the pricing service system114may, at operation808, generate the alert message136for the manager computing device146. At operation810, the pricing service system114may send the alert message136to the manager computing device146.

FIG. 9is a flow chart showing one example of a process flow900that may be executed by the manager computing device upon receipt of the alert message136. At operation902, the manager computing device146may receive the alert message136. As described herein, the alert message may comprise interrupt trigger data that causing the manager computing device146to generate an audible and/or visual alert. For example, the interrupt trigger data may cause the manager computing device146to execute an interrupt service routine for generating the alert.

At operation904, the manager computing device146may interrupt execution of an application (e.g., the other application145) in response to the alert message136. At operation906, the manager computing device146may generate the alert. The alert may be an audible sound, such as a beep, ringtone, or other alarm. In addition to or instead of the audible sound, the alert may also include a visual output such as, for example, a pop-up on a screen of the manager computing device146, a blinking window on the screen of the manager computing device146, an illumination or blink of a display lamp on the manager computing device, such as, for example, a Light Emitting Diode (LED), etc.

Optionally, in response to the alert, the manager may rebalance the reference assets108of the mutual fund, for example, to mitigate the arbitrage opportunity that prompted the alert. For example, at operation908, the manager computing device146may receive an asset instruction. The asset instruction, in some examples, is received via the securities management application144. The asset instruction may include, for example, an order for the mutual fund106to buy new assets to be included in the reference assets108and/or sell assets currently included in the reference assets108. At operation910, the manager computing device146(e.g., the securities management application144thereof) may send asset change data to the mutual fund system118. The asset change data may indicate a change to the reference assets108held by the mutual fund, for example, as received from the manager148at operation908. At operation912, the manager computing device may send trade order data to the exchange system124. The trade order data may request one or more trades to implement the changes to the reference assets indicated at operation908and910. In some examples, the mutual fund system118may generate and send the trade order data to the exchange system124either directly or via the pricing service system114.

FIG. 10is a flow chart showing one example of a process flow1000that may be executed by the automated advisor system150to advise the investor156. At operation1002, the investor156may log in to the automated advisor system150. For example, the automated advisor system150may, provide the investor with the160. The investor156may execute the automated advisor application152to access the UI160. The investor156may, provide authentication and/or identification data to the automated advisor system150as part of the log-in.

At optional operation1004, the automated advisor system150may receive investor data describing the investor156. In some examples, the investor data may describe tasks that the automated advisor system150is to perform for the investor156. For example, the investor156may configure the automated advisor system150to determine transactions for arbitrage conditions and/or may configure the automated advisor system150to determine and/or execute transactions for obtaining desired positions in the entity structure102, as described herein. In other examples, the investor156may provide configuration data describing whether and/or under what circumstances the automated advisor system150will execute a transaction on behalf of the investor156automatically and under what circumstances the automated advisor system150will send the investor156an alert message158describing a selected transaction or transactions. The investor data may also include, for example, positions held by the investor156, a risk aversion profile of the investor156and/or other data describing the investor156. Investor data may be received from the investor (e.g., via the UI160), from a broker system126A,126B, and/or from any other suitable system.

At operation1006, the automated advisor system150may select one or more transactions for the investor156. For example, as described herein with reference toFIG. 11, the automated advisor system150may determine that an arbitrage condition exists and may determine one or more transactions for the investor156to profit from the arbitrage condition. An arbitrage condition may exist, for example, if a difference between a value of the mutual fund shares and a value of the trust shares is greater than a threshold value. The threshold value may be any suitable value and, in some examples, may be selected by the investor156. For example, the investor data received at operation1004may include the threshold value. Also, in addition or instead, the automated advisor system150may determine a transaction that cost-effectively creates a desired position in the entity structure102. For example, if the investor156is to obtain a long position in the entity structure102, the automated advisor system150may determine whether to purchase trust shares and/or mutual fund shares. Similarly, if the investor156is to obtain a short position in the entity structure102, the automated advisor system150may determine whether to sell or short the trust shares and/or the mutual fund shares.

At optional operation1008, the automated advisor system150may perform a compliance check for the transaction selected at operation1006. For example, the automated advisor system150may determine if the transaction or transaction selected at operation1006complies with applicable regulations. For example, the automated advisor system150may determine if shares to be purchased are a private offering and, if so, whether the investor156is qualified to purchase privately offered shares. Other example compliance issues that the automated advisor system150may check at operation1008include, tax issues that may prevent the transaction, wash sale regulations, etc.

At optional operation1010, the automated advisor system150may check the liquidity of shares to be bought or sold for the transaction or transactions selected at operation1006(e.g., mutual fund shares and/or trust shares). Checking the liquidity of the shares may include determining whether there is a sufficient market for the shares to make the transaction or transactions determined at operation1006likely to succeed. A liquidity check may be performed in any suitable manner. In some examples, mutual fund shares may be purchased directly from the proprietor of the mutual fund106. For example, the automated advisor system150may contact the mutual fund system118and inquire about the availability of mutual fund shares. If the mutual fund system118indicates that sufficient mutual fund shares are available, then the automated advisor system150may determine that there is sufficient liquidity for the selected transaction. In an example transaction that involves purchasing an exchange-traded security, such as the trust shares, the automated advisor system150may perform the liquidity check, for example, by receiving liquidity data from the exchange system124or another suitable system (e.g., data service server170ofFIG. 12). For example, the automated advisor system150may receive liquidity data including, for example, a bid/ask spread data. If the automated advisor system150determines that there is not sufficient liquidity to perform the transaction, the automated advisor system150may cease the process flow1000and/or return to operation1002to again receive share value data. The automated advisor system150, in some examples, may determine that there is sufficient liquidity for the selected transaction if the bid/ask spread is less than a threshold spread value.

The automated advisor system150may execute the selected transaction or transactions at operation1012and/or send to the investor156an alert message158indicating the selected transaction or transactions at operation1014and optional operation1016. The automated advisor system150may determine whether to execute the transaction and/or send the alert message in any suitable manner. For example, investor data received at1004(e.g., from the investor156) may indicate circumstances under which the automated advisor system150is to execute a selected transaction or transactions and/or send an alert message. In some examples, the automated advisory system150may determine whether to send an alert message and/or execute the transaction based on the type of transaction requested. For example, if the investor156has requested that the automated advisor system150implemented a specific position in the entity structure (e.g.,FIG. 12), then the automated advisor system150may automatically execute the transaction. When the transaction is an arbitrage transaction, the automated advisor system150may be programmed to send an alert message158and await approval from the investor156before executing the transaction. In some examples, when the automated advisor system150is selecting an arbitrage transaction, it may be programmed to automatically execute the transaction if the difference between the value of the trust shares and the value of the mutual fund shares exceeds an execution threshold, and to send the alert message158if the difference between the value of the trust shares and the value of the mutual fund shares does not exceed the execution threshold. In some examples, the execution threshold may be larger than the price difference threshold used to determine that an arbitrage condition exists, (e.g.,FIG. 11).

Referring now to operation1012, the automated advisor system150may execute the transaction or transactions in any suitable manner. In some examples, the automated advisor system150may generate a trade order (e.g., trade order162ofFIG. 1). The trade order may comprise data organized according to a format acceptable to the system that will receive the trade order such as, for example, the exchange system124, the mutual fund system118, the trust system116, etc. In some examples, an arbitrage transaction may include multiple trade orders. For example, in the transaction described above with respect toFIG. 4, a first trade order may be generated to execute a purchase of trust shares and a second trade order may be generated to redeem the trust shares for mutual fund shares. In the transaction described inFIG. 5, a first trade order may be generated to purchase mutual fund shares (e.g., from the mutual fund system124). A second trade order may be generated to redeem of the mutual fund shares from the trust104, For example, the second trade order may be sent to the trust system116. Trade orders may be sent to the appropriate systems124,118,116.

Referring to operation1014, the automated advisor system150may send the alert message158to the investor156(e.g., via the application152and investor computing device154ofFIG. 2). The transaction or transactions determined by the automated advisor system150may be time-sensitive. For example, an arbitrage transaction may be advantageous to the investor156only while an arbitrage condition exists. Also, for example, a transaction to take a desired position in the entity structure102may be advantageous for the investor only while the values of the trust shares and mutual fund shares remain relatively unchanged. As a result, in some examples, it may be desirable to bring the alert message158to the attention of the investor156quickly. Accordingly, in some examples, the alert message158may trigger a software and/or hardware interrupt For example, upon receipt of the alert message158, the investor computing device154may interrupt the execution of one application, for example, to execute the application152to receive the alert message158.

The alert message158may include a description of the transaction selected at operation1006. In some examples, the alert message158may also indicate the values of the trust shares and/or the mutual fund shares and/or a difference between the two values). In this way, the investor156may evaluate the value of the proposed transaction. In some examples, the alert message158may include a trade order that is, for example, lacking a signature, or other authorization from the investor156. If the investor156chooses to proceed with the arbitrage transaction, the investor156may sign or otherwise authorize the trade order. In some examples, such as examples where the investor computing device154is a tablet or other mobile device, the investor156may authorize the trade order, for example, by swiping a screen of the investor computing device154in a predetermined way (e.g., right, left, up, down, etc.). The automated advisor system150may then send the trade order to the appropriate system or systems124,118,116. In some examples, the investor156may choose to execute the arbitrage transaction in other ways as well. For example, the investor156may log in to the automated advisor system150via the UI160to request that the automated advisor system150execute the arbitrage transaction, for example, as described herein. In some examples, the investor156, in response to the alert message158, may execute the arbitrage transaction independent of the automated advisor system150. For example, the investor156may work through a broker (e.g., broker system126A,126B) to execute the arbitrage transaction.

At operation1016, the automated advisor system150may send a follow-up message to the investor156. The follow-up message may indicate that the condition under which the transaction or transactions were selected at operation1006is no longer in effect. For example, if the transaction is an arbitrage transaction, the automated advisor system150may send a follow-up message when the arbitrage condition is no longer in effect. This may occur, for example, if the values of the mutual fund shares and the trust shares are within a threshold value (such as the threshold value used to determine the arbitrage condition, or another threshold value) and/or if the values of the shares have crossed. Share values may cross, if a different type of share has a higher value. For example, if mutual fund shares were valued higher than trust shares at operation1004, a follow-up message may be sent at operation1016if the trust share value becomes higher than the mutual fund share value. For example, the automated advisor system150may monitor the difference in value between the mutual fund shares and the trust. In some examples, the follow-up message may also trigger an interrupt at the investor computing device154.

FIG. 11is a flow chart showing one example of a process flow1100illustrating how the automated advisor system150may select an arbitrage transaction or transactions for the investor156. For example, the process flow1100shows one example way that the automated advisor system150may select a transaction or transactions for the user at operation1006described above. In some examples, the investor156may configure the automated advisor system150to identify arbitrage transactions, for example, providing investor data at operation1004that indicates that the automated advisor system should identify arbitrage transactions.

Referring back toFIG. 11, at operation1102, the automated advisor system150may receive trust share and mutual fund share data. The mutual fund share data and trust share data may include and/or indicate a value of the mutual fund shares and/or trust shares. For example, the value of the trust shares may be indicated by a trust share price or strike price at which the trust shares are traded on an exchange (e.g., as managed by the exchange system124). Accordingly, trust share data may include trust share price data and may be received from any suitable source. For example, trust share data may be received from the exchange system124and/or another third party data service server170(FIG. 3). As described herein, the value of the mutual fund shares may be indicated by the NAV of the reference assets. Accordingly, the mutual fund data received at operation1102may include NAV data and may be received from the exchange system124and/or the third party data service server170. In some examples mutual fund data may be received from the mutual fund system118and/or the pricing service system114, Mutual fund share data, in some examples, may include an inter-day net asset value (NAV) value for the reference assets of the mutual fund. Accordingly, the mutual fund share price may be determined once per day In some examples, the mutual fund data may include inter-day NAV values (e.g., received from the mutual fund system118and/or the pricing service system114). In this way, the automated advisor system150may receive mutual fund share prices multiple times in one day. In some examples, the trust share data and mutual fund share data may be all or a part of the trade data164described above with respect toFIG. 2.

At operation1104, the automated advisor system150may determine whether a difference or difference between the strike price of the trust shares and the NAV of the mutual fund106(e.g., the value of the mutual fund shares) is greater than a threshold, for example, similar to operation806described above. (In some examples, the investor156may provide the threshold and/or an approval of the threshold with the investor data received at operation1004above.) If the difference between the strike prices of the trust shares and the NAV of the mutual fund106is not greater than the threshold, it may indicate that no arbitrage condition exists. Accordingly, the automated advisor system150may return to operation1102and receive new data describing the values of the mutual fund shares and/or trust shares, for example, at a different time.

If the difference between the strike price of the trust shares and the NAV of the mutual fund106is greater than the threshold, it may indicate that an arbitrage condition exists. At operation1106, the automated advisor system150may select an arbitrage transaction, for example, based on the difference of operation1104. For example, if the NAV of the mutual fund106is greater than the strike price of the trust shares, the automated advisor system150may select a transaction that includes purchasing shares of the trust104, delivering the trust shares to the trust104, with the trust redeeming the trust shares for mutual fund shares, for example, as described above with respect toFIG. 4. Also, for example, if the NAV of the mutual fund106is less than the strike price of the trust shares, then the automated advisor system150may select a transaction that includes purchasing mutual fund shares, and redeeming the mutual fund shares at the trust104to obtain trust shares, for example, as described herein with respect toFIG. 5. The size of the selected transaction (e.g., value or number of shares involved) may be determined based on the investor data received from the investor at operation1004above. Upon selecting the arbitrage transaction or transactions, the automated advisor system150may execute the transaction or transactions and/or send an alert message158to the investor156, as described herein. In some examples, the size of the selected transaction may depend on the difference in value between the trust shares and mutual fund shares, the available liquidity, and/or any other suitable value.

FIG. 12is a flow chart showing one example of a process flow1200that may be executed by the automated advisor system150to select a transaction to achieve an indicated position for the investor156. For example, the process flow1200is another example way that the automated advisor system150may select a transaction or transactions, as described at operation1006above. At operation1202, the automated advisor system150may receive position data indicating a desired position in the entity structure102for the investor156. The desired position may be received from the investor156(e.g., as part of the investor data). The desired position may be a long position and/or a short position. For example, a transaction to generate a long position may include purchasing trust fund shares and/or mutual fund shares. A transaction to generate a short position may include, for example, selling or short-selling trust fund shares and/or mutual fund shares.

At operation1202, the automated advisor system150may select a transaction to bring about the desired position. For example, if the investor156indicates a long position, the automated advisor system150may determine whether to purchase trust shares or mutual fund shares. In some examples, the automated advisor system150may select shares of the entity104,106having the lowest value and may redeem those shares for shares of the higher-valued entity. If the investor156indicates a short position, the automated advisory system150may determine short sell trust shares or mutual fund shares. If the investor wants to shorten an existing long position, the automated advisory system150may determine whether to sell the shares actually held, or to redeem the shares held for shares of the opposite entity and sell the opposite entity shares. For example, if the investor156wants to shorten a position that includes trust shares, the automated advisor150may determine to sell the trust shares outright (e.g., if the value of the trust shares is greater than the value of the mutual fund shares) or to redeem the trust shares for mutual fund shares and sell the mutual fund shares (e.g., if the value of the mutual fund shares is greater than the value of the trust shares).

FIG. 13is a flow chart showing one example of a process flow1300that may be executed by the automated advisor system150for load balancing. The load of the automated advisor system150may vary, for example, based on the task that it is performing and the number of transactions selected and/or executed, the number of investors, such as investor156, being served, etc. For example, when the automated advisor system150is programmed to monitor arbitrage conditions, as described inFIG. 11, the load on the automated advisor system150may depend on whether arbitrage conditions actually occur. For example, if arbitrage conditions occur frequently, the automated advisor system150may have a greater load detecting the arbitrage conditions, selecting transactions for arbitrage, sending alert messages158, and/or executing the transactions. Referring toFIG. 3, in some examples, the automated advisor system150may be implemented in whole or in part at an IAAS system, such as the IAAS system174. For example, the automated advisor system150may utilize one or more virtual machines176A-N. As the load requirements of the automated advisor system150change, it may request that more or fewer virtual machines176A-N be executed.

At operation1302, the automated advisor system150may receive market data. Market data may be prospective or historical. Market data may include any data tending to indicate what market conditions will be for a day or other time period considered by the automated advisor system150. Market data may be received from any suitable source including, for example, a data service server170. Examples of prospective market data may include, for example, data describing futures markets, data describing overseas markets, etc. For example, if futures for the New York Stock Exchange (NYSE) indicate high volatility, it may indicate that arbitrage conditions are likely to occur. Also, for example, high volatility on the Tokyo Stock Exchange (TSE) may indicate a likelihood of high volatility (and therefore likely arbitrage conditions) in United States markets. In some examples, prospective market data may include other economic data such as employment rates, corporate profit reports, etc. Also, in some examples, prospective market data may include news that tends to impact market performance, such as, news regarding geopolitics, natural disasters, etc. Historical market data may include any data indicating the historical performance of markets, such as, historical volatility data, historical price data for reference assets108of the mutual fund106, etc.

At operation1304, the automated advisor system150may receive historical trade data. Historical trade data may include, for example, data describing the transactions selected and/or executed by the automated advisory system150in the past. For example, historical trade data may indicate that a large number of arbitrage conditions tend to occur at a particular time of the week, month; year, etc. Historical trade data may be received; for example, from a database associated with the automated advisor system150.

At operation1306, the automated advisor system150may generate a load projection. The load projection may be over any suitable time period such as, for example, a day, a week; etc. The load projection may be based, at least in part on the market data received at operation1302and/or the historical trade data received at operation1304. For example, from the market data and/or historical trade data, the automated advisor system150may determine a projected portion of the time period during which arbitrage conditions will exist. The automated advisor system150determine its load during the arbitrage conditions, for example, by considering the number of investors156for which the automated advisor system150is to select arbitrage transactions. In some examples, the load projection may be determined utilizing any suitable computer modeling techniques. At operation1308, the automated advisor system150may implement capacity for the projected load determined at operation1306. For example, the automated advisor system150may close and/or open virtual machines176A-N. In some examples, the automated advisory system150may implement the capacity for the projected load by sending a capacity request to the IAAS system174. The capacity request may indicate a requested capacity for at least one time period. The requested capacity may be expressed in units of virtual machines176A-N. For example, the automated advisor system150may send a capacity request that indicates a number of virtual machines176A-N requested at a particular time or time period. In some examples, the automated advisor system150may prospectively schedule IAAS system capacity for a future time period. In some examples, the IAAS system174may use units of capacity other than virtual machines176A-N. In these examples, instead of opening or closing virtual machines176A-N, the automated advisory system150may request to open or close other units of IAAS system capacity

FIG. 14is a block diagram showing an example architecture1400of a mobile computing device. For example, the architecture1400, for example, may describe any of the computing devices described herein including, for example, investor computing devices140A,140B and manager computing device146. The architecture1400comprises a processor unit1414. The processor unit1414may include one or more processors. Any of a variety of different types of commercially available processors suitable for mobile computing devices may be used (for example, an XScale architecture microprocessor, a Microprocessor without Interlocked Pipeline Stages (MIPS) architecture processor, or another type of processor). A memory1420, such as a Random Access Memory (RAM), a Flash memory, or other type of memory or data storage, is typically accessible to the processor. The memory1420may be adapted to store an operating system (OS)1430, as well as application programs1440. In some examples, the OS may implement software interrupts that cause the architecture1400to pause its current task and execute an interrupt service routine (ISR) when an interrupt is received For example, when the architecture1400implements the manager computing system, the alert message136may include interrupt trigger data to trigger a software interrupt. In response to the software interrupt, the ISR may generate the alert, as described herein.

The processor unit1410may be coupled, either directly or via appropriate intermediary hardware, to a display1450and to one or more input/output (I/O) devices1460, such as a keypad, a touch panel sensor, a microphone, and the like. Such I/O devices1460may include a touch sensor for capturing fingerprint data, a camera for capturing one or more images of the user, a retinal scanner, or any other suitable devices. Similarly, in some examples, the processor unit1410may be coupled to a transceiver1470that interfaces with an antenna1490. The transceiver1470may be configured to both transmit and receive cellular network signals, wireless data signals, or other types of signals via the antenna1490, depending on the nature of the mobile computing device implemented by the architecture1400, Although one transceiver1470is shown, in some examples, the architecture1400includes additional transceivers. For example, a wireless transceiver may be utilized to communicate according to an IEEE 802.11 specification, such as Wi-Fi and/or to a short range communication medium. Some short range communication mediums, such as NFC, may utilize a separate, dedicated transceiver. Further, in some configurations, a GPS receiver1480may also make use of the antenna1490to receive GPS signals In addition to or instead of the GPS receiver1480, any suitable location-determining sensor may be included and/or used including, for example, a Wi-Fi positioning system. In some examples, the architecture (e.g., processor unit1410) may also support a hardware interrupt. In response to a hardware interrupt, the processor unit1410may pause its processing and execute an interrupt service routine (ISR). For example, the alert message136may include and/or trigger a hardware interrupt. The ISR for the hardware interrupt may generate the alert, for example, as described herein.

FIG. 15is a block diagram1500showing one example of a software architecture1502for a computing device The architecture1502may be used in conjunction with various hardware architectures, for example, as described herein.FIG. 15is merely a non-limiting example of a software architecture1502and many other architectures may be implemented to facilitate the functionality described herein. The software architecture1502may be executed on hardware such as, for example, the exchange system124, the pricing service system114, the trust system116, the mutual fund system118, the investor computing devices140A,140B, the manager computing device145, the broker systems126A,126B, etc. A representative hardware layer1504is illustrated and can represent, for example, any of the above referenced computing devices In some examples, the hardware layer1504may be implemented according to the architecture1502ofFIG. 15and/or the architecture1600ofFIG. 16.

The representative hardware layer1504comprises one or more processing units1506having associated executable instructions1508. Executable instructions1508represent the executable instructions of the software architecture1502, including implementation of the methods, modules, components, and so forth ofFIGS. 1-8. Hardware layer1504also includes memory and/or storage modules1510, which also have executable instructions1508. Hardware layer1504may also comprise other hardware as indicated by other hardware1512which represents any other hardware of the hardware layer1504, such as the other hardware illustrated as part of hardware architecture1600.

In the example architecture ofFIG. 15, the software1502may be conceptualized as a stack of layers where each layer provides particular functionality. For example, the software1502may include layers such as an operating system1514, libraries1516, frameworks/middleware1518, applications1520and presentation layer1544. Operationally, the applications1520and/or other components within the layers may invoke application programming interface (API) calls1524through the software stack and receive a response, returned values, and so forth illustrated as messages1526in response to the API calls1524. The layers illustrated are representative in nature and not all software architectures have all layers For example, some mobile or special purpose operating systems may not provide a frameworks/middleware layer1518, while others may provide such a layer, Other software architectures may include additional or different layers.

The operating system1514may manage hardware resources and provide common services. The operating system1514may include, for example, a kernel1528, services1530, and drivers1532. The kernel1528may act as an abstraction layer between the hardware and the other software layers. For example, the kernel1528may be responsible for memory management, processor management (e.g., scheduling), component management, networking, security settings, and so on. The services1530may provide other common services for the other software layers. In some examples, the services1530include an interrupt service. The interrupt service may detect the receipt of a hardware or software interrupt and, in response, cause the architecture1502to pause its current processing and execute an interrupt service routine (ISR) when an interrupt is received. The ISR may generate the alert, for example, as described herein.

The drivers1532may be responsible for controlling or interfacing with the underlying hardware. For instance, the drivers1532may include display drivers, camera drivers, Bluetooth® drivers, flash memory drivers, serial communication drivers (e.g., Universal Serial Bus (USB) drivers), Wi-Fi® drivers, NFC drivers, audio drivers, power management drivers, and so forth depending on the hardware configuration.

The libraries1516may provide a common infrastructure that may be utilized by the applications1520and/or other components and/or layers. The libraries1516typically provide functionality that allows other software modules to perform tasks in an easier fashion than to interface directly with the underlying operating system1514functionality (e.g., kernel1528, services1530and/or drivers1532). The libraries1516may include system1534libraries (e.g., C standard library) that may provide functions such as memory allocation functions, string manipulation functions, mathematic functions, and the like. In addition, the libraries1516may include API libraries1536such as media libraries (e.g., libraries to support presentation and manipulation of various media format such as MPEG4, H264, MP3, AAC, AMR, JPG, PNG), graphics libraries (e.g., an OpenGL framework that may be used to render21) and9D in a graphic content on a display), database libraries (e.g., SQLite that may provide various relational database functions), web libraries (e.g., WebKit that may provide web browsing functionality), and the like. The libraries1516may also include a wide variety of other libraries1538to provide many other APIs to the applications1520and other software components/modules.

The frameworks1518(also sometimes referred to as middleware) may provide a higher-level common infrastructure that may be utilized by the applications1520and/or other software components/modules. For example, the frameworks1518may provide various graphic user interface (GUI) functions, high-level resource management, high-level location services, and so forth. The frameworks1518may provide a broad spectrum of other APIs that may be utilized by the applications1520and/or other software components/modules, some of which may be specific to a particular operating system or platform.

The applications1520includes built-in applications1540and/or third party applications1542. Examples of representative built-in applications1540may include, but are not limited to, a contacts application, a browser application, a book reader application, a location application, a media application, a messaging application, and/or a game application. Third party applications1542may include any of the built in applications as well as a broad assortment of other applications. In a specific example, the third party application1542(e.g., an application developed using the Android™ or iOS™ software development kit (SDK) by an entity other than the vendor of the particular platform) may be mobile software running on a mobile operating system such as iOS™, Android™, Windows® Phone, or other mobile computing device operating systems. In this example, the third party application1542may invoke the API calls1524provided by the mobile operating system such as operating system1514to facilitate functionality described herein.

The applications1520may utilize built in operating system functions (e.g., kernel1528, services1530and/or drivers1532), libraries (e.g., system1534, APIs1536, and other libraries1538), frameworks/middleware1518to create user interfaces to interact with users of the system. Alternatively, or additionally, in some systems interactions with a user may occur through a presentation layer, such as presentation layer1544. In these systems, the application/module “logic” can be separated from the aspects of the application/module that interact with a user.

Some software architectures utilize virtual machines. For example, systems described herein may be executed utilizing one or more virtual machines executed at one or more server computing machines. In the example ofFIG. 15, this is illustrated by virtual machine1548. A virtual machine creates a software environment where applications/modules can execute as if they were executing on a hardware computing device. A virtual machine is hosted by a host operating system (operating system1514) and typically, although not always, has a virtual machine monitor1546, which manages the operation of the virtual machine as well as the interface with the host operating system (i.e., operating system1514). A software architecture executes within the virtual machine such as an operating system1550, libraries1552, frameworks/middleware1554, applications1556and/or presentation layer1558. These layers of software architecture executing within the virtual machine1548can be the same as corresponding layers previously described or may be different.

FIG. 16is a block diagram illustrating a computing device hardware architecture1600, within which a set or sequence of instructions can be executed to cause the machine to perform examples of any one of the methodologies discussed herein. For example, the architecture1600may execute the software architecture1502described with respect toFIG. 15. The architecture1600may operate as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the architecture1600may operate in the capacity of either a server or a client machine in server-client network environments, or it may act as a peer machine in peer-to-peer (or distributed) network environments. The architecture1600can be implemented in a personal computer (PC), a tablet PC, a hybrid tablet, a set-top box (STB), a personal digital assistant (PDA), a mobile telephone, a web appliance, a network router, switch or bridge, or any machine capable of executing instructions (sequential or otherwise) that specify operations to be taken by that machine.

Example architecture1600includes a processor unit1602comprising at least one processor (e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both, processor cores, compute nodes, etc.). The architecture1600may further comprise a main memory1604and a static memory1606, which communicate with each other via a link1608(e.g., bus) The architecture1600can further include a video display unit1610, an alphanumeric input device1612(e.g., a keyboard), and a user interface (UI) navigation device1614(e.g., a mouse). In some examples, the video display unit1610, input device1612and UI navigation device1614are incorporated into a touch screen display. The architecture1600may additionally include a storage device1616(e.g., a drive unit), a signal generation device1618(e.g., a speaker), a network interface device1620, and one or more sensors (not shown), such as a global positioning system (UPS) sensor, compass, accelerometer, or other sensor.

In some examples, the processor unit1602or other suitable hardware component may support a hardware interrupt. In response to a hardware interrupt, the processor unit1602may pause its processing and execute an interrupt service routine (ISR), for example, as described herein.

The storage device1616includes a machine-readable medium1622on which is stored one or more sets of data structures and instructions1624(e.g., software) embodying or utilized by any one or more of the methodologies or functions described herein. The instructions1624can also reside, completely or at least partially, within the main memory1604, static memory1606, and/or within the processor1602during execution thereof by the architecture1600, with the main memory1604, static memory1606, and the processor1602also constituting machine-readable media. Instructions stored at the machine-readable medium1622may include, for example, instructions for implementing the software architecture1502, instructions for executing any of the features described herein, etc.

Various components are described in the present disclosure as being configured in a particular way. A component may be configured in any suitable manner. For example, a component that is or that includes a computing device may be configured with suitable software instructions that program the computing device. A component may also be configured by virtue of its hardware arrangement or in any other suitable manner.

The above description is intended to be illustrative, and not restrictive. For example, the above-described examples one or more aspects thereof) can be used in combination with others. Other embodiments can be used, such as by one of ordinary skill in the art upon reviewing the above description. The Abstract is to allow the reader to quickly ascertain the nature of the technical disclosure, for example, to comply with 37 C.F.R. § 1.72(b) in the United States of America. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims.

Also, in the above Detailed Description, various features can be grouped together to streamline the disclosure. However, the claims cannot set forth every feature disclosed herein as embodiments can feature a subset of said features. Further, embodiments can include fewer features than those disclosed in a particular example. Thus, the following claims are hereby incorporated into the Detailed Description, with a claim standing on its own as a separate embodiment. The scope of the embodiments disclosed herein is to be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.