股票

是否可以使用 quantlib 金融庫來計算以下措施?

  • August 26, 2016

我正在從事一個解決財務問題的項目,我很好奇是否可以使用qunatlib。我已經看過有關它的文件,但是由於我絕對不是財務專家,因此無法得出 quantlib 是否適合我所擁有的措施的結論。

例如,我正在計算某一天在債券/股票之上的息票/股息支付。讓我們看一下優惠券範例。在指定的日期,客戶有 10 只債券(每張的面值為 100 美元,票面利率為 7%),通過簡單的乘法計算,我計算出客戶當天獲得 70 美元。

除了我在計算資產的賬面價值和市場價值之外,還計算資產的總和相對價格回報措施。我很好奇其中任何一個都可以通過使用來計算qunatlib。我看到它通常被廣泛使用並提供了很多功能,而這樣做的進一步動機是,如果有一個庫可以為我做這件事,我不想重新發明輪子。

如果有人能告訴我是否可以使用qunatlib並理想地提供測量樣本來計算任何這些措施,那就太好了。我會很感激任何幫助。

提前謝謝

這對你來說足夠了嗎?創建一個固定債券,它是乾淨的價格、骯髒的價格和 YTM。

const Date t0 = Date(8, July, 2015);    // July 8th, 2015
const Date t1 = Date(10, August, 2015); // August 10th, 2015
const Date t2 = t0 + Period(2, Months); // September 8th, 2015
const Date t3 = t0 + Period(3, Months); // October 8th, 2015

// Make sure we're evaluating at t0
Settings::instance().evaluationDate() = t0;

Schedule sch(t0,
            t3,
            Period(Monthly),
            UnitedStates(),
            Unadjusted,
            Unadjusted,
            DateGeneration::Backward,
            false);

const auto dc = Actual360();

FixedRateBond bond(0, 1000, sch, std::vector<Rate> { 0.07, 0.07, 0.07 }, dc);

// We have four payments (three coupons + one nominal)
std::cout << bond.cashflows().size() << std::endl;

// Coupon for the first payment date
std::cout << bond.cashflows()[0]->amount() << std::endl;

// Coupon for the second payment date
std::cout << bond.cashflows()[1]->amount() << std::endl;

// Coupon for the final payment date
std::cout << bond.cashflows()[2]->amount() << std::endl;

// Nominal at the end of the bond
std::cout << bond.cashflows()[3]->amount() << std::endl;

Handle<YieldTermStructure> zero(flatRate(t0, 0.05, Actual360()));

boost::shared_ptr<PricingEngine> engine = boost::shared_ptr<PricingEngine>(
                                           new DiscountingBondEngine(Handle<YieldTermStructure>(zero)));
bond.setPricingEngine(engine);

std::cout << bond.dirtyPrice() << std::endl;
std::cout << bond.cleanPrice() << std::endl;
std::cout << bond.yield(dc, Simple, Monthly) << std::endl;

引用自:https://quant.stackexchange.com/questions/29835