title: Vanilla Interest Rate Swap Valuation in Python using QuantLib
body: <p>I am valuing a Vanilla Interest Rate Swap as at 31 January 2017 (Valuation Date) but the effective date of the Vanilla Interest Rate Swap is 31 December 2016 (Start Date). Firstly, I would like to know how I can adjust for my valuation date and start date in the code below;</p>
  
  <pre><code>import QuantLib as ql
  startDate = ql.Date(31,12,2016)
  valuationDate = ql.Date(31,1,2017)
  maturityDate = ql.Date(30,9,2019)
  calendar = ql.SouthAfrica()
  bussiness_convention = ql.Unadjusted
  swapT = ql.VanillaSwap.Payer
  nominal = 144000000
  fixedLegTenor = ql.Period(3, ql.Months)
  fixedSchedule = ql.Schedule(startDate, maturityDate, 
                               fixedLegTenor, calendar,
                               ql.ModifiedFollowing, ql.ModifiedFollowing,
                               ql.DateGeneration.Forward, False)
  fixedRate = 0.077
  fixedLegDayCount = ql.Actual365Fixed()
  spread = 0
  floatLegTenor = ql.Period(3, ql.Months)
  floatSchedule = ql.Schedule(startDate, maturityDate, 
                                floatLegTenor, calendar,
                                ql.ModifiedFollowing, ql.ModifiedFollowing,
                                ql.DateGeneration.Forward, False)
  floatLegDayCount = ql.Actual365Fixed()
  discountDates = [ql.Date(31,1,2017),ql.Date(7,2,2017),ql.Date(28,2,2017),
                  ql.Date(31,3,2017),ql.Date(28,4,2017),ql.Date(31,7,2017),
                  ql.Date(31,10,2017),ql.Date(31,1,2018),ql.Date(31,1,2019),
                  ql.Date(31,1,2020),ql.Date(29,1,2021),ql.Date(31,1,2022),
                  ql.Date(31,1,2023),ql.Date(31,1,2024),ql.Date(31,1,2025),
                  ql.Date(30,1,2026),ql.Date(29,1,2027),ql.Date(31,1,2029),
                  ql.Date(30,1,2032),ql.Date(30,1,2037),ql.Date(31,1,2042),
                  ql.Date(31,1,2047)]
  discountRates = [1,0.9986796,0.99457,0.9884423,0.9827433,0.9620352,0.9420467,0.9218714,
                   0.863127,0.7993626,0.7384982,0.6796581,0.6244735,0.5722537,0.5236629,
                   0.4779477,0.4362076,0.3619845,0.2795902,0.1886847,0.1352048,0.1062697]
  
  jibarTermStructure = ql.RelinkableYieldTermStructureHandle()
  jibarIndex = ql.Jibar(ql.Period(3,ql.Months), jibarTermStructure)
  jibarIndex.addFixings(dtes, fixings)
  discountCurve = ql.DiscountCurve(discountDates,discountRates,ql.Actual365Fixed())
  swapEngine = ql.DiscountingSwapEngine(discountCurve)
  interestRateSwap = ql.VanillaSwap(swapT, nominal, fixedSchedule, 
                 fixedRate,fixedLegDayCount,jibarIndex,spread,floatSchedule,
                 floatLegDayCount,swapEngine,floatSchedule.convention)
  </code></pre>
  
  <p>Secondly, I would like to know how best I can incorporate <code>jibarIndex</code> in <code>interestRateSwap =ql.VanillaSwap()</code> or else how can I use my Discount Factors and Discount Dates to calculate the value of the Interest Rate Swap</p>