劉偉榮,劉安庚,蔡凌飛
(1.上海商學(xué)院工商管理學(xué)院;2.上海商學(xué)院教務(wù)處;3.上海商學(xué)院商務(wù)信息學(xué)院,上海 200235)
近年來,Python在金融數(shù)據(jù)分析領(lǐng)域的應(yīng)用越來越普及,如何從數(shù)據(jù)里面發(fā)現(xiàn)并挖掘有價(jià)值的信息成為一個(gè)熱門的研究課題[1]。在應(yīng)用型人才培養(yǎng)理念下,以Python為分析工具,金融數(shù)據(jù)分析為載體,用實(shí)驗(yàn)的形式讓學(xué)生掌握金融數(shù)據(jù)分析的方法,既能滿足學(xué)生的學(xué)習(xí)需求,鞏固相關(guān)金融理論知識(shí),又能形成一定的金融實(shí)踐能力與探索能力。
Python作為一種簡(jiǎn)單易學(xué),功能強(qiáng)大的編程語言,在金融數(shù)據(jù)分析領(lǐng)域越來越受到追捧。Python具有許多優(yōu)秀特性,一是豐富的擴(kuò)展庫,Python擁有如NumPy、Pandas、Scikit-learn等豐富的擴(kuò)展庫,這些庫可以方便地進(jìn)行數(shù)據(jù)分析和處理。例如,使用NumPy可以高效地進(jìn)行數(shù)值計(jì)算;使用Pandas可以輕松地處理數(shù)據(jù);使用Scikit-learn可以進(jìn)行機(jī)器學(xué)習(xí)。二是強(qiáng)大的可視化能力,Python擁有良好的可視化能力,可以通過Matplotlib、Seaborn等庫生成各種圖表,使得數(shù)據(jù)分析結(jié)果更加直觀和易懂。三是可擴(kuò)展性,Python可以與其他編程語言相結(jié)合,如R、Java等,擴(kuò)展其功能。例如,可以使用RPy2將Python和R結(jié)合使用,使用JPype將Python和Java結(jié)合使用。四是開源性,Python的開源性質(zhì)使其得到了廣泛的社區(qū)支持和貢獻(xiàn),為用戶提供了豐富的資源和工具。用戶可以自由地獲取、使用、修改和分享Python代碼,促進(jìn)了Python社區(qū)的發(fā)展和進(jìn)步。五是基于Python的金融數(shù)據(jù)分析社區(qū)愈發(fā)完善,例如,優(yōu)礦、聚寬、Tushare等開源平臺(tái)提供了豐富的數(shù)據(jù)資源與學(xué)習(xí)資源。正是這些優(yōu)良特性,使Python語言在金融數(shù)據(jù)分析領(lǐng)域的作用越來越重要,使金融數(shù)據(jù)分析與研究發(fā)生了巨大的變革[1]。
“Python金融數(shù)據(jù)分析實(shí)驗(yàn)”課程是一門具有一定挑戰(zhàn)性的課程,它能夠有效地培養(yǎng)學(xué)生的編程能力,提高數(shù)據(jù)處理和數(shù)據(jù)分析能力。在今天這個(gè)數(shù)據(jù)時(shí)代,數(shù)據(jù)分析技能尤其受到廣泛的關(guān)注,而Python作為一種強(qiáng)大的編程語言,已經(jīng)成為了數(shù)據(jù)分析領(lǐng)域的最佳工具之一,學(xué)習(xí)本課程將對(duì)學(xué)生未來的職業(yè)發(fā)展產(chǎn)生很大的幫助。此外,課程以金融數(shù)據(jù)分析應(yīng)用場(chǎng)景為目標(biāo),能夠讓學(xué)生了解科技在金融行業(yè)的應(yīng)用,提高其對(duì)于當(dāng)前宏觀經(jīng)濟(jì)形勢(shì)的研判能力。掌握Python在金融等數(shù)據(jù)分析領(lǐng)域的實(shí)戰(zhàn)技能,能夠?yàn)樯鐣?huì)輸送具有數(shù)據(jù)素養(yǎng)和分析能力的金融復(fù)合型人才[2]。因此,這門課程對(duì)金融領(lǐng)域的專業(yè)人才培養(yǎng)非常重要。
雖然Python作為工具能有效實(shí)現(xiàn)金融數(shù)據(jù)的處理和分析,有較強(qiáng)的實(shí)用性,然而作為一門課程,在教學(xué)實(shí)施過程中,仍然存在諸多問題。對(duì)學(xué)生來說,Python這門課程需要的基礎(chǔ)知識(shí)比較廣泛,如果學(xué)生基礎(chǔ)不夠扎實(shí),他們可能會(huì)感到難以理解和應(yīng)用這門課程的知識(shí)。此外,Python代碼的抽象性也可能會(huì)讓學(xué)生感到困惑,特別是那些沒有編程經(jīng)驗(yàn)的學(xué)生,他們可能會(huì)覺得案例代碼的邏輯難以理解,從而導(dǎo)致他們?cè)趯W(xué)習(xí)過程中出現(xiàn)困難和挫折。為了解決課程在教學(xué)實(shí)施中存在的問題,本文通過在教學(xué)中的嘗試與探索,提出針對(duì)性的建議和對(duì)策,對(duì)有效改進(jìn)此類課程的建設(shè)與開展提供思路與參考。
互聯(lián)網(wǎng)技術(shù)的運(yùn)用使得大規(guī)模數(shù)據(jù)的收集,以及數(shù)據(jù)的精準(zhǔn)分析提供了可能,容量龐大的金融數(shù)據(jù)庫對(duì)數(shù)據(jù)分析工具的效率和準(zhǔn)確性提出了較高要求[3]。Python作為數(shù)據(jù)分析工具,在金融數(shù)據(jù)分析中起到重要作用,能對(duì)大批量金融數(shù)據(jù)有效分析,幫助投資者更好地理解市場(chǎng)趨勢(shì)和投資機(jī)會(huì)。同時(shí)還能夠提高分析的準(zhǔn)確性和速度,使得金融決策更加明智和精確,并且能快速呈現(xiàn)可視化結(jié)果,是金融數(shù)據(jù)分析的一大利器。在教學(xué)中,Python的使用也能使學(xué)生更好地理解相關(guān)理論知識(shí),也能使學(xué)生進(jìn)一步明確理論在現(xiàn)實(shí)中的作用。但作為一門Python與金融數(shù)據(jù)分析相結(jié)合的課程,教學(xué)內(nèi)容存在交叉性,課程內(nèi)容知識(shí)量較大,加上學(xué)生基礎(chǔ)各不相同,在教學(xué)過程中發(fā)現(xiàn)諸多問題亟待解決。
由于“Python金融數(shù)據(jù)分析實(shí)驗(yàn)”課程內(nèi)容涉及學(xué)科交叉,面向?qū)I(yè)較廣,而且未設(shè)置前置課程,導(dǎo)致面對(duì)學(xué)生基礎(chǔ)差異大,難以將課程進(jìn)度統(tǒng)一。這是一個(gè)普遍存在的問題,尤其是在涉及編程的課程中。對(duì)于沒有編程基礎(chǔ)的學(xué)生,課程會(huì)更具挑戰(zhàn)性,需要用更多時(shí)間來掌握基礎(chǔ)知識(shí)。因此,在編程基礎(chǔ)的教學(xué)中,需要盡可能細(xì)致地講解,并讓學(xué)生嘗試編寫程序。這既可以通過一步步程序拆解與實(shí)現(xiàn)來幫助學(xué)生克服畏難情緒,也可以讓無編程基礎(chǔ)的學(xué)生有更多的機(jī)會(huì)練習(xí),以便在課程中跟上進(jìn)度。另一方面,對(duì)于那些已經(jīng)有一定編程基礎(chǔ)的學(xué)生來說,基礎(chǔ)知識(shí)的教學(xué)可能會(huì)相對(duì)簡(jiǎn)單。在課堂教學(xué)中,這部分學(xué)生會(huì)認(rèn)為課程內(nèi)容缺乏挑戰(zhàn)性。這也是一個(gè)需要重視的問題,如果課程內(nèi)容過于簡(jiǎn)單,會(huì)導(dǎo)致學(xué)生失去興趣和動(dòng)力,影響其學(xué)習(xí)效果。
針對(duì)上述問題,對(duì)編程基礎(chǔ)不同的情況,需要采取多種措施來解決。只有兼顧兩類學(xué)生的學(xué)習(xí)需求,才能提高課程教學(xué)質(zhì)量,這對(duì)提升課程教學(xué)質(zhì)量具有重要意義。
Python語言基礎(chǔ)知識(shí)是整個(gè)課程的基石,掌握好基礎(chǔ)知識(shí)是后期能快速上手Numpy、Pandas等模塊的先決條件。本課程的編程基礎(chǔ)主要涉及數(shù)據(jù)類型、常見數(shù)據(jù)容器、循環(huán)控制等內(nèi)容,在教學(xué)中發(fā)現(xiàn)該部分內(nèi)容講解以“What”為主,很難將金融案例結(jié)合到Python編程基礎(chǔ)教學(xué)中,導(dǎo)致部分學(xué)生會(huì)誤認(rèn)為該課程是一門以編程為主的課程,在未接觸到金融編程案例時(shí)便失去興趣。針對(duì)上述問題,如何通過課程結(jié)構(gòu)、課程內(nèi)容調(diào)整,改變枯燥的編程基礎(chǔ)內(nèi)容,將對(duì)課程的順利開展起到重要作用。
Python對(duì)金融數(shù)據(jù)的處理能力強(qiáng)大,它可以處理大量的金融數(shù)據(jù),包括交易數(shù)據(jù)、股票數(shù)據(jù)、匯率數(shù)據(jù)以及其他市場(chǎng)數(shù)據(jù)。這種功能對(duì)于金融機(jī)構(gòu)和投資者來說是非常有用的,因?yàn)樗梢詭椭麄冏鞒龈玫臎Q策。由于諸多數(shù)據(jù)分析與處理需要調(diào)用第三方庫,在教學(xué)演示過程中,雖能體現(xiàn)Python強(qiáng)大數(shù)據(jù)處理能力,但金融數(shù)據(jù)處理過程顯“黑箱”化,導(dǎo)致學(xué)生不理解金融數(shù)據(jù)處理的邏輯,而無法在實(shí)踐中靈活運(yùn)用。例如,每日收益率=(當(dāng)日收盤價(jià)/前日收盤價(jià))-1(即:t=pt/pt-1-1), Python中實(shí)現(xiàn)只需用.pct_change()函數(shù)就能計(jì)算結(jié)果,如圖1所示。
圖1 用.pct_change()函數(shù)計(jì)算每日收益率
“黑箱化”的特點(diǎn),在教學(xué)中不利于展示與詳細(xì)講解,同時(shí)“黑箱化”在教學(xué)中不利于學(xué)生理解金融知識(shí),從而導(dǎo)致學(xué)生知其然不知所以然。解決這一問題,能使學(xué)生在教學(xué)中理清金融數(shù)據(jù)處理的邏輯,幫助學(xué)生進(jìn)一步鞏固金融知識(shí)。
CNN具有2種特性:局部連接和參數(shù)共享。CNN中相鄰2層的連接方式為局部連接,當(dāng)前層每個(gè)神經(jīng)元的值是對(duì)上一層進(jìn)行卷積操作得到的,且每次卷積的參數(shù)相同。如圖1所示。相同顏色的線表示相同的參數(shù),li+1層神經(jīng)元的值依賴于上一層神經(jīng)元的值, li+1 層每個(gè)神經(jīng)元共享參數(shù)。
針對(duì)上述在教學(xué)中遇到的問題,通過不斷調(diào)整與試錯(cuò)從中摸索出一些能有效解決上述問題的方法,現(xiàn)總結(jié)如下:
針對(duì)學(xué)生基礎(chǔ)差異較大的問題,通過線上線下相結(jié)合的方式可在一定程度上改善。Python編程基礎(chǔ)知識(shí)的講解較為枯燥且知識(shí)點(diǎn)單一,在線上線下相結(jié)合的形式下,可以通過不同措施來調(diào)動(dòng)基礎(chǔ)不同學(xué)生的注意力,增加學(xué)生的學(xué)習(xí)主動(dòng)性與積極性。首先,為學(xué)生提供線上視頻課程,詳細(xì)講解基礎(chǔ)知識(shí),而在課堂教學(xué)中,增加趣味性較強(qiáng)的案例分析和課堂討論?;A(chǔ)不夠扎實(shí)的學(xué)生可通過線上資源進(jìn)一步提高和鞏固,通過線上視頻回顧相關(guān)內(nèi)容,幫助基礎(chǔ)薄弱的學(xué)生打下堅(jiān)實(shí)基礎(chǔ)。這些措施可以幫助學(xué)生更好地消化和鞏固課程知識(shí),為金融數(shù)據(jù)分析和處理打下堅(jiān)實(shí)基礎(chǔ)。其次,可以設(shè)置大量線上練習(xí),供學(xué)生在課后選擇性學(xué)習(xí)。此外增加一些線上小測(cè)驗(yàn),檢測(cè)學(xué)生的學(xué)習(xí)成果,可進(jìn)一步提升教學(xué)效果。通過這些測(cè)驗(yàn),我們可以及時(shí)調(diào)整教學(xué)內(nèi)容與進(jìn)度,保證學(xué)生能夠跟上課程進(jìn)度,增加學(xué)習(xí)主觀能動(dòng)性。通過線上線下相結(jié)合的方式,可以使學(xué)生更好地掌握編程基礎(chǔ)知識(shí),提高他們的學(xué)習(xí)質(zhì)量和學(xué)習(xí)效率。
針對(duì)課程基礎(chǔ)知識(shí)部分相對(duì)枯燥的問題,通過線上線下相結(jié)合的方式可在一定程度上得到解決,但還需要調(diào)整課程結(jié)構(gòu),使教學(xué)效果更佳。通過壓縮課堂基礎(chǔ)知識(shí)課時(shí),并融入更多金融知識(shí),可進(jìn)一步提升教學(xué)效果。一方面,編程基礎(chǔ)知識(shí)課時(shí)壓縮并不意味著知識(shí)量減少,學(xué)生需根據(jù)自身基礎(chǔ),通過線上課程補(bǔ)充。另一方面,部分基礎(chǔ)知識(shí)可融入后期的實(shí)驗(yàn)案例中進(jìn)行講解。這樣既可以快速完成較為枯燥的基礎(chǔ)知識(shí)講解,快速進(jìn)入課程主題,也能增加金融數(shù)據(jù)分析內(nèi)容的教學(xué)。如在金融知識(shí)“最大回撤”概念的講解中,以圖形化的方式先使學(xué)生理解“最大回撤”的概念,介紹最大回撤的意義,并通過代碼講解實(shí)現(xiàn)“最大回撤”的計(jì)算與作圖,使學(xué)生學(xué)習(xí)金融知識(shí)的同時(shí),了解其原理,并能使用Python實(shí)現(xiàn),如圖2所示。這樣既能提升授課效率,同時(shí)也能使課程內(nèi)容進(jìn)一步豐富,提高學(xué)生的學(xué)習(xí)興趣。
圖2 最大回撤案例講解
Excel在金融數(shù)據(jù)處理和分析中較常見,豐富的函數(shù)庫、高級(jí)分析工具、VBA程序等功能,足以完成大部分金融計(jì)算,Excel在金融數(shù)據(jù)分析中特點(diǎn)鮮明,可以將操作步驟清晰展示出來,理清各組數(shù)據(jù)之間的邏輯關(guān)系,并能對(duì)公式進(jìn)行解釋說明,如圖3所示,在教學(xué)中學(xué)生更容易接受與理解。但同時(shí),Excel在金融數(shù)據(jù)分析中也存在較大缺點(diǎn),如難以處理大批量數(shù)據(jù),作圖不方便等。金融數(shù)據(jù)的分析與建模往往需要用到大批量數(shù)據(jù),Excel在實(shí)際處理上能力往往略顯不足。而使用Python教學(xué),則常常需要面對(duì)Python數(shù)據(jù)處理時(shí)的“黑箱問題”,在教學(xué)中不易將過程描述清楚,而對(duì)課程產(chǎn)生畏難情緒。
圖3 用Excel 演示最大回撤
討論與分享是提升Python編程能力的重要手段,為提高學(xué)生的學(xué)習(xí)興趣和參與度,可組織討論與分享。首先,向?qū)W生提出金融數(shù)據(jù)分析的案例;其次,分組討論該問題的分析思路;再次,小組嘗試用Excel和Python進(jìn)行計(jì)算;最后,分享分析過程與結(jié)果。
對(duì)編程技能和數(shù)據(jù)分析相關(guān)知識(shí)的學(xué)習(xí),討論與交流是重要環(huán)節(jié)。對(duì)同一金融數(shù)據(jù)分析問題,不同學(xué)生有不同的編程思路,通過討論,可促進(jìn)學(xué)生之間相互交流,并從中獲得新的思路和洞見。通過組織小組討論或者課堂分享,學(xué)生可以相互交流和學(xué)習(xí),特別是對(duì)存在的問題能有更清晰的認(rèn)識(shí),通過共同探討難點(diǎn)和疑問。一方面可以加深對(duì)知識(shí)點(diǎn)的梳理和理解;另一方面可以增強(qiáng)學(xué)生的合作意識(shí)和自主學(xué)習(xí)能力。同時(shí),老師也能在交流過程中進(jìn)一步了解學(xué)生對(duì)知識(shí)點(diǎn)的掌握情況,以便對(duì)教學(xué)內(nèi)容作出調(diào)整。
為了及時(shí)了解學(xué)生對(duì)課程的反饋,可采用投票或問卷的方式,定期開展學(xué)生對(duì)課程掌握情況、授課方式接受程度進(jìn)行調(diào)查。學(xué)生的反饋在一定程度上體現(xiàn)了學(xué)生對(duì)課程的整體滿意度、課程內(nèi)容的難易程度、教學(xué)方法的實(shí)用性等方面的情況,同時(shí)能了解每一位學(xué)生對(duì)知識(shí)點(diǎn)的接受程度。
通過投票或問卷的分析,一是可以了解學(xué)生對(duì)課程的建議和意見,根據(jù)反饋及時(shí)調(diào)整教學(xué)內(nèi)容和方法,提高課程的教學(xué)質(zhì)量。二是可針對(duì)部分認(rèn)為課程難度大的學(xué)生,結(jié)合線上資源,提出定制化的學(xué)習(xí)方案,保障學(xué)習(xí)效果與教學(xué)進(jìn)度。
Python編程語言因其優(yōu)良特性,在金融數(shù)據(jù)分析領(lǐng)域的應(yīng)用越來越普及,《Python金融數(shù)據(jù)分析實(shí)驗(yàn)》課程具有較強(qiáng)的實(shí)用性,因課程存在一定學(xué)科交叉性,且學(xué)生基礎(chǔ)存在較大差異,在教學(xué)實(shí)施中仍存在諸多問題。為提高課程質(zhì)量,提升課程教學(xué)水平,本文針對(duì)《Python金融數(shù)據(jù)分析實(shí)驗(yàn)》課程在教學(xué)中存在的問題,從教學(xué)內(nèi)容、教學(xué)方法、學(xué)生反饋等方面提出了一些對(duì)策和建議。通過教學(xué)實(shí)踐的不斷探索與嘗試,這些對(duì)策和建議可以有效提高課程的教學(xué)質(zhì)量,幫助不同基礎(chǔ)的學(xué)生更好地掌握金融數(shù)據(jù)分析的方法,提高其在金融領(lǐng)域的競(jìng)爭(zhēng)力。
隨著ChatGPT等自然語言處理工具的普及,像《Python金融數(shù)據(jù)分析實(shí)驗(yàn)》這類涉及編程的課程教學(xué)理念、教學(xué)方式、學(xué)習(xí)方式都將發(fā)生重大改變,在未來的教學(xué)中,應(yīng)結(jié)合先進(jìn)教學(xué)理念與教學(xué)工具,不斷在教學(xué)實(shí)踐中總結(jié)并嘗試改進(jìn),為推進(jìn)此類課程的建設(shè)做出貢獻(xiàn)。