What is tiPythia Trading Diary Exchange?
tiPythia Trading Diary Exchange provides an online marketplace for creating, sharing and selling trading diaries and investment strategies. Successful investors can make money by selling subscriptions to their trading diaries to other investors through tiPythia Marketplace. Users who subscribe get visibility into their individual trades and receive alerts as trades are opened and closed allowing them to replicate investment returns. tiPythia can be used to track trading performance as a tool, to practice trading strategies, or if you are already a successful trader, sell subscriptions to your trading diaries online. The earnings that the tiPythia website collects through selling online subscriptions to trading & investment diaries are redistributed back to the diary creators (less the website percentage fee).
Background
tiPythia was started as a start-up project in 2009. While a handful of new social investing websites existed for tracking and publishing portfolios, none had addressed the reason why anyone would be motivated to do so in the first place. Many of these sites were reliant on advertising revenue to survive and most burnt through their start-up capital and disappeared.
By providing a marketplace to buy and sell investment strategies and share the earnings with the traders, tiPythia aims is to provide the motivation for sharing trading strategies as well as the sustainable model that would allow the site and business to prosper.
Why Drupal?
A number of factors contributed to the decision to select Drupal for this project. The budget available for the project was very small, so an Open Source CMS with open source components was essential.
In addition, a framework was needed that could scale, in terms of both users and application complexity. Indeed, the tiPythia concept called for a wide range of features and functionality and without the vast library of contributed modules the cost of the project would have greatly exceeded the available budget.
The flexibility with which contributed modules can be added, integrated and extended with custom modules is one of Drupal’s great strengths. The hook system makes it very easy to tie into Drupal’s system events and alter or extend content.
A Sampling of the 100+ modules used.
Adsense
CCK
Embed Widgets
Fusion Charts
Imagecache
Mail
Messaging
Node Access Product
Notifications
Organic Groups
Advanced Forum
Automatic Nodetitles
CKEditor
Dynamic Display Block
Legal
Menu Per Role
Panels
SMS Framework
Services/SOAP Server
Subscriptions
Views
Fivestar Voting
Workflow
Ecommerce
Design: Content
At the heart of the tiPythia application is the financial trading system which essentially mimic’s all the capabilities of a trading brokerage but without issuing any real buy and sell orders into the marketplace.
Financial trades are represented as custom content types. The nodes are extended using the CCK group of modules, where CCK fields are used to add the many financial values that are needed. The visibility of each financial field during the various stages of buying, holding and closing the trade are managed by Workflow module states and CCK permissions.
tiPythia’s custom application modules also make extensive use of various nodeapi and form hooks to add live market pricing information through the various financial trade Workflow states.
Design: Marketplace
The marketplace is built around the Ecommerce and Node Access Product (NAP) modules. These two modules form the heart of the subscriber access and subscription system.
When a trader publishes a diary, an Ecommerce NAP product is automatically created for that trader. When another user purchases that product, the NAP module grants access for that subscribing user to gain visibility to all the trader’s unique proprietary financial trading history. The granted access also enables the subscription system to send email or sms alerts when new trades are created or closed. This provides the subscribing user with ability to replicate the investment of the trader, and thereby replicate the investing performance.
Fivestar voting is provided to allow subscribing users the ability to provide subjective feedback on traders they are subscribing to.
Design: Subscription
The subscription system is implemented using the Subscriptions, Mail Editor and SMS Framework contributed modules.
When a user account is created, every user is automatically subscribed to all financial trading content types. However, by default they do not have the permissions to see other user’s trades and do not gain permission unless they purchase the NAP product (explained above).
When a NAP product is purchased it grants access permission for a trader to the purchaser. The Subscription module is then able to send trading alerts via emails to the purchaser as any trade is opened or closed.
One of the tricks tiPythia employs in the design, is to judicially decide when to update financial trading nodes with node_save or change directly in the database.
The use of node_save causes the Subscription module to issue alerts, which is not always desirable. It is required that trading alerts only be sent on the opening or closing of trades. So in cases such as live price updates, the Drupal database API is used in order to avoid triggering the Subscription module alerts.
In order that SMS alerts could also be provided, the Mail Editor module was hacked to support an SMS template field, and the Subscription module was hacked to call the SMS Framework modules.
Design: Theme
The tiPythia skin was achieved by merging and extending two commercial themes.
A modified DDBlock pane was used to provide the slideshow on the splash screen.
Presentation of the portfolio and trades is generally provided using Views and Panels.
Fusion charts was used to provide the historical performance visualization.
Advanced Forum was used to provide a fresher look to the standard forum representation.
Design: Miscellaneous:
Organic Groups, Messaging and Notifications are used to provide private trading communities within the site.
Embed Widget is used to share group or individual trading performance with other websites.
Custom Modules
-Trading: Providing the central trade calculation, including the fetching of web service trading data from various sources
-Performance: Providing the portfolio performance calculations and archive tables which drive Fusion Charts
-Subscription: Providing subscription system.
-Liveprices: Providing the live javascript trade price updates and cache.
-Payback: Tracks and pays back earnings to traders via Paypal.
-Various: Other modules for extending the ecommerce system.
Performance
MYSQL caching is used to ensure the many views queries are returned quickly.
PHP caching is used to help ensure the large numbers of complex modules run efficiently.
Project Team
One person over ~2 years
Some sponsored development for extensions to contributed modules that were needed.