本文整理汇总了C++中Asset::getNbrRows方法的典型用法代码示例。如果您正苦于以下问题:C++ Asset::getNbrRows方法的具体用法?C++ Asset::getNbrRows怎么用?C++ Asset::getNbrRows使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Asset
的用法示例。
在下文中一共展示了Asset::getNbrRows方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: outOfMoneyOption
long outOfMoneyOption(vector<Asset*>& assets, double startMoney){ //based on what
Asset* calls;
Asset* puts;
Asset* underlyer;
double tCRatio = 0.01; //records the transaction cost ratio
if (assets.size() != 3){
cerr << " Wrong number of objects to test outOfMoneyOption" << endl;
exit (EXIT_FAILURE);
}
if (assets.at(0)->getIsEquity() == 1){ //first object is Equity
underlyer = assets.at(0);
if(assets.at(1)->getIsCall() == 1){ //second object is calls
calls = assets.at(1);
puts = assets.at(2);
}
else{
calls = assets.at(2);
puts = assets.at(1);
}
}
else if (assets.at(0)->getIsOption() == 1){
if(assets.at(0)->getIsCall() == 1){
calls = assets.at(0);
if(assets.at(1)->getIsEquity() == 1){
underlyer = assets.at(1);
puts = assets.at(2);
}
else{
underlyer = assets.at(2);
puts = assets.at(1);
}
}
else{
puts = assets.at(0);
if(assets.at(1)->getIsEquity() == 1){
underlyer = assets.at(1);
calls = assets.at(2);
}
else{
underlyer = assets.at(2);
calls = assets.at(1);
}
}
}
//we have the required types of data: perform back-test.
//Simple strat that just keeps cash adn trades 20% of portfolio in out of the money straddle.
//Equity information is contained is separate object.
struct stat fStatus; //where all the output will be in for further analysis
string outputFile = assets.at(0)->getWriteTo()+ "/" + "outOfMoneyOption.csv";
int thereOrNot = stat(outputFile.c_str(), &fStatus);
ofstream dataOut(outputFile.c_str(), ios_base::out | ios_base::app); //append to file only will create file if not there
if (thereOrNot == -1) //file not already created.
dataOut << "Date," << "Capital," << "Cash," << "calls," << "puts" << endl;
else{}//do nothing
double currCash = startMoney;
deque<double>results;
results.push_back(startMoney);
double nbrCalls = 0; //in practice, very hard to get a perfect straddle, so numbers will vary.
double nbrPuts = 0;
double callID = 0; //ID of currently held call contracts
double putID = 0; //ID of currently held put contracts
size_t equityIndex = 0;
long currDate = underlyer->getDate(equityIndex);
dataOut << currDate << "," << currCash
<< "," << currCash << "," << nbrCalls << "," << nbrPuts << endl;
size_t callsPos = 0;
size_t putsPos = 0;
double oufOfMoneyRatio = 0.2; // certainly need to data mine this value.
////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
//////////////////// find option closest to outOfMoneyRatio ////////////////////////
while (calls->getDate(callsPos) == currDate){
callsDailyVol += calls->getVolume(callsPos);
callsDailyOoi += calls->getOoi(callsPos);
++callsPos;
if(callsPos == calls->getNbrRows()) break;
}
//get puts daily volume and open interest for all options on given day.
while (puts->getDate(putsPos) == currDate){ //while I am on one date
putsDailyVol += puts->getVolume(putsPos);
putsDailyOoi += puts->getOoi(putsPos);
++putsPos;
if(putsPos == puts->getNbrRows()) break;
}
prevPcVolRatio = putsDailyVol/(callsDailyVol + putsDailyVol);
prevPcOoiRatio = putsDailyOoi/(callsDailyOoi + putsDailyOoi);
//////////////////////// get first day data on volumes /////////////////////////////
//.........这里部分代码省略.........
示例2: optionsVolumeComp1
//.........这里部分代码省略.........
else{}//do nothing
double currCash = startMoney;
deque<double>results;
results.push_back(startMoney);
double currLongPos = 0; //number of short positions
double nbrToLong = 0; //number of shares to buy first thing in morning.
double currShortPos = 0; //number of long positions (trying long only for now)
double nbrToShort = 0; //number of shares to short first thing in morning.
size_t equityIndex = 0;
long currDate = underlyer->getDate(equityIndex);
dataOut << currDate << "," << currCash + currLongPos* underlyer->getClose(equityIndex)
<< "," << currCash << "," << currLongPos << "," << 0 << endl;
size_t callsPos = 0;
size_t putsPos = 0;
double callsDailyVol = 0;
double callsDailyOoi = 0;
double putsDailyVol = 0;
double putsDailyOoi = 0;
double prevPcVolRatio = 0;
double currPcVolRatio = 0;
double prevPcOoiRatio = 0;
double currPcOoiRatio = 0;
////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
//////////////////////// get first day data on volumes /////////////////////////////
while (calls->getDate(callsPos) == currDate){
callsDailyVol += calls->getVolume(callsPos);
callsDailyOoi += calls->getOoi(callsPos);
++callsPos;
if(callsPos == calls->getNbrRows()) break;
}
//get puts daily volume and open interest for all options on given day.
while (puts->getDate(putsPos) == currDate){ //while I am on one date
putsDailyVol += puts->getVolume(putsPos);
putsDailyOoi += puts->getOoi(putsPos);
++putsPos;
if(putsPos == puts->getNbrRows()) break;
}
prevPcVolRatio = putsDailyVol/(callsDailyVol + putsDailyVol);
prevPcOoiRatio = putsDailyOoi/(callsDailyOoi + putsDailyOoi);
//////////////////////// get first day data on volumes /////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
while(++equityIndex < underlyer->getNbrRows()){ //increment before comparing, to start comparing from row 1.
currDate = underlyer->getDate(equityIndex);
if (nbrToLong - currLongPos > 0){ //I have to buy some stock
if(currCash - (1+tCRatio)*(nbrToLong-currLongPos)*underlyer->getOpen(equityIndex) >= 0){ // I've go enough cash to commit
currCash -= (1+tCRatio)*(nbrToLong-currLongPos)*underlyer->getOpen(equityIndex);
currLongPos = nbrToLong;
}
else{
nbrToLong = currLongPos + floor(currCash/((1+tCRatio)*underlyer->getOpen(equityIndex))); //buy as much as I can
currCash -= (1+tCRatio)*(nbrToLong-currLongPos)*underlyer->getOpen(equityIndex);
currLongPos = nbrToLong;