Buy and Hold: CBOT-TY futures

In this blog I’ll show how to use SAMOA to calculate the returns of buy-and-hold strategies for the 10Y Treasury Note Future (TY) that trades in the CBOT. These results can be useful for benchmark purposes.

Manual Calculation (Using adjusted prices)

  • As explained in the blog “Generic Series”, SAMOA calculates forward and backwards adjusted prices for futures. In this section we’ll use those prices so that we don’t have to deal with the rolls. All we need is daily closes. SAMOA’s database goes back to the TYM82 contract:
select Min(DateS) as DateS, dbo.ssToFrontContract('TY', Min(DateS), null) as [Contract], Min([Close]) as Price from DailyFutFront where Market='TY'
union all
select Max(DateS) as DateS, dbo.ssToFrontContract('TY', Max(DateS), null) as [Contract], Max([Close]) as Price from DailyFutFront where Market='TY'

image

  • First, lets calculate the monthly returns manually (using forward-adjusted prices):
declare @TY_DailyCloses_Returns_Monthly table (
   DateS datetime
   ,FirstP decimal(18,8)
   ,LastP decimal(18,8)
   ,PrevLastP decimal(18,8)
   ,ReturnPerc  decimal(18,2)
);
insert into @TY_DailyCloses_Returns_Monthly (DateS, FirstP, LastP)
select
    Max(DateS) as DateS
    , dbo.ssAggrFirst( dates, CloseA) as FirstP
    , dbo.ssAggrLast( dates, CloseA) as LastP
from DailyFutFrontA
where Market='TY'
group by dbo.ssOnlyMonth(dates);
UPDATE t SET t.PrevLastP = u.PrevLastP
FROM @TY_DailyCloses_Returns_Monthly t
INNER JOIN (
      select DateS, (select top 1 LastP from @TY_DailyCloses_Returns_Monthly where DateS<p.DateS order by DateS desc) as PrevLastP
      from @TY_DailyCloses_Returns_Monthly p
) u
ON t.DateS = u.DateS;
UPDATE @TY_DailyCloses_Returns_Monthly SET ReturnPerc = (LastP-isnull(PrevLastP,FirstP) ) / isnull(PrevLastP,FirstP) * 100;
Select * from @TY_DailyCloses_Returns_Monthly Order by DateS;

image

Notes about these calculations:

  1. DateS: Last day of the month for which there is a closing price.
  2. FirstP: First closing price of the month (chronologically), adjusted by the rolls.
  3. LastP: Closing price on DateS, adjusted by the rolls.
  4. PrevLastP: LastP of the previous month.
  5. ReturnPerc: Return for the month ending on DateS. Calculated as (LastP- PrevLastP) / PrevLastP * 100, except for the first row, where PrevLastP is replaced by FirstP.
  6. The functions ssAggrFirst() and ssAggrLast() are aggregating functions provided by SAMOA, that return the first and last prices chronologically.

Using SAMOA

SAMOA’s Booking System can handle generic futures if you don’t want to deal with rolls. Let’s use this feature to simulate the strategy.

  • The strategy script for this buy-and-hold strategy can be defined as follows (please read “Back-testing Strategies” for more information about how to define a strategy using JScript, and about the function ssRunStrategyS):
var K = 10000000;
var valuept = CacheDS.Get_PLInfo("TY").ValuePT;
function event_OpenBook() {
	context.AddCapital(K, "Initial K");
	context.AddMark("TY", vars.Close);
	var q = Math.Floor( K / (valuept * vars.Close));
	context.AddTrade(null, "TY", q, vars.Close, "Stay fully invested");
}
function event_CloseDay() {
	context.AddMark("TY", vars.Close);
}
function event_CloseBook() {
	context.AddTrade(null, "TY", -book.accQ("TY"), vars.Close, "Liquidate");
}

NOTES:

  1. At the beginning, we add $10,000,000 of capital (K) to the book (line 4)
  2. The code CacheDS.Get_PLInfo("TY").ValuePT returns the value of a point for TY.
  3. We calculate the amount of contracts (q) necessary to be fully invested (line 6), and make the trade (line 7) at the prevailing price (vars.Close).
  4. Each new day, we mark the book to market (line 10).
  5. Finally, at the end of the simulation, we close the position (line 13).
  • We can feed this JScript into the function ssRunStrategyS(…), which will produce only 2 trades:

