Monday, November 30, 2009

PCP - how to internalize, using PnL

(PCP under continuous dividend model? See http://bigblog.tanbin.com/2013/11/equity-fwd-contract-pricing-internalize.html)

key PCP concept -- the equivalence of values of 2 portfolios ANY time after you buy them, not just at expiration. However, the valuation (plotted against S) at any time before expiration is non-intuitive and hard to grapple.

Suppose A buys a long European call and B buys [a long European put + a futures]. All instruments were bought at a fair price, so PnL both start $0. (MV is irrelevant at this stage.) N days later, when market rates (spot, implied vol...) have moved a bit, we would expect both portfolios to show small but identical PnL[1]. Therefore, looking at PnL rather than MV, the cash component disappears from the equation, since cash will (almost) always have zero PnL.

Note MV is a poorly defined (non-intuitive) concept for futures and a lot of derivatives. See post on MktVal clarified.

Similar to the PnL view, the delta view involves only 3 positions -- call/put/forward, not  the cash.

[1] exact PnL amount is hard to visualize as it involves BS.

(A: European options have no assignment before maturity.)

Now let's look at MV or valuations. Valuations are more important in practice and relate to observed market prices. At t=0 portfolio MV are equal only if we started at t= -1 with an equal amount of seed capital. At t=0, MV becomes (assuming zero interest rate)

  Premium_c + $K cash = Premium_p + f

N days later, or at expiration, MV becomes

  MV_c + $K cash = MV_p + MV_f

Some people (like my boss Saurabh) say a long call + a short put == a forward [2], but I find it less intuitive. LHS is the difference between the 2 premiums, which could be 0 or negative.

Update - Now I agree C = P + F is the best way to remember it, once you recognize that you must get down to details with the fwd contract and build intimate knowledge thereof.

I guess the statement in [2] assumes a long position in the forward contract can become either an asset or liability any time before expiration. If I must translate [2] into English, i would say a long call combining a short put has identical PnL to a forward contract (assuming European options). Suppose both portfolios start with just the positions + no cash. At T=0, all 3 securities are bought at fair values, so Portfolio A has PnL=0, so does B. Based on the delta rule above, a 1 cent change in underlier would result in identical changes in the 2 portfolio's valuations, so the 2 portfolios always have identical valuations, either positive or negative.

What if your short put gets assigned? Answer is hidden somewhere in this blog. If you indeed lose the short position, the delta rule will stop working.

Is PCP compromised by any of the "unrealistic/simplistic" assumptions of BS? No. PCP is model-independent.

Is PCP affected by the vol skew or the vol term structure ? I don't think so.

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