dsl - www - वित्त में डीएसएल
धर्मेंद्र सर (4)
जे फील्ड्स और ओबी फर्नांडीज ने इस विषय पर व्यापक रूप से लिखा और बात की है।
- जे फ़ील्ड परिचय डोमेन विशिष्ट भाषाओं पर
- व्यापार पर जे फील्ड की श्रृंखला प्राकृतिक भाषा
- ओबी फर्नांडीज एक डीएसएल में अनुबंध की शर्तें व्यक्त करते हैं
- जे फील्ड्स द्वारा जानकारीक्यू पर बहुत अच्छी प्रस्तुति
मार्टिन फोवेलर्स के लेखन में डीएसएल को लागू करने पर आपको सामान्य सामान भी मिलेगा (लेकिन वित्त के लिए विशिष्ट नहीं)
क्या यहां किसी ने कभी भी वित्त डोमेन में डीएसएल (डोमेन विशिष्ट भाषाएँ) के साथ काम किया है? मैं उस आवेदन में कुछ प्रकार के डीएसएल समर्थन पेश करने की योजना बना रहा हूं, जिस पर मैं काम कर रहा हूं और कुछ विचारों को साझा करना चाहता हूं।
मैं यह पहचानने के एक चरण में हूं कि कौन सी सबसे स्थिर डोमेन तत्व हैं और इस सुविधा का चयन करना जो डीएसएल के साथ बेहतर ढंग से लागू होगा। मैंने अभी तक इस पहली फीचर के लिए सिंटैक्स परिभाषित नहीं किया है।
मैं किसी सलाह की सराहना करता हूं
गुस्तावो
साइमन पेयटन जोन्स और जीन मार्क-एर्बी द्वारा डीएसएल के रूप में वित्तीय अनुबंधों को सुंदर ढंग से तैयार किया गया है। उनके डीएसएल, हास्केल में एम्बेडेड, पेपर में प्रस्तुत किया गया है कैसे एक वित्तीय अनुबंध लिखना है
डोमेन विशिष्ट भाषाओं (डीएसएल) वित्तीय साधनों का प्रतिनिधित्व करने के लिए सबसे अधिक उपयोग किया जाता है कैनोनिकल पेपर साइमन पेयटन जोन्स ' कम्पोजिंग कॉन्ट्रैक्ट्स: फाइनेंशियल इंजीनियरिंग में एक एडवेंचर है जो हास्केल में एक संयोजक लाइब्रेरी का उपयोग कर अनुबंध का प्रतिनिधित्व करता है। संयोजक दृष्टिकोण का सबसे प्रमुख उपयोग LexiFi की एमएलएफआई भाषा है , जो ओकैमल (उनके सीईओ, जीन-मार्क एबर, कम्पोजिंग कॉन्ट्रैक्ट्स पेपर पर सह-लेखक हैं) के शीर्ष पर बनाया गया है। एक बिंदु पर बार्कले ने दृष्टिकोण की प्रतिलिपि बनाई है और कुछ अतिरिक्त लाभों का वर्णन किया है, जैसे कि मानव-पठनीय गणितीय मूल्य निर्धारण फ़ार्मुलों ( वाणिज्यिक उपयोग: विदेशी व्यापारों पर कार्यात्मक रूप से जाना) को उत्पन्न करने की क्षमता।
वित्तीय अनुबंधों के लिए DSL आमतौर पर एक कार्यात्मक भाषा जैसे कि हास्केल, स्काला, या ओकैमल में एक एम्बेडिंग का उपयोग करके बनाया जाता है वित्तीय उद्योग में कार्यात्मक प्रोग्रामिंग भाषाओं की तेजता इस दृष्टिकोण को आकर्षक बनाना जारी रखेगी
वित्तीय साधनों का प्रतिनिधित्व करने के अलावा, डीएसएल का उपयोग वित्त में भी किया जाता है:
- मादक पदार्थों की भाषा के साथ वित्तीय संस्थाओं को मॉडलिंग करना ( वित्तीय उद्योग व्यवसायिक ओण्टोलॉजी )
- स्प्रैडशीट्स ( http://doi.acm.org/10.1145/1411204.1411236 ) का उपयोग करके आमतौर पर वर्णित कम्प्यूटेशंस को बदलना
- मॉडलिंग पेन्शन योजना ( केस स्टडी: वित्तीय सेवाएं )
- वित्तीय बाजार के आंकड़ों का विश्लेषण ( हेजहोग भाषा )
मैं http://www.dslfin.org/resources.html पर वित्तीय DSL के कागजात, वार्ता, और अन्य संसाधनों की पूरी सूची बनाए रखता हूं।
यदि आप वित्तीय प्रणालियों के लिए DSL के साथ काम कर रहे पेशेवरों और शोधकर्ताओं से मिलना चाहते हैं, तो 1 अक्टूबर को मियामी, फ्लोरिडा में मॉडल्स 2013 सम्मेलन में एक आगामी कार्यशाला है: http://www.dslfin.org/
मुझे लगता है कि साइमन पाय्टोन जोन्स और जीन मार्क एबर का काम "कम्पोजिंग कॉन्ट्रैक्ट्स: ए एडवेंचर इन फाइनेंशियल इंजीनियरिंग" और " लिसिकफी और एमएलएफआई " से प्राप्त सभी चीजें के कारण सबसे प्रभावशाली है।
शाहबाज चौधरी के स्कला को सबसे आकर्षक रूप में कार्यान्वित किया गया, जो कि एमएलएफआई आम तौर पर उपलब्ध नहीं है (और क्योंकि स्कैला फंक्शनल भाषा के रूप में अधिक सुविधाजनक है जो हास्केल)।
देखें "एडवेंचर्स इन फाइनेंशियल एंड सॉफ्टवेयर इंजीनियरिंग" और अन्य सामग्री जो वहां से संदर्भित हैं।
मैं यह कार्यान्वयन कैसे कर सकता हूं, इसके विचार के लिए एक स्निप की प्रतिलिपि करने की हिम्मत करेगा।
object Main extends App {
//Required for doing LocalDate comparisons...a scalaism
implicit val LocalDateOrdering = scala.math.Ordering.fromLessThan[java.time.LocalDate]{case (a,b) => (a compareTo b) < 0}
//custom contract
def usd(amount:Double) = Scale(Const(amount),One("USD"))
def buy(contract:Contract, amount:Double) = And(contract,Give(usd(amount)))
def sell(contract:Contract, amount:Double) = And(Give(contract),usd(amount))
def zcb(maturity:LocalDate, notional:Double, currency:String) = When(maturity, Scale(Const(notional),One(currency)))
def option(contract:Contract) = Or(contract,Zero())
def europeanCallOption(at:LocalDate, c1:Contract, strike:Double) = When(at, option(buy(c1,strike)))
def europeanPutOption(at:LocalDate, c1:Contract, strike:Double) = When(at, option(sell(c1,strike)))
def americanCallOption(at:LocalDate, c1:Contract, strike:Double) = Anytime(at, option(buy(c1,strike)))
def americanPutOption(at:LocalDate, c1:Contract, strike:Double) = Anytime(at, option(sell(c1,strike)))
//custom observable
def stock(symbol:String) = Scale(Lookup(symbol),One("USD"))
val msft = stock("MSFT")
//Tests
val exchangeRates = collection.mutable.Map(
"USD" -> LatticeImplementation.binomialPriceTree(365,1,0),
"GBP" -> LatticeImplementation.binomialPriceTree(365,1.55,.0467),
"EUR" -> LatticeImplementation.binomialPriceTree(365,1.21,.0515)
)
val lookup = collection.mutable.Map(
"MSFT" -> LatticeImplementation.binomialPriceTree(365,45.48,.220),
"ORCL" -> LatticeImplementation.binomialPriceTree(365,42.63,.1048),
"EBAY" -> LatticeImplementation.binomialPriceTree(365,53.01,.205)
)
val marketData = Environment(
LatticeImplementation.binomialPriceTree(365,.15,.05), //interest rate (use a universal rate for now)
exchangeRates, //exchange rates
lookup
)
//portfolio test
val portfolio = Array(
One("USD")
,stock("MSFT")
,buy(stock("MSFT"),45)
,option(buy(stock("MSFT"),45))
,americanCallOption(LocalDate.now().plusDays(5),stock("MSFT"),45)
)
for(contract <- portfolio){
println("===========")
val propt = LatticeImplementation.contractToPROpt(contract)
val rp = LatticeImplementation.binomialValuation(propt, marketData)
println("Contract: "+contract)
println("Random Process(for optimization): "+propt)
println("Present val: "+rp.startVal())
println("Random Process: \n"+rp)
}
}
एफ # में टॉमस पेट्रीसैक का उत्कृष्ट कार्य अन्वेषण करने के लिए काफी मूल्यवान है।
"डीएसएल" प्रतिमान से परे मेरा सुझाव है कि हमें कई अन्य शक्तिशाली मानदंडों से योगदान की ज़रूरत है ताकि "बड़ी डेटा" वास्तविकताओं को पूरा करते हुए वित्तीय साधनों और वित्तीय अनुबंधों के जटिल शब्दों का प्रतिनिधित्व करने का पूरा तरीका हो।
- संभाव्य प्रोग्रामिंग: फिगारो , स्टेन, आदि
- बिग डेटा एनालिटिक्स: आर, स्पार्क, स्पार्कआर
- स्केलेबल "डाटा फ़ैब्रिक" ("ऑफ हेप मेमोरी", कॉमोडिटी हार्डवेयर में, बल्कि भाषाओं में भी): "स्प्रेड फॉर लार्ज स्केल डेटा साइंस" (आर, स्कला / जावा और पायथन के साथ काम करता है) में डेटाफ्रेम
- शब्दावली वेब: " वित्तीय विषय मॉडल " और ontologies
यहां उल्लिखित कुछ भाषाओं की समीक्षा करने के योग्य: http://www.dslfin.org/resources.html