image

  • The monthly P&L report will look like this:

Figure P1:

Monthly P&L

image

  • The monthly returns in the green column match exactly those calculated previously. In fact, when displayed side by side we never see differences bigger than 1 basis point, which can be attributed to rounding errors.

Comparison of returns

  • Here are the summary statistics on the column “FromPrices-FromBook”:

image

  • Finally, here is the full table of returns:

image

With no cash flows

The strategy that we’ve simulated so far buys 140 contracts at the beginning of the simulation, and rolls them all into the new front contracts every 3 months. Since the prices of the front and back contracts are usually different, this portfolio generates cash flows along the simulation.

We can modify the strategy so that on each roll we only use the proceeds of the sale to buy the new front contracts, thus reducing the cash left after both transactions (not eliminating it completely because it is not possible to trade fractions of a contract).

  • For this strategy we will take care of the rolls ourselves. Therefore we need a table with the front contracts and the dates of the rolls:
with MainT as (
    select Market, DateS,
        Expiry as ExpiryF, [Close] as CloseF,
        dbo.ssNextGenericCode(Expiry,'Front','TYFut',(select RollingMethod from Markets where Market='TY'),1) as ExpiryB
    from DailyFutFront
    where Market='TY'
)
select
    Market, DateS,
    Market + ExpiryF as Front, CloseF as FrontP,
    case when DateS=dbo.ssGetCodeDatesTO(ExpiryF, 'Front', Market+'Fut', NULL) then 'YES' else '' end as Switch,
    Market + ExpiryB as Back,
    (select [Close] from DailyFut where Market=MainT.Market and Expiry=MainT.ExpiryB and DateS=MainT.DateS) as 'BackP'
from MainT
order by DateS

 image

NOTES:

  1. Front, FrontP: front contract on DateS, with it’s price
  2. Back, BackP: back contract on DateS, with it’s price (if available)
  3. Switch: “YES” when a roll needs to be made from the Front to the Back (which will become the front the next day)
  4. Only rows with a FrontP are returned in this table.
  • Let’s define the strategy:
var K = 10000000;
var valuept = CacheDS.Get_PLInfo("TY").ValuePT;
function event_OpenBook() {
    context.AddCapital(K, "Initial K");
    //Initial Buy
    var q = Math.Floor(K / (valuept * vars.FrontP));
    context.AddTrade(null, vars.Front, q, vars.FrontP, "Initial Buy");
}
function event_OpenDay() {
    //Mark the book
    context.AddMark(vars.Front, vars.FrontP);
    if (vars.BackP!=null) context.AddMark(vars.Back, vars.BackP);
}
function event_CloseDay() {
    if (vars.Switch == "YES") {
        context.Liquidate("Switch:sell");
        //Switch: buy
        var q = Math.Floor( book.NAV / (valuept * vars.BackP) );
        context.AddTrade(null, vars.Back, q, vars.BackP, "Switch: buy");
    }
}
function event_CloseBook() {
    context.Liquidate("Liquidate");
}

Note that this time around, in event_OpenDay we roll the position whenever Switch=“YES”.

  • Feeding this script into ssRunStrategyS will produce the following trades:

NoCashFlowTrades

NOTES:

  1. One “Initial Buy”, followed by a number of rolls (“Switch:sell”/”Switch:sell” pairs), followed by one “Liquidate” trade.
  2. The number of contracts Q varies over time to keep us fully invested.
  • Which will produce the following slightly different returns:

image

