Trading With Open Source Tools

  • 11,096 views
Uploaded on

April 18, 2009 OSDC Taipei. …

April 18, 2009 OSDC Taipei.

This talk gives an introduction about trading systems. We will walk through the basic concepts by examples. we will also cover various open source tools that you can use for market data analysis, writing strategy, back testing, and finally live trading and system monitoring.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • the audio and video of this talk (in Mandarin Chinese) is availble here (387M):
    http://video.osdc.tw/2009/2009-04-18%20trading%20with%20open%20source%20tools%20-%20clkao.mp4
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
11,096
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
302
Comments
1
Likes
15

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Trading with open source tools Chia-liang Kao clkao@clkao.org OSDC.TW 2009 Taipei
  • 2. Caution
  • 3. Caution There is ABSOLUTELY NO WARRANTY if you use any of the code or strategy mentioned in this talk.
  • 4. Presenting.......
  • 5. Presenting....... The OSDC Trading System
  • 6. Presenting....... The OSDC Trading System using dice!
  • 7. Take #1 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade
  • 8. Take #1 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade Long Signal
  • 9. Take #1 (Random returns 0..5) SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade Long Signal
  • 10. Take #1 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade Long Signal
  • 11. Take #1 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade Short Signal
  • 12. Take #1 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade Enters at 08:50
  • 13. Take #1 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade
  • 14. Take #1 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade % perl backtest.pl --start=2001-01-01 --end=2007-12-31 --timeframe 5min --money-management='FixedShares 1' OSDC1 TX
  • 15. Take #1 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade Taiwan Weighted Futures 1 point = nt$200 % perl backtest.pl --start=2001-01-01 --end=2007-12-31 --timeframe 5min --money-management='FixedShares 1' OSDC1 TX
  • 16. Take #1 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade
  • 17. Take #1 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade ----------------------------------------------------- Performance : -199.1 ( nan%) Buy & Hold : 77.5% ( 14.2%) () => by year MaxDrawDown : 201.6% B&H MaxDrawDown : 44.8% Best performance : 3.3% Worst performance : -204.9 Net gain : -19910.00 Gross gain : -2590.00 Trades statistics : Number of trades : 1732 Trades/Year : 247.97 Number of gains : 698 Number of losses : 1034 Win. ratio : 40.3% Max consec. win : 7 Max consec. loss : 13 Expectancy : -0.00 Average gain : 0.87% Average loss : -0.94% Avg. perf : nan% Biggest gain : 6.44% Biggest loss : -6.65% Profit fac : 0.92 Sum of gains : 36090.00 Sum of losses : -56000.00 Risk of ruin : 100.0
  • 18. Take #1 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade ----------------------------------------------------- Performance : -199.1 ( nan%) Buy & Hold : 77.5% ( 14.2%) () => by year MaxDrawDown : 201.6% B&H MaxDrawDown : 44.8% Best performance : 3.3% Worst performance : -204.9 Net gain : -19910.00 Gross gain : -2590.00 Trades statistics : Number of trades : 1732 Trades/Year : 247.97 Number of gains : 698 Number of losses : 1034 Win. ratio : 40.3% Max consec. win : 7 Max consec. loss : 13 Expectancy : -0.00 Average gain : 0.87% Average loss : -0.94% Avg. perf : nan% Biggest gain : 6.44% Biggest loss : -6.65% Profit fac : 0.92 Sum of gains : 36090.00 Sum of losses : -56000.00 Risk of ruin : 100.0
  • 19. Take #1 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade ----------------------------------------------------- Performance : -199.1 ( nan%) Buy & Hold : 77.5% ( 14.2%) () => by year MaxDrawDown : 201.6% B&H MaxDrawDown : 44.8% Best performance : 3.3% Worst performance : -204.9 -NT$3,982,000 Net gain : -19910.00 Gross gain : -2590.00 Trades statistics : Number of trades : 1732 Trades/Year : 247.97 Number of gains : 698 Number of losses : 1034 Win. ratio : 40.3% Max consec. win : 7 Max consec. loss : 13 Expectancy : -0.00 Average gain : 0.87% Average loss : -0.94% Avg. perf : nan% Biggest gain : 6.44% Biggest loss : -6.65% Profit fac : 0.92 Sum of gains : 36090.00 Sum of losses : -56000.00 Risk of ruin : 100.0
  • 20. Take #1 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade ----------------------------------------------------- Performance : -199.1 ( nan%) Buy & Hold : 77.5% ( 14.2%) () => by year MaxDrawDown : 201.6% B&H MaxDrawDown : 44.8% Best performance : 3.3% Worst performance : -204.9 -NT$3,982,000 Net gain : -19910.00 Gross gain : -2590.00 Trades statistics : Number of trades : 1732 Trades/Year : 247.97 Number of gains : 698 Number of losses : 1034 Win. ratio : 40.3% Max consec. win : 7 Max consec. loss : 13 Expectancy : -0.00 Average gain : 0.87% Average loss : -0.94% Avg. perf : nan% Biggest gain : 6.44% Biggest loss : -6.65% Profit fac : 0.92 Sum of gains : 36090.00 Sum of losses : -56000.00 Risk of ruin : 100.0 DOOMED!!
  • 21. Take #2 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade |CS:Stop:Fixed 1.5
  • 22. Take #2 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade Stop when losing 1.5% |CS:Stop:Fixed 1.5
  • 23. Take #2 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade |CS:Stop:Fixed 1.5
  • 24. Take #2 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade |CS:Stop:Fixed 1.5 ----------------------------------------------------- Performance : -124.4 ( nan%) Buy & Hold : 77.5% ( 14.2%) () => by year MaxDrawDown : 136.8% B&H MaxDrawDown : 44.8% Best performance : 2.0% Worst performance : -137.5 Net gain : -12442.13 Gross gain : 4877.87 Trades statistics : Number of trades : 1732 Trades/Year : 247.97 Number of gains : 715 Number of losses : 1017 Win. ratio : 41.3% Max consec. win : 11 Max consec. loss : 16 Expectancy : -0.00 Average gain : 0.88% Average loss : -0.83% Avg. perf : nan% Biggest gain : 5.67% Biggest loss : -1.79% Profit fac : 1.05 Sum of gains : 37037.00 Sum of losses : -49479.13 Risk of ruin : 100.0
  • 25. Take #2 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade |CS:Stop:Fixed 1.5 ----------------------------------------------------- Performance : -124.4 ( nan%) Buy & Hold : 77.5% ( 14.2%) () => by year MaxDrawDown : 136.8% B&H MaxDrawDown : 44.8% Best performance : 2.0% Worst performance : -137.5 -NT$2,488,426 Net gain : -12442.13 Gross gain : 4877.87 Trades statistics : Number of trades : 1732 Trades/Year : 247.97 Number of gains : 715 Number of losses : 1017 Win. ratio : 41.3% Max consec. win : 11 Max consec. loss : 16 Expectancy : -0.00 Average gain : 0.88% Average loss : -0.83% Avg. perf : nan% Biggest gain : 5.67% Biggest loss : -1.79% Profit fac : 1.05 Sum of gains : 37037.00 Sum of losses : -49479.13 Risk of ruin : 100.0
  • 26. Take #2 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade |CS:Stop:Fixed 1.5 ----------------------------------------------------- Performance : -124.4 ( nan%) Buy & Hold : 77.5% ( 14.2%) () => by year MaxDrawDown : 136.8% B&H MaxDrawDown : 44.8% Best performance : 2.0% Worst performance : -137.5 -NT$2,488,426 Net gain : -12442.13 Gross gain : 4877.87 Trades statistics : Number of trades : 1732 Trades/Year : 247.97 Number of gains : 715 Number of losses : 1017 Win. ratio : 41.3% Max consec. win : 11 Max consec. loss : 16 Expectancy : -0.00 Average gain : 0.88% Average loss : -0.83% Avg. perf : nan% Biggest gain : 5.67% Biggest loss : -1.79% Profit fac : 1.05 Sum of gains : 37037.00 Sum of losses : -49479.13 Risk of ruin : 100.0 Much better, but still negative
  • 27. Take #3 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade |CS:Stop:Fixed 2.5
  • 28. Take #3 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade Stop when losing 2.5% |CS:Stop:Fixed 2.5
  • 29. Take #3 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade |CS:Stop:Fixed 2.5
  • 30. Take #3 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade |CS:Stop:Fixed 2.5 ----------------------------------------------------- Performance : -149.8 ( nan%) Buy & Hold : 77.5% ( 14.2%) () => by year MaxDrawDown : 155.0% B&H MaxDrawDown : 44.8% Best performance : 0.0% Worst performance : -155.0 Net gain : -14977.47 Gross gain : 2342.53 Trades statistics : Number of trades : 1732 Trades/Year : 247.97 Number of gains : 706 Number of losses : 1026 Win. ratio : 40.8% Max consec. win : 8 Max consec. loss : 14 Expectancy : -0.00 Average gain : 0.91% Average loss : -0.87% Avg. perf : nan% Biggest gain : 6.29% Biggest loss : -2.78% Profit fac : 1.05 Sum of gains : 37749.00 Sum of losses : -52726.47 Risk of ruin : 100.0
  • 31. Take #3 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade |CS:Stop:Fixed 2.5 ----------------------------------------------------- Performance : -149.8 ( nan%) Buy & Hold : 77.5% ( 14.2%) () => by year MaxDrawDown : 155.0% B&H MaxDrawDown : 44.8% Best performance : 0.0% Worst performance : -155.0 -NT$2,995,494 Net gain : -14977.47 Gross gain : 2342.53 Trades statistics : Number of trades : 1732 Trades/Year : 247.97 Number of gains : 706 Number of losses : 1026 Win. ratio : 40.8% Max consec. win : 8 Max consec. loss : 14 Expectancy : -0.00 Average gain : 0.91% Average loss : -0.87% Avg. perf : nan% Biggest gain : 6.29% Biggest loss : -2.78% Profit fac : 1.05 Sum of gains : 37749.00 Sum of losses : -52726.47 Risk of ruin : 100.0
  • 32. Take #3 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:DayTrade |CS:Stop:Fixed 2.5 ----------------------------------------------------- Performance : -149.8 ( nan%) Buy & Hold : 77.5% ( 14.2%) () => by year MaxDrawDown : 155.0% B&H MaxDrawDown : 44.8% Best performance : 0.0% Worst performance : -155.0 -NT$2,995,494 Net gain : -14977.47 Gross gain : 2342.53 Trades statistics : Number of trades : 1732 Trades/Year : 247.97 Number of gains : 706 Number of losses : 1026 Win. ratio : 40.8% Max consec. win : 8 Max consec. loss : 14 Expectancy : -0.00 Average gain : 0.91% Average loss : -0.87% Avg. perf : nan% Biggest gain : 6.29% Biggest loss : -2.78% Profit fac : 1.05 Sum of gains : 37749.00 Sum of losses : -52726.47 Risk of ruin : 100.0 Not better after increase the stop threshold
  • 33. Take #4 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:Stop:Fixed 5 |CS:CloseGain 10
  • 34. Take #4 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:Stop:Fixed 5 Stop when winning 10% |CS:CloseGain 10
  • 35. Take #4 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:Stop:Fixed 5 |CS:CloseGain 10
  • 36. Take #4 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:Stop:Fixed 5 |CS:CloseGain 10 ----------------------------------------------------- Performance : 29.2% ( 6.1%) Buy & Hold : 77.5% ( 14.2%) () => by year MaxDrawDown : 24.9% B&H MaxDrawDown : 44.8% Best performance : 49.7% Worst performance : -1.2% Net gain : 2920.65 Gross gain : 3730.65 Trades statistics : Number of trades : 81 Trades/Year : 11.60 Number of gains : 32 Number of losses : 49 Win. ratio : 39.5% Max consec. win : 4 Max consec. loss : 8 Expectancy : 0.01 Average gain : 9.92% Average loss : -5.43% Avg. perf : 0.32% Biggest gain : 11.50% Biggest loss : -9.73% Profit fac : 1.83 Sum of gains : 18313.10 Sum of losses : -15392.45 Risk of ruin : 21.3%
  • 37. Take #4 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:Stop:Fixed 5 |CS:CloseGain 10 ----------------------------------------------------- Performance : 29.2% ( 6.1%) Buy & Hold : 77.5% ( 14.2%) () => by year MaxDrawDown : 24.9% B&H MaxDrawDown : 44.8% Best performance : 49.7% Worst performance : -1.2% NT$584,130 Net gain : 2920.65 Gross gain : 3730.65 Trades statistics : Number of trades : 81 Trades/Year : 11.60 Number of gains : 32 Number of losses : 49 Win. ratio : 39.5% Max consec. win : 4 Max consec. loss : 8 Expectancy : 0.01 Average gain : 9.92% Average loss : -5.43% Avg. perf : 0.32% Biggest gain : 11.50% Biggest loss : -9.73% Profit fac : 1.83 Sum of gains : 18313.10 Sum of losses : -15392.45 Risk of ruin : 21.3%
  • 38. Take #4 SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:Stop:Fixed 5 |CS:CloseGain 10 ----------------------------------------------------- Performance : 29.2% ( 6.1%) Buy & Hold : 77.5% ( 14.2%) () => by year MaxDrawDown : 24.9% B&H MaxDrawDown : 44.8% Best performance : 49.7% Worst performance : -1.2% NT$584,130 Net gain : 2920.65 Gross gain : 3730.65 Trades statistics : Number of trades : 81 Trades/Year : 11.60 PROFIT!! Number of gains : 32 Number of losses : 49 Win. ratio : 39.5% Max consec. win : 4 Max consec. loss : 8 Expectancy : 0.01 Average gain : 9.92% Average loss : -5.43% Avg. perf : 0.32% Biggest gain : 11.50% Biggest loss : -9.73% Profit fac : 1.83 Sum of gains : 18313.10 Sum of losses : -15392.45 Risk of ruin : 21.3%
  • 39. Take #5 SY:Generic {I:G:Eval ( {I:LastTrade} ? {I:LastTrade}==1 : {S:G:Above {I:Random 6} 2})} {I:G:Eval ( {I:LastTrade} ? {I:LastTrade}==-1 : {S:G:Below {I:Random 6} 3})} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:Stop:Fixed 5 |CS:CloseGain 10
  • 40. Take #5 SY:Generic {I:G:Eval ( {I:LastTrade} ? {I:LastTrade}==1 : {S:G:Above {I:Random 6} 2})} {I:G:Eval ( {I:LastTrade} ? {I:LastTrade}==-1 : {S:G:Below {I:Random 6} 3})} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 Following results from last trade |CS:Stop:Fixed 5 |CS:CloseGain 10
  • 41. Take #5 SY:Generic {I:G:Eval ( {I:LastTrade} ? {I:LastTrade}==1 : {S:G:Above {I:Random 6} 2})} {I:G:Eval ( {I:LastTrade} ? {I:LastTrade}==-1 : {S:G:Below {I:Random 6} 3})} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:Stop:Fixed 5 |CS:CloseGain 10
  • 42. Take #5 SY:Generic {I:G:Eval ( {I:LastTrade} ? {I:LastTrade}==1 : {S:G:Above {I:Random 6} 2})} {I:G:Eval ( {I:LastTrade} ? {I:LastTrade}==-1 : {S:G:Below {I:Random 6} 3})} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:Stop:Fixed 5 |CS:CloseGain 10 ----------------------------------------------------- Performance : 48.4% ( 9.5%) Buy & Hold : 77.5% ( 14.2%) () => by year MaxDrawDown : 19.8% B&H MaxDrawDown : 44.8% Best performance : 49.5% Worst performance : 0.0% Net gain : 4839.75 Gross gain : 5699.75 Trades statistics : Number of trades : 86 Trades/Year : 12.31 Number of gains : 36 Number of losses : 50 Win. ratio : 41.9% Max consec. win : 4 Max consec. loss : 8 Expectancy : 0.01 Average gain : 9.72% Average loss : -5.48% Avg. perf : 0.46% Biggest gain : 10.71% Biggest loss : -11.33% Profit fac : 1.77 Sum of gains : 20674.70 Sum of losses : -15834.95 Risk of ruin : 9.9%
  • 43. Take #5 SY:Generic {I:G:Eval ( {I:LastTrade} ? {I:LastTrade}==1 : {S:G:Above {I:Random 6} 2})} {I:G:Eval ( {I:LastTrade} ? {I:LastTrade}==-1 : {S:G:Below {I:Random 6} 3})} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:Stop:Fixed 5 |CS:CloseGain 10 ----------------------------------------------------- Performance : 48.4% ( 9.5%) Buy & Hold : 77.5% ( 14.2%) () => by year MaxDrawDown : 19.8% B&H MaxDrawDown : 44.8% Best performance : 49.5% Worst performance : 0.0% NT$967,950 Net gain : 4839.75 Gross gain : 5699.75 Trades statistics : Number of trades : 86 Trades/Year : 12.31 Number of gains : 36 Number of losses : 50 Win. ratio : 41.9% Max consec. win : 4 Max consec. loss : 8 Expectancy : 0.01 Average gain : 9.72% Average loss : -5.48% Avg. perf : 0.46% Biggest gain : 10.71% Biggest loss : -11.33% Profit fac : 1.77 Sum of gains : 20674.70 Sum of losses : -15834.95 Risk of ruin : 9.9%
  • 44. The OSDC Trading System Got your dice?
  • 45. SY:Generic {I:G:Eval ( {I:LastTrade} ? {I:LastTrade}==1 : {S:G:Above {I:Random 6} 2})} {I:G:Eval ( {I:LastTrade} ? {I:LastTrade}==-1 : {S:G:Below {I:Random 6} 3})} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:Stop:Fixed 5 |CS:CloseGain 10 ----------------------------------------------------- Performance : 48.4% ( 9.5%) Buy & Hold : 77.5% ( 14.2%) () => by year MaxDrawDown : 19.8% B&H MaxDrawDown : 44.8% Best performance : 49.5% Worst performance : 0.0% Net gain : 4839.75 Gross gain : 5699.75 Trades statistics : Number of trades : 86 Trades/Year : 12.31 Number of gains : 36 Number of losses : 50 Win. ratio : 41.9% Max consec. win : 4 Max consec. loss : 8 Expectancy : 0.01 Average gain : 9.72% Average loss : -5.48% Avg. perf : 0.46% Biggest gain : 10.71% Biggest loss : -11.33% Profit fac : 1.77 Sum of gains : 20674.70 Sum of losses : -15834.95 Risk of ruin : 9.9%
  • 46. SY:Generic {I:G:Eval ( {I:LastTrade} ? {I:LastTrade}==1 : {S:G:Above {I:Random 6} 2})} {I:G:Eval ( {I:LastTrade} ? {I:LastTrade}==-1 : {S:G:Below {I:Random 6} 3})} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:Stop:Fixed 5 |CS:CloseGain 10 ----------------------------------------------------- Performance : 48.4% ( 9.5%) Buy & Hold : 77.5% ( 14.2%) () => by year MaxDrawDown : 19.8% B&H MaxDrawDown : 44.8% Best performance : 49.5% Worst performance : 0.0% Net gain : 4839.75 Gross gain : 5699.75 Trades statistics : Number of trades : 86 Trades/Year : 12.31 Number of gains : 36 Number of losses : 50 Win. ratio : 41.9% Max consec. win : 4 Max consec. loss : 8 Expectancy : 0.01 Average gain : 9.72% Average loss : -5.48% Avg. perf : 0.46% Biggest gain : 10.71% Biggest loss : -11.33% Profit fac : 1.77 Sum of gains : 20674.70 Sum of losses : -15834.95 Risk of ruin : 9.9%
  • 47. SY:Generic {I:G:Eval ( {I:LastTrade} ? {I:LastTrade}==1 : {S:G:Above {I:Random 6} 2})} {I:G:Eval ( {I:LastTrade} ? {I:LastTrade}==-1 : {S:G:Below {I:Random 6} 3})} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:Stop:Fixed 5 |CS:CloseGain 10 ----------------------------------------------------- Performance : 48.4% ( 9.5%) Buy & Hold : 77.5% ( 14.2%) () => by year MaxDrawDown : 19.8% B&H MaxDrawDown : 44.8% Best performance : 49.5% Worst performance : 0.0% Net gain : 4839.75 Gross gain : 5699.75 Trades statistics : Number of trades : 86 Trades/Year : 12.31 Number of gains : 36 Number of losses : 50 Win. ratio : 41.9% Max consec. win : 4 Max consec. loss : 8 Expectancy : 0.01 Average gain : 9.72% Average loss : -5.48% Avg. perf : 0.46% Biggest gain : 10.71% Biggest loss : -11.33% Profit fac : 1.77 Sum of gains : 20674.70 Sum of losses : -15834.95 Risk of ruin : 9.9%
  • 48. Outline • trading system • analysis • backtesting • live trading
  • 49. Trading System Trading system, also known as algorithmic trading, is the use of computer programs for entering trading orders with the computer algorithm deciding on certain aspects of the order such as the timing, price, quantity of order
  • 50. Trading System Trading system, also known as algorithmic trading, is the use of computer programs for entering trading orders with the computer algorithm deciding on certain aspects of the order such as the timing, price, quantity of order Even with dice
  • 51. Analysis • Where are all the loss coming from? • Any interesting correlation with technical indicators? • (Be curious and ask yourself questions about your results)
  • 52. R is a programming language and software environment for statistical computing and graphics. It is an implementation of the S programming language with lexical scoping semantics inspired by Scheme.
  • 53. R is a programming language and software environment for statistical computing and graphics. It is an implementation of the S programming language with lexical scoping semantics inspired by Scheme. to work with numbers, vectors efficiently
  • 54. winamount <- xtabs(paste(quot;profit~quot;, rhs, sep=quot;quot;), data=data[data$profit>0,]) loseamount <- xtabs(paste(quot;profit~quot;, rhs, sep=quot;quot;), data=data[data$profit<=0,]); x$netgain <- winamount+loseamount; x$avgnet <- x$netgain/trade
  • 55. winamount <- xtabs(paste(quot;profit~quot;, rhs, sep=quot;quot;), data=data[data$profit>0,]) loseamount <- xtabs(paste(quot;profit~quot;, rhs, sep=quot;quot;), data=data[data$profit<=0,]); x$netgain <- winamount+loseamount; x$avgnet <- x$netgain/trade
  • 56. winamount <- xtabs(paste(quot;profit~quot;, rhs, sep=quot;quot;), data=data[data$profit>0,]) loseamount <- xtabs(paste(quot;profit~quot;, rhs, sep=quot;quot;), data=data[data$profit<=0,]); x$netgain <- winamount+loseamount; x$avgnet <- x$netgain/trade
  • 57. Now if we don’t short when we are above the open price....
  • 58. Now if we don’t short when we are above the open price.... Was 5699
  • 59. R also supports nice plotting
  • 60. Backtesting
  • 61. Backtesting • If you want to write a strategy (which might not be using dice), you want to test it for historical data
  • 62. Backtesting • If you want to write a strategy (which might not be using dice), you want to test it for historical data • “past performance does not guarantee future results”
  • 63. Backtesting • If you want to write a strategy (which might not be using dice), you want to test it for historical data • “past performance does not guarantee future results” • But if your past performance is bad, do you dare to use the system?
  • 64. Genius Trader
  • 65. SY:Generic {S:G:Above {I:Random 6} 2} {S:G:Below {I:Random 6} 3} |TF:Generic {S:G:CrossOverUp {I:Hour} 850} {S:G:CrossOverUp {I:Hour} 850} |TF:MaxOpenTrades 1 |CS:Stop:Fixed 5 |CS:CloseGain 10 • Modular • Flexible • Open source • does backtesting, charting
  • 66. live trading
  • 67. live trading • Data feed
  • 68. live trading • Data feed • Strategy / System runner
  • 69. live trading • Data feed • Strategy / System runner • Broker API
  • 70. live trading • Data feed • Strategy / System runner • Broker API • Infrastructure • Monitor • Scale and redundancy!
  • 71. Data feed • free: DDE from broker’s software • Win32::DDE (polling) • publish to memcached (or more appropriate message queues) • 10 lines of code • 20 lines for reconnect and robustness
  • 72. Strategy runner
  • 73. Strategy runner • genius trader, available for back test
  • 74. Strategy runner • genius trader, available for back test • GT::Stream, accept streaming data and applies trading system to generate real time signals
  • 75. Strategy runner • genius trader, available for back test • GT::Stream, accept streaming data and applies trading system to generate real time signals • available at: ????
  • 76. Infrastructure • VirtualBox headless & MicroXP • memcached • gearman • nagios
  • 77. Trading platforms • http://geniustrade.org/ • Trade Station (proprietary) • http://ojts.sourceforge.net/ • http://www.marketcetera.org/
  • 78. Library • quantlib • ta-lib
  • 79. R tutorials • Econometrics in R (Grant V. Farnsworth) • Practical Regression and Anova using R (Julian J. Faraway)
  • 80. Conclusion
  • 81. 2009
  • 82. Yesterday... I went to hotsprings in the morning..
  • 83. Yesterday... I went to hotsprings in the morning..
  • 84. At 11:45:20
  • 85. At 11:45:20
  • 86. At 11:45:20
  • 87. At 11:45:20
  • 88. At 11:45:20
  • 89. At 11:45:20
  • 90. At 11:45:20
  • 91. At 11:45:20 PROFIT!!
  • 92. PROFIT!!
  • 93. Questions? clkao@clkao.org