Thursday, November 1, 2012

vwap strategy is non-trivial

See other posts on ExecutionRisk.

Some friends say vwap is the simplest trading algorithm, compared to most algorithms. I am newbie. I feel vwap is not a no-brainer that you can master in an hour.






2 datetimes -- formula can apply between any 2 datetimes, but by default is [StartOfDay - now]

VWAP has 3 meanings --
1) vwap is name of a live soft mkt datum displayed as a live creeping curve similar to a "moving average price of last 3 trades". VWAP is averaged by volume, and averaged over all trades since SOD (on that cusip). Do we include just sells? Well, each buy trade matches exactly one sell.

2) vwap is name of a common Execution Benchmark when a sell-side receives a block order from a buy-side
** guaranteed VWAP execution.
** Say you had a sizeable buy order executed below average price. Well done, but how do you define "below average price"? Default definition is vwap. Arrive Price is another definition.

Suppose a buy-side has a large (500,000 shares) block sell - tough job. A sell side (usually a i-bank) typically alleviates the buy-side's problem immediately by buying the shares wholesale from the buy-side, and then selling them off later. The contract price might be the next 30 days' vwap Minus 1 cent, which is 1 cent WEAKER than vwap. With a block-Sell, it's hard to guarantee a price Above vwap; it's more achievable to guarantee a price Below vwap.

3) vwap is name of a standard strategy for Trading machines
** impact - minimal market impact. This is an advantage of vwap strategies. Many passive traders prefer vwap strategies. (But large order may not get fully filled)
** The other side of the coin -- execution risk is high with VWAP

** price, quantity, timing, LO/MO, when to cancel -- the key output of this or any strategy. Here are Some of the trading tips
**** empirically, to beat vwap benchmark, you need good forecast of intraday volume pattern
**** rule of thumb -- trade most heavily when markets are most liquid.
**** Note there's usually a desire to finish working the block order within a time-frame, rather than indefinitely. If indefinitely or order is small, you can beat vwap benchmark by using limit orders
**** Note using limit orders earns us the b/a spread while using mkt orders costs us the spread but is faster.
**** if you want to aggressively participate in current volume and avoid missing the wave, then use MO rather than LO.
**** block traders sometimes divide the given timeframe into, say, 10 bins and allocate more/less than 10% of the block to each bin according to volume forecast, and trade according to the plan. Just like project planning and execution.
**** Note minimizing mkt impact is one of the top 3 criteria. If you sell first part of a block-Sell with massive impact, price would stay high for the rest of the day and you can't complete the order.

No comments:

Total Pageviews

my favorite topics (labels)

_fuxi (302) _misLabel (13) _orig? (3) _rm (2) _vague (2) clarified (58) cpp (39) cpp_const (22) cpp_real (76) cpp/java/c# (101) cppBig4 (54) cppSmartPtr (35) cppSTL (33) cppSTL_itr (27) cppSTL_real (26) cppTemplate (28) creditMkt (14) db (65) db_sybase (43) deepUnder (31) dotnet (20) ECN (27) econ/bank` (36) fin/sys_misc (43) finGreek (34) finReal (45) finRisk (30) finTechDesign (46) finTechMisc (32) finVol (66) FixedIncom (28) fMath (7) fMathOption (33) fMathStoch (67) forex (39) gr8IV_Q (46) GTD_skill (15) GUI_event (30) inMemDB (42) intuit_math (41) intuitFinance (57) javaMisc (68) javaServerSide (13) lambda/delegate (22) marketData (28) math (10) mathStat (55) memIssue (8) memMgmt (66) metaProgram` (6) OO_Design (84) original_content (749) polymorphic/vptr (40) productive (21) ptr/ref (48) py (28) reflect (8) script`/unix (82) socket/stream (39) subquery/join (30) subvert (13) swing/wpf (9) sysProgram` (16) thread (164) thread_CAS (15) thread_cpp (28) Thread* (22) timeSaver (80) transactional (23) tune (24) tuneDB (40) tuneLatency (30) z_ajax (9) z_algoDataStruct (41) z_arch (26) z_arch_job (27) z_automateTest (17) z_autoTrad` (19) z_bestPractice (39) z_bold (83) z_bondMath (35) z_book (18) z_boost (19) z_byRef^Val (32) z_c#GUI (43) z_c#misc (80) z_cast/convert (28) z_container (67) z_cStr/arr (39) z_Favorite* (8) z_FIX (15) z_forex (48) z_fwd_Deal (18) z_gz=job (33) z_gzBig20 (13) z_gzMgr (13) z_gzPain (20) z_gzThreat (19) z_hib (19) z_IDE (52) z_ikm (5) z_IR_misc (36) z_IRS (26) z_javaWeb (28) z_jdbc (10) z_jobFinTech (46) z_jobHunt (20) z_jobRealXp (10) z_jobStrength (15) z_jobUS^asia (27) z_letter (42) z_linq (10) z_memberHid` (11) z_MOM (54) z_nestedClass (5) z_oq (24) z_PCP (12) z_pearl (1) z_php (20) z_prodSupport (7) z_py (31) z_quant (14) z_regex (8) z_rv (38) z_skillist (48) z_slic`Problem (6) z_SOA (14) z_spring (25) z_src_code (8) z_swingMisc (50) z_swingTable (26) z_unpublish (2) z_VBA/Excel (8) z_windoz (17) z_wpfCommand (9)

About Me

New York (Time Square), NY, United States
http://www.linkedin.com/in/tanbin