Reader's Comments »

  1. By Nestor Sulikowski » Buy and Hold: 3M TBill on June 14, 2009 at 1:27 am

    [...] Buy and Hold: TY futures [...]

  2. By Nestor Sulikowski » Buy and Hold: EURUSD on June 19, 2009 at 1:21 pm

    [...] Buy and Hold: TY futures [...]

  3. By download edge of darkness on March 1, 2011 at 8:07 pm

    Download Full Movies…

    [...]below you’ll find the link to some sites that we think you should visit[...]…

  4. By download the rite on March 2, 2011 at 6:37 pm

    Download Full Movies…

    [...]below you’ll find the link to some sites that we think you should visit[...]…

  5. By download twelve on March 2, 2011 at 9:49 pm

    Free Movie Downloads…

    [...]just below, are some totally unrelated sites to ours, however, they are definitely worth checking out[...]…

  6. By JadooSEO on August 15, 2011 at 8:15 am

    Online Article……

    [...]The info mentioned in the article is some of the best available [...]………

  7. By Emberlynn on October 2, 2011 at 9:42 pm

    Now I’m like, well duh! Truly thfankul for your help.

  8. By jqyfittejz on October 3, 2011 at 3:42 am

    tRd9JS yjzrgmuomvbk

  9. By ffzugxm on October 4, 2011 at 10:09 am

    qsRAKZ , [url=http://vqbcntczyemp.com/]vqbcntczyemp[/url], [link=http://qmblpejbmgpd.com/]qmblpejbmgpd[/link], http://unxweibavghu.com/

  10. By pmifkkbfsa on October 7, 2011 at 6:02 am

    tRIpVl , [url=http://bupgmotvwahq.com/]bupgmotvwahq[/url], [link=http://uyudidtwmldg.com/]uyudidtwmldg[/link], http://tcfuscvjjfxp.com/

  11. By Weihnachtsbaum aus künstlichen Stoffen on October 26, 2011 at 4:54 pm

    Blogging about…

    [...]I don’t normally suggest other web-sites but I will break my trend for this[...]…

  12. By internationale on October 31, 2011 at 5:04 am

    for…

    what follows are a few web links to sites which we connect to seeing that we believe they are seriously worth visiting…

  13. By dokuro on October 31, 2011 at 11:43 am

    jacuzzi…

    the time to check or inspect the content or internet sites we have linked to beneath the…

  14. By edible arrangements coupons on November 7, 2011 at 11:46 pm

    Related websites……

    [...]we like to honor a number of other sites on the internet, even though they aren’t associated with us, by linking to them. Under are a few webpages worth checking out[...]……

  15. By wedding songs 2012 playlist on November 12, 2011 at 6:55 pm

    2012 Fashion ideas30…

    No one who cannot rejoice in the discovery of his own mistakes deserves to be called a scholar….

  16. By pumps on November 30, 2011 at 5:47 am
  17. By cool caravans on December 4, 2011 at 8:28 pm

    Travail de Yesturdays pour le demain – un regard à quelques exemples…

    A été montré cet exemple, par l’intermédiaire de jon Messer dessus Journal de phase et croyez-le pour être très instructif et trop le point…

  18. By how much is a wof on December 5, 2011 at 2:19 am

    Sites You Should Check Out…

    http://www.e-psychic-readings.com...

  19. By Curing A Yeast Infection on December 6, 2011 at 9:57 am

    Yeast Infection Treatment…

    [...]in the following are several hyper-links to internet websites that we connect to as we feel they will be truly worth browsing[...]…

  20. By Konzertkarten 2012 on December 6, 2011 at 6:18 pm

    Trackback…

    [...]Do you’ve any? Kindly let me recognise in order that I could subscribe. Thanks.[...]…

  21. By Angry Birds Free Online on December 7, 2011 at 2:47 am

    Angry Birds Online…

    [...]these are some hyper-links to internet pages we link to because we think they will be definitely worth browsing[...]…

  22. By nz boats for sale on December 7, 2011 at 3:18 am

    Sites You Should Check Out…

    http://www.theiminsider.com/how-make-a-website...

  23. By Entry Level Mechanical Engineering Jobs on December 7, 2011 at 7:50 am

    Entry Level Mechanical Engineering Jobs…

    Entry Level Mechanical Engineering Jobs…

  24. By office install on December 9, 2011 at 8:53 am
  25. By buy guest beds on December 10, 2011 at 12:12 am

    Het werk van Yesturdays voor morgen – een blik op sommige voorbeelden…

    Werd getoond dit voorbeeld, via David hardvalder linkedin en gevonden het om te zijn zeer informatief en ook het punt…

  26. By screen doors nz on December 12, 2011 at 8:46 am
  27. By libra horoscope for today on December 13, 2011 at 2:28 am

    Sites You Should Check Out…

    http://www.myhuntingnews.com...

  28. By zahnpastagegen pickel on December 13, 2011 at 2:39 pm

    Funny article…

    Extremely funny post…

  29. By Get free google +1 on December 16, 2011 at 5:44 am

    Dubai Gold Rate…

    Hi there, just wanted to say, I enjoyed this blog post. It was helpful. Keep on posting!…

  30. By Gold Rate in Dubai on December 16, 2011 at 7:06 am

    Dubai Gold Rate…

    What’s up, just wanted to tell you, I loved this article. It was practical. Keep on posting!…

  31. By Download chart music on December 16, 2011 at 9:03 pm

    Websites worth visiting…

    [...]here are some links to sites that we link to because we think they are worth visiting[...]……

  32. By fishing licence on December 18, 2011 at 10:27 pm
  33. By how to service a car on December 19, 2011 at 5:14 pm

    Sites You Should Check Out…

    http://www.christchurchglass.getlisted.co.nz...

  34. By View my website to watch spongebob on December 20, 2011 at 11:47 pm

    Enjoyed every bit of it…

    I should say, as a great deal as I enjoyed reading what you had to say, I couldnt assist but shed interest soon after a whilst….

  35. By snowboard size on December 22, 2011 at 9:53 pm
  36. By Download mp3 music on December 24, 2011 at 3:35 pm

    Check this out…

    [...] that is the end of this article. Here you’ll find some sites that we think you’ll appreciate, just click the links over[...]……

  37. By coupon truenutrition on December 24, 2011 at 9:03 pm

    ………..

    My partner and i suppose in the meantime i’m going to accept bookmarking and also incorporating the RSS feed to my own Yahoo account. My partner and i enjoy brand new revisions and definately will share this site using my personal Facebook or myspace …

  38. By bouncy castle barnet on December 26, 2011 at 10:41 pm

    … [Trackback]…

    [...] Read More: nestorsulikowski.com/index.php/2009/06/buy-and-hold-ty/ [...]…

  39. By psychic readings on December 27, 2011 at 7:25 am

    Sites You Should Check Out…

    http://www.ofis.getlisted.co.nz/...

  40. By Olly on December 29, 2011 at 1:20 pm

    Yesturdays work for tomorrow – a look at some examples…

    Was shown this example, via megan hardvalder on Twitter and imagine it to be somewhat informative and too the point…

  41. By watches on December 30, 2011 at 3:32 am

    Just keep looking…

    this blog appears not to be so well maintained these days but I like the post…

  42. By rx7 rx on January 3, 2012 at 2:41 pm
  43. By mma gyms on January 4, 2012 at 4:54 pm

    Sites You Should Check Out…

    http://www.mymmainfo.com...

  44. By Exterior Solar Lights on January 4, 2012 at 9:09 pm

    Solar Lights…

    [...]down the page are a handful of urls to webpages which we link to as we believe they will be worth checking out[...]…

  45. By hire a car auckland on January 6, 2012 at 10:11 am

    Sites You Should Check Out…

    http://www.rotarydirect.getlisted.co.nz/rx7-rx...

  46. By Laboratory supplies on January 9, 2012 at 11:36 pm

    Best articles…

    [..] More info about this article creator Click Here [..]…

  47. By young womens clothing on January 10, 2012 at 5:20 pm

    Yesturdays Arbeit für Morgen – ein Blick auf einige Beispiele…

    Wurde dieses Beispiel, über gezeigt Megan McCormick an Twitter und glauben Sie ihm vor um zu sein extrem informativ und auch der Punkt…

  48. By Filter paper on January 11, 2012 at 6:51 am

    Articles…

    [..] More info Here [..]…

  49. By Medicina natural on January 11, 2012 at 2:44 pm

    More info…

    [..] More info here [..]…

  50. By enfermedades mortales de perros on January 15, 2012 at 9:26 pm

    Lavoro per il domani – uno sguardo di Yesturdays ad alcuni esempi…

    Notato questo esempio, via jon halign sopra Twitter e credilo per essere estremamente informativo ed ugualmente il punto…

  51. By Singapore Web Design on January 16, 2012 at 1:30 am

    Singapore Web Design…

    Ahh tis quite true…….

  52. By whatman thimbles on January 16, 2012 at 7:49 am

    Nestor Sulikowski…

    I actually wanted to send a small remark so as to express gratitude to you for the wonderful pointers you are giving on this website. My extended internet investigation has at the end of the day been compensated with sensible tips to write about with m…

  53. By nutricion on January 16, 2012 at 5:46 pm

    Nestor Sulikowski…

    I loved as much as you will receive carried out right here. The sketch is attractive, your authored material stylish. nonetheless, you command get got an shakiness over that you wish be delivering the following. unwell unquestionably come further forme…

  54. By Marco Lorenzi on January 17, 2012 at 2:41 pm

    Lucas…

    i really want to add your site link at my blog, because your site help me a lot…please give me an anchor text if you want to add your link at my blogroll……

  55. By bolsas plastico on January 18, 2012 at 8:05 am

    Nestor Sulikowski…

    [..] More info here [..]…

  56. By easy crafts for kids using household items on January 18, 2012 at 5:22 pm

    Recommended Websites…

    [...]below you’ll find the link to some sites that we think you should visit[...]…

  57. By tiu 1 on January 19, 2012 at 12:21 pm

    Great information…

    This is certainly exceptional. Sole looked at the plant amount and we are shocked. We are most certainly fascinated by this type of points. A good appreciate member’s retailer, and estimate your time inside this. Please keep editing. They’re exceedin…

  58. By Cedar Grove homes Newport News VA for Sale on January 20, 2012 at 1:09 pm

    ………..

    We guess in the meantime i am going to be satisfied with bookmarking as well as incorporating your own Feed to be able to my personal Google consideration. I look ahead to fresh updates and will share this site together with my personal Facebook or mys…

  59. By sobres impresos on January 20, 2012 at 4:43 pm

    Nestor Sulikowski…

    Your blog doesn’t show up correctly on my iphone4 – you may want to try and repair that…

  60. By cipy on January 21, 2012 at 9:29 pm

    pizdy…

    Ostre ruchanie wygolonej cipy…

  61. By cat scan vs mri on January 21, 2012 at 11:31 pm

    important links…

    Guys check out these important links…

  62. By true nutrition discount code on January 23, 2012 at 8:27 am

    ………..

    We suppose for now i’ll be happy with bookmarking as well as introducing the RSS feed for you to my own Yahoo and google bank account. My partner and i look forward to new improvements and can share this blog with my Facebook team….

  63. By Outback Steakhouse Coupons on January 25, 2012 at 8:44 am

    [...]always a big fan of linking to bloggers that I love but don’t get a lot of link love from[...]……

    [...]just beneath, are numerous totally not related sites to ours, however, they are surely worth going over[...]……

  64. By Syma S107/s107g R/C Helicopter on January 25, 2012 at 8:47 am

    Great information…

    This is superior. A miami detective checked out this amazing gist therefore we are stupefied. We are curious about this sort of anything. Sole appreciate consumers accumulate, and number your time with this. Please keep enhancing. They’re identical vi…

  65. By wie nehme ich schnell ab on January 26, 2012 at 7:35 am

    oferte preturi 2012…

    I guess what I’m trying to say is, I don’t think you can measure life in terms of years. I think longevity doesn’t necessarily have anything to do with happiness. I mean happiness comes from facing challenges and going out on a limb and taking risks…

  66. By botiquin on January 26, 2012 at 9:31 pm

    Great information…

    This is very nice. Members looked at exactly that substance and we are impressed. We are precisely interested in this kind of whatever you may desire. Folk appreciate dieter s business, and treasure your precious time inside this. Please keep adding in…

  67. By Nassau county attorney on January 27, 2012 at 4:06 am

    Sites we Like……

    [...] Every once in a while we choose blogs that we read. Listed below are the latest sites that we choose [...]……

  68. By indian sex stories on January 27, 2012 at 9:08 am

    [...]we like to honor many other internet sites on the web, even if they aren’t linked to us, by linking to them. Under are some webpages worth checking out[...]……

    [...]Here are some of the sites we recommend for our visitors[...]……

  69. By true nutrition on January 28, 2012 at 10:22 pm

    ………..

    My spouse and i guess in the meantime i’ll accept book-marking and also including the Feed to our Yahoo and google consideration. My partner and i anticipate fresh revisions and will share this kind of site with my personal Fb team….

  70. By Christian Lefer | Fundraising Ideas on January 29, 2012 at 9:31 pm

    Great information…

    This is first-class. At least one looked at this guidance gist and we are wordless. We are precisely curious about one of these problems. All of us appreciate body reference, and regard doing in this. Please keep updating. These are entirely practical …

  71. By igun Pro on January 30, 2012 at 6:50 am

    … [Trackback]…

    [...] Informations on that Topic: nestorsulikowski.com/index.php/2009/06/buy-and-hold-ty/ [...]…

  72. By Nerf guns for sale on January 30, 2012 at 2:28 pm

    My opinion is ……

    There are actually a number of details like that to take into consideration. That could be a great level to convey up. I provide the ideas above as general inspiration however clearly there are questions like the one you convey up the place crucial fac…

  73. By true nutrition discount code on January 30, 2012 at 9:32 pm

    ………..

    I guess in the meantime i’ll accept book-marking along with adding your Feed for you to my Yahoo and google bank account. My partner and i look forward to brand new revisions and definately will share this blog using my Fb team….

  74. By Sex Geschichten on January 31, 2012 at 5:22 pm

    Read More…

    [...]…Most Nice…[...]…

  75. By seo link monster review on February 1, 2012 at 9:07 pm

    Great information…

    This is often distinctive. One watch this realisation delighted therefore we are confused. We’re interested in this kind of whatever you may desire. Among appreciate each of your sharing, and evaluate your precious time in this. Please keep updating. …

  76. By http://freeipad2now.com/free-ipad-2-faq/ on February 2, 2012 at 12:17 pm

    ……

    It?s onerous to search out knowledgeable people on this topic, however you sound like you know what you?re speaking about! Thanks…

  77. By Hindi Sex Stories on February 3, 2012 at 11:30 am

    Read More…

    [...]…We like this Blog…[...]…

  78. By medical negligence solicitor on February 3, 2012 at 12:04 pm

    [...]always a big fan of linking to bloggers that I love but don’t get a lot of link love from[...]……

    [...]just beneath, are numerous totally not related sites to ours, however, they are surely worth going over[...]……

  79. By Tamil Sex Stories on February 3, 2012 at 8:37 pm

    Read More…

    [...]…Most Nice…[...]…

  80. By how to get rid of man breasts on February 4, 2012 at 2:56 am

    Great information…

    This is marvelous. Among checked out this in turn substance when we are astounded. We’re attracted to this kind of things. Device appreciate your selected pointers, and amount the effort while in this. Please keep editing. They may be entirely treasur…

  81. By whiplash symptoms on February 4, 2012 at 9:51 am

    [...]the time to read or visit the content or sites we have linked to below the[...]……

    [...]here are some links to sites that we link to because we think they are worth visiting[...]……

  82. By steel coffee cup on February 4, 2012 at 3:12 pm

    [...]always a big fan of linking to bloggers that I love but don’t get a lot of link love from[...]……

    [...]just beneath, are numerous totally not related sites to ours, however, they are surely worth going over[...]……

  83. By Masala Indian Sex Stories on February 4, 2012 at 7:53 pm

    Read More…

    [...]…Very Interesting…[...]…

  84. By compensation claims advice on February 4, 2012 at 10:14 pm

    [...]we like to honor many other internet sites on the web, even if they aren’t linked to us, by linking to them. Under are some webpages worth checking out[...]……

    [...]Here are some of the sites we recommend for our visitors[...]……

  85. By Search Engine Optimization Webmaster Forum on February 4, 2012 at 10:42 pm

    Read More…

    [...]…Most Helpful…[...]…

  86. By bus accident on February 5, 2012 at 11:18 am

    [...]Sites of interest we have a link to[...]……

    [...]usually posts some very interesting stuff like this. If you’re new to this site[...]……

  87. Yahoo Backlinks Service…

    What’s up, just wanted to tell you, I liked this blog post. It was helpful. Keep on posting!…

  88. By birth injury on February 5, 2012 at 9:24 pm

    [...]the time to read or visit the content or sites we have linked to below the[...]……

    [...]here are some links to sites that we link to because we think they are worth visiting[...]……

  89. By double glazing on February 6, 2012 at 12:30 am

    [...]The information mentioned in the article are some of the best available [...]……

    [...]below you’ll find the link to some sites that we think you should visit[...]……

  90. By car injury compensation on February 6, 2012 at 3:08 am

    [...]we like to honor many other internet sites on the web, even if they aren’t linked to us, by linking to them. Under are some webpages worth checking out[...]……

    [...]Here are some of the sites we recommend for our visitors[...]……

Leave a Reply

CAPTCHA